Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[tests/copp]: Fix copp tests #12836

Merged
merged 5 commits into from
Jul 4, 2024

Conversation

prabhataravind
Copy link
Contributor

@prabhataravind prabhataravind commented May 13, 2024

Description of PR

This PR does the following:

  • Enhance copp test cases so that they pass consistently on Broadcom platforms.
    • For Broadcom platforms, when BGP and IP2ME traps are removed, BGP packets hit the default trap group, so a new
      DefaultPolicy is introduced in check_constraints specifically for Broadcom ASIC types. The test logic for non-Broadcom
      platforms is left unchanged. A necessary side change of this is that the CIR for default trap needs to be changed to a
      value other than 600 only for the test. This is reverted back at the end of the test.
  • Remove xfail for copp tests on broadcom platforms
  • Skip updating default sonic config for queue4_group3 in scripts/update_copp_config.py as the new rate-limit for this copp
    group is lower than the default value of 600 PPS used by copp tests. This value is 300PPS for Mgmt devices and 100 PPS for
    other devices. The constraint checks for protocols that map to queue4_group3 are also changed accordingly in
    ansible/roles/test/files/ptftests/py3/copp_tests.py

Summary:
Fixes # 27262099

Type of change

  • Bug fix
  • Testbed and Framework(new/improvement)
  • Test case(new/improvement)

Back port request

  • 201911
  • 202012
  • 202205
  • 202305
  • 202311

Approach

What is the motivation for this PR?

When BGP and IP2ME traps are removed, BGP packets hit the default trap group on broadcom platforms and trap to CPU queue0. This change modifies copp test to verify this behavior.

How did you do it?

By changing the rate limit used in the test for default trap group, it is easy to verify that packets are hitting that trap group. If all trap groups use the same rate limit of 600 pps as is done currently, it is rather difficult to identify which trap group got hit.

How did you verify/test it?

By running tests locally and using azure pipeline

Any platform specific information?

Supported testbed topology if it's a new test case?

Documentation

@mssonicbld
Copy link
Collaborator

The pre-commit check detected issues in the files touched by this pull request.
The pre-commit check is a mandatory check, please fix detected issues.

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

ansible/roles/test/files/ptftests/py3/copp_tests.py:533:1: E303 too many blank lines (3)
ansible/roles/test/files/ptftests/py3/copp_tests.py:534:1: E302 expected 2 blank lines, found 3

flake8...............................................(no files to check)Skipped
check conditional mark sort..............................................Passed

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>

@prabhataravind prabhataravind changed the title [tests/copp]: Fix copp tests to address failures on broadcom platforms [tests/copp]: Fix copp tests Jun 24, 2024
@mssonicbld
Copy link
Collaborator

The pre-commit check detected issues in the files touched by this pull request.
The pre-commit check is a mandatory check, please fix detected issues.

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

ansible/roles/test/files/ptftests/py3/copp_tests.py:561:1: E303 too many blank lines (3)
ansible/roles/test/files/ptftests/py3/copp_tests.py:562:1: E302 expected 2 blank lines, found 3

flake8...............................................(no files to check)Skipped
check conditional mark sort..............................................Passed

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>

@mssonicbld
Copy link
Collaborator

The pre-commit check detected issues in the files touched by this pull request.
The pre-commit check is a mandatory check, please fix detected issues.

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

ansible/roles/test/files/ptftests/py3/copp_tests.py:561:1: E303 too many blank lines (3)
ansible/roles/test/files/ptftests/py3/copp_tests.py:562:1: E302 expected 2 blank lines, found 3

flake8...............................................(no files to check)Skipped
check conditional mark sort..............................................Passed

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>

Signed-off-by: Prabhat Aravind <paravind@microsoft.com>
@prabhataravind prabhataravind marked this pull request as ready for review June 26, 2024 03:52
@StormLiangMS StormLiangMS requested a review from ZhaohuiS June 27, 2024 08:42
prsunny
prsunny previously approved these changes Jun 28, 2024
Copy link
Contributor

@prsunny prsunny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall lgtm, @StormLiangMS , @ZhaohuiS , can one of you review and signoff?

@mssonicbld
Copy link
Collaborator

The pre-commit check detected issues in the files touched by this pull request.
The pre-commit check is a mandatory check, please fix detected issues.

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

ansible/roles/test/files/ptftests/py3/copp_tests.py:267:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:268:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:278:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:540:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:541:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:551:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:561:121: E501 line too long (129 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:562:121: E501 line too long (131 > 120 characters)

flake8...............................................(no files to check)Skipped
check conditional mark sort..............................................Passed

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>

@ZhaohuiS ZhaohuiS closed this Jul 2, 2024
@ZhaohuiS ZhaohuiS reopened this Jul 2, 2024
@ZhaohuiS
Copy link
Contributor

ZhaohuiS commented Jul 2, 2024

@prabhataravind could you please fix the pre-commit failures?
flake8...................................................................Failed

  • hook id: flake8
  • exit code: 1

ansible/roles/test/files/ptftests/py3/copp_tests.py:267:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:268:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:278:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:540:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:541:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:551:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:561:121: E501 line too long (129 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:562:121: E501 line too long (131 > 120 characters)

@mssonicbld
Copy link
Collaborator

The pre-commit check detected issues in the files touched by this pull request.
The pre-commit check is a mandatory check, please fix detected issues.

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

ansible/roles/test/files/ptftests/py3/copp_tests.py:267:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:268:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:278:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:540:121: E501 line too long (128 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:541:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:551:21: E127 continuation line over-indented for visual indent
ansible/roles/test/files/ptftests/py3/copp_tests.py:561:121: E501 line too long (129 > 120 characters)
ansible/roles/test/files/ptftests/py3/copp_tests.py:562:121: E501 line too long (131 > 120 characters)

flake8...............................................(no files to check)Skipped
check conditional mark sort..............................................Passed

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>

Signed-off-by: Prabhat Aravind <paravind@microsoft.com>
Copy link
Contributor

@ZhaohuiS ZhaohuiS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@prabhataravind
Copy link
Contributor Author

/azpw run

@prabhataravind
Copy link
Contributor Author

@StormLiangMS, could you please help cherry-pick to 202305 as well when ready?

@prabhataravind
Copy link
Contributor Author

@StormLiangMS, could you please help cherry-pick to 202305 as well when ready?

@ZhaohuiS for viz

wangxin pushed a commit that referenced this pull request Aug 14, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - #12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
mssonicbld pushed a commit to mssonicbld/sonic-mgmt that referenced this pull request Aug 14, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - sonic-net#12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
mssonicbld pushed a commit that referenced this pull request Aug 14, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - #12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
mssonicbld pushed a commit to mssonicbld/sonic-mgmt that referenced this pull request Aug 15, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - sonic-net#12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
mssonicbld pushed a commit that referenced this pull request Aug 15, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - #12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
mssonicbld pushed a commit to mssonicbld/sonic-mgmt that referenced this pull request Aug 28, 2024
This PR does the following:

Enhance copp test cases so that they pass consistently on Broadcom platforms.
For Broadcom platforms, when BGP and IP2ME traps are removed, BGP packets hit the default trap group, so a new
DefaultPolicy is introduced in check_constraints specifically for Broadcom ASIC types. The test logic for non-Broadcom
platforms is left unchanged. A necessary side change of this is that the CIR for default trap needs to be changed to a
value other than 600 only for the test. This is reverted back at the end of the test.
Remove xfail for copp tests on broadcom platforms
Skip updating default sonic config for queue4_group3 in scripts/update_copp_config.py as the new rate-limit for this copp
group is lower than the default value of 600 PPS used by copp tests. This value is 300PPS for Mgmt devices and 100 PPS for
other devices. The constraint checks for protocols that map to queue4_group3 are also changed accordingly in
ansible/roles/test/files/ptftests/py3/copp_tests.py
Summary:
Fixes # 27262099

What is the motivation for this PR?
When BGP and IP2ME traps are removed, BGP packets hit the default trap group on broadcom platforms and trap to CPU queue0. This change modifies copp test to verify this behavior.

How did you do it?
By changing the rate limit used in the test for default trap group, it is easy to verify that packets are hitting that trap group. If all trap groups use the same rate limit of 600 pps as is done currently, it is rather difficult to identify which trap group got hit.

How did you verify/test it?
By running tests locally and using azure pipeline
@mssonicbld
Copy link
Collaborator

Cherry-pick PR to 202305: #14290

mssonicbld pushed a commit that referenced this pull request Aug 28, 2024
This PR does the following:

Enhance copp test cases so that they pass consistently on Broadcom platforms.
For Broadcom platforms, when BGP and IP2ME traps are removed, BGP packets hit the default trap group, so a new
DefaultPolicy is introduced in check_constraints specifically for Broadcom ASIC types. The test logic for non-Broadcom
platforms is left unchanged. A necessary side change of this is that the CIR for default trap needs to be changed to a
value other than 600 only for the test. This is reverted back at the end of the test.
Remove xfail for copp tests on broadcom platforms
Skip updating default sonic config for queue4_group3 in scripts/update_copp_config.py as the new rate-limit for this copp
group is lower than the default value of 600 PPS used by copp tests. This value is 300PPS for Mgmt devices and 100 PPS for
other devices. The constraint checks for protocols that map to queue4_group3 are also changed accordingly in
ansible/roles/test/files/ptftests/py3/copp_tests.py
Summary:
Fixes # 27262099

What is the motivation for this PR?
When BGP and IP2ME traps are removed, BGP packets hit the default trap group on broadcom platforms and trap to CPU queue0. This change modifies copp test to verify this behavior.

How did you do it?
By changing the rate limit used in the test for default trap group, it is easy to verify that packets are hitting that trap group. If all trap groups use the same rate limit of 600 pps as is done currently, it is rather difficult to identify which trap group got hit.

How did you verify/test it?
By running tests locally and using azure pipeline
veronica-arista added a commit to veronica-arista/sonic-mgmt that referenced this pull request Sep 5, 2024
Upstream PR sonic-net#12836 changed the copp
policer limit for some traffic classes from 300 to 100, for all DUTs except M0.
Pkz should be included in their M0 list as well (from testing applies to mx too)
arista-hpandya pushed a commit to arista-hpandya/sonic-mgmt that referenced this pull request Oct 2, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - sonic-net#12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
vikshaw-Nokia pushed a commit to vikshaw-Nokia/sonic-mgmt that referenced this pull request Oct 23, 2024
What is the motivation for this PR?
Recently, a change was made in the test_policer testcase in copp_tests.py to retain the default value of cir/cbs for queue4_group3 (default value for mgmt is 300) instead of changing it to 600 on the DUT during the testcase run. The PR for this change is here - sonic-net#12836. For marvell based platforms like Nokia-7215-T1 and Nokia-7215-A1, the cir/cbs values are supported in steps of 125. Therefore, a value of 300 in the copp_cfg.json will set it to 250 internally since 300 is not in steps of 125. This was confirmed by Marvell - "Per talk, the policer/ traffic metering can work in packet per-second mode. The granularity is in step of 125 pps. So it’s 125, 250 …etc Minimum is 125."
The PPS_LIMIT_MIN and PPS_LIMIT_MAX is therefore set in the testcase to 270,390 respectively which is completely out of range and causes this testcase to fail. Therefore, this PR sets cir/cbs to 250 for Marvell based platforms.

How did you do it?
Added a platform specific check in copp_tests.py to change the PPS_LIMIT to 250 for Nokia platforms.

How did you verify/test it?
Ran test_policer testcase for DHCP, DHCP6, LLDP and UDLD. Verified that the testcase passes.
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.

5 participants