Skip to content

add Ether check in macsec_dp_poll#6828

Merged
kevinskwang merged 1 commit intosonic-net:masterfrom
yanjundeng:master
Dec 6, 2022
Merged

add Ether check in macsec_dp_poll#6828
kevinskwang merged 1 commit intosonic-net:masterfrom
yanjundeng:master

Conversation

@yanjundeng
Copy link
Contributor

@yanjundeng yanjundeng commented Nov 15, 2022

Description of PR

#6459

When run "test_acl.py" based on the master branch of sonic-mgmt in Cisco Lab, we hit the following error:

19:01:00 init.pytest_runtest_call L0040 ERROR | Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/_pytest/python.py", line 1464, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/usr/local/lib/python2.7/dist-packages/pluggy/hooks.py", line 286, in call
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 87, in
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 208, in _multicall
return outcome.get_result()
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 81, in get_result
_reraise(*ex) # noqa
File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/usr/local/lib/python2.7/dist-packages/_pytest/python.py", line 174, in pytest_pyfunc_call
testfunction(**testargs)
File "/data/tests/acl/test_acl.py", line 710, in test_ingress_unmatched_blocked
self._verify_acl_traffic(setup, direction, ptfadapter, pkt, True, ip_version)
File "/data/tests/acl/test_acl.py", line 908, in _verify_acl_traffic
testutils.verify_no_packet_any(ptfadapter, exp_pkt, ports=self.get_dst_ports(setup, direction))
File "/usr/lib/python2.7/dist-packages/ptf/testutils.py", line 2476, in verify_no_packet_any
verify_no_packet(test, pkt, (device, port))
File "/usr/lib/python2.7/dist-packages/ptf/testutils.py", line 2418, in verify_no_packet
test, device_number=device, port_number=port, exp_pkt=pkt, timeout=timeout
File "/data/tests/common/plugins/ptfadapter/init.py", line 48, in _dp_poll
return origin_dp_poll(test, device_number=device_number, port_number=port_number, timeout=timeout, exp_pkt=exp_pkt)
File "/data/tests/macsec/macsec_helper.py", line 378, in macsec_dp_poll
if pkt[scapy.Ether].type != 0x88e5:
File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 1344, in getitem
raise IndexError("Layer [%s] not found" % name)
IndexError: Layer [Ether] not found

Steps to reproduce the issue:

based on master branch of sonic-mgmt, run "test_acl.py" in local T1 testbed.
Describe the results you received:
The error is due to the "macsec_dp_poll" doesn't skip the non-ether l2 packet.
In our test network, it has STP packet as follows:
19:01:00 macsec_helper.macsec_dp_poll L0374 WARNING| George pkt:###[ 802.3 ]###
dst = 01:00:0c:cc:cc:cd
src = 64:3a:ea:e5:33:d0
len = 50
###[ LLC ]###
dsap = 0xaa
ssap = 0xaa
ctrl = 3
###[ SNAP ]###
OUI = 00:00:0c
code = 0x10b
###[ Spanning Tree Protocol ]###
proto = 0
version = 2
bpdutype = 2
bpduflags = 60
rootid = 34768
rootmac = 64:3a:ea:e5:33:43
pathcost = 0
bridgeid = 34768
bridgemac = 64:3a:ea:e5:33:43
portid = 32909
age = 0.0
maxage = 20.0
hellotime = 2.0
fwddelay = 15.0
###[ Raw ]###
load = '\x00\x00\x00\x00\x02\x07\xd0'

Solution

The poll function should skip non-ether pkt.
We need add a check func before handle it.

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Nov 15, 2022

CLA Signed

The committers listed above are authorized under a signed CLA.

@azure-pipelines
Copy link

The pre-commit check detected issues in the files touched by this pull request.
The detected issues may be old or new. For new issues, please try to fix them.

For old issues, it is not mandatory to fix them because they were not caused by this change. It is unfair to blame
author of this pull request. But if you can take extra effort to fix the old issues as well, that would be great!

Detailed pre-commit check results:
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
check yaml...........................................(no files to check)Skipped
check for added large files..............................................Passed
check python ast.........................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

tests/macsec/macsec_helper.py:97:1: E302 expected 2 blank lines, found 1
tests/macsec/macsec_helper.py:106:1: E302 expected 2 blank lines, found 1
tests/macsec/macsec_helper.py:106:53: E251 unexpected spaces around keyword / parameter equals
tests/macsec/macsec_helper.py:106:55: E251 unexpected spaces around keyword / parameter equals
tests/macsec/macsec_helper.py:182:25: E128 continuation line under-indented for visual indent
tests/macsec/macsec_helper.py:193:121: E501 line too long (121 > 120 characters)
tests/macsec/macsec_helper.py:201:121: E501 line too long (121 > 120 characters)
tests/macsec/macsec_helper.py:212:121: E501 line too long (272 > 120 characters)
tests/macsec/macsec_helper.py:379:49: E251 unexpected spaces around keyword / parameter equals
tests/macsec/macsec_helper.py:379:51: E251 unexpected spaces around keyword / parameter equals
tests/macsec/macsec_helper.py:380:20: E272 multiple spaces before keyword
...
[truncated extra lines, please run pre-commit locally to view full check results]

To run the pre-commit checks locally, you can follow below steps:

  1. Ensure that default python is python3. In sonic-mgmt docker container, default python is python2. You can run
    the check by activating the python3 virtual environment in sonic-mgmt docker container or outside of sonic-mgmt
    docker container.
  2. Ensure that the pre-commit package is installed:
sudo pip install pre-commit
  1. Go to repository root folder
  2. Install the pre-commit hooks:
pre-commit install
  1. Use pre-commit to check staged file:
pre-commit
  1. Alternatively, you can check committed files using:
pre-commit run --from-ref <commit_id> --to-ref <commit_id>

@kevinskwang kevinskwang merged commit 6d22677 into sonic-net:master Dec 6, 2022
wangxin pushed a commit that referenced this pull request Dec 7, 2022
bingwang-ms pushed a commit to bingwang-ms/sonic-mgmt that referenced this pull request Jul 27, 2023
…ic-mgmt into internal-202205

Fix merge conflicts.
- [pre-commit] Fix style issues in test scripts under `tests/acl` folder (sonic-net#6679)
- Moving check for reboot cause after interface status check (sonic-net#6721)
- Adding watchdog timeout values for Cisco 8808 Supervisor and Different LCs (sonic-net#6776)
- add Ether check in macsec_dp_poll (sonic-net#6828)
- Disable PFC watchdog in test_cpu_memory_usage_counterpoll (sonic-net#6851)
- Testcase to verify that lossless traffic is not dropped during congesion. (sonic-net#6853)
- Ignore Broadcom sai sai unbind ERR log for now (sonic-net#6539)
- [chassis][multi-asic] update the loganalyser regex for multi asic (sonic-net#6885)
- [mx] Fix test_acl failed on mx topo (sonic-net#6971) (sonic-net#6983)
- [202205][mx] Add support for mx in test_null_route_helper (sonic-net#6967) (sonic-net#6982)
- [m0][everflow] Add m0 support for everflow and refactor everflow setup_info (sonic-net#6900)
- [ACL] Add acl stress test (sonic-net#6903)
- Enhance test_tor_ecn (sonic-net#6906)
- Fix erros - Added unique IPV6 address for the missed ACL rules PR sonic-net#6390 (sonic-net#6909)
- enabled bfd tests (sonic-net#6919)
- Skip bgp speaker test on backend topo (sonic-net#6922)
- [advanced-reboot] Handle logs in tmpfs: backup two log files before reboot (sonic-net#6923)
- Fix missing definition (sonic-net#6930)
- [Mellanox] Add minimal table definition for SN2201 (sonic-net#6943)
- Update qos test param for dualtor topology (sonic-net#6948)
- fix setup for single asic lc (sonic-net#6951)
- Fix QoS sai test for running with python3 (sonic-net#6961)
- Don't fail if logrotate cron job file isn't present (sonic-net#6964)
- Disable post sanity check for vxlan test (sonic-net#6980)
- Merge branch 'azure-202205' into dev/yaqiangzhu/202205_merge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants