From 8bd65a3847a504b31be21e8839fb21cb6f391126 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Tue, 21 Mar 2023 04:35:45 -0700 Subject: [PATCH 01/59] [yang]Updating vxlan yang model to include IPv6 source in VxLAN tunnel (#14363) - Why I did it Update VxLAN yang model to include IPv6 source in VxLAN tunnel. The src_ip field can include both ipv4 as well as ipv6 address - How I did it Updated yang model. - How to verify it Added UT to verify --- .../tests/yang_model_tests/tests/vxlan.json | 3 ++ .../yang_model_tests/tests_config/vxlan.json | 39 +++++++++++++++++++ .../yang-models/sonic-vxlan.yang | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json b/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json index 6bb0507fb050..880d0c015d0c 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/vxlan.json @@ -2,6 +2,9 @@ "VXLAN_VALID_TEST": { "desc": "Valid VXLAN Configuration." }, + "VXLAN_VALID_V6_TUNNEL_TEST": { + "desc": "Valid VXLAN V6 Configuration." + }, "VXLAN_EVPN_NVO_WITHOUT_VTEP": { "desc": "Configure EVPN_NVO without VXLAN_TUNNEL entry", "eStrKey" : "LeafRef" diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json index 90e71063cb24..117d626ca4c2 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vxlan.json @@ -38,6 +38,45 @@ } } }, + "VXLAN_VALID_V6_TUNNEL_TEST": { + "sonic-vlan:sonic-vlan": { + "sonic-vlan:VLAN": { + "VLAN_LIST": [ + { + "name": "Vlan100" + } + ] + } + }, + "sonic-vxlan:sonic-vxlan": { + "sonic-vxlan:VXLAN_TUNNEL": { + "VXLAN_TUNNEL_LIST": [ + { + "name": "vtep1", + "src_ip": "2001::1:2:3:4" + } + ] + }, + "sonic-vxlan:VXLAN_EVPN_NVO": { + "VXLAN_EVPN_NVO_LIST": [ + { + "name": "nvo1", + "source_vtep": "vtep1" + } + ] + }, + "sonic-vxlan:VXLAN_TUNNEL_MAP": { + "VXLAN_TUNNEL_MAP_LIST": [ + { + "name": "vtep1", + "mapname": "map_100_Vlan100", + "vlan": "Vlan100", + "vni": "100" + } + ] + } + } + }, "VXLAN_EVPN_NVO_WITHOUT_VTEP": { "sonic-vxlan:sonic-vxlan": { "sonic-vxlan:VXLAN_EVPN_NVO": { diff --git a/src/sonic-yang-models/yang-models/sonic-vxlan.yang b/src/sonic-yang-models/yang-models/sonic-vxlan.yang index fc23ea9141a0..bad6111b35a8 100644 --- a/src/sonic-yang-models/yang-models/sonic-vxlan.yang +++ b/src/sonic-yang-models/yang-models/sonic-vxlan.yang @@ -60,7 +60,7 @@ module sonic-vxlan { } leaf src_ip { - type inet:ipv4-address; + type inet:ip-address; } } } From ac4fb0a5caaa38819d37a11f06f9c982d4d148b0 Mon Sep 17 00:00:00 2001 From: Vivek Date: Tue, 21 Mar 2023 04:36:31 -0700 Subject: [PATCH 02/59] [submodule] Advance sonic-linux-kernel pointer (#14305) Update sonic-linux-kernel submodule pointer to include the following: * 6847319 Read ID register for optoe1 to find pageable bit in optoe driver ([#308](https://github.com/sonic-net/sonic-linux-kernel/pull/308)) * 42ad073 Add markers to faciliate easy parsing of kconfig-inclusion and series ([#309](https://github.com/sonic-net/sonic-linux-kernel/pull/309)) Signed-off-by: Vivek Reddy --- src/sonic-linux-kernel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index 4c2d4572cebc..6847319e7629 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 4c2d4572cebc05222da515b1dcf08510197d9ae8 +Subproject commit 6847319e76291edfc7f048f9829fc9c1f695d59a From 393dc18bdbb81d442a598aa7828768b79e0c16a6 Mon Sep 17 00:00:00 2001 From: mssonicbld Date: Tue, 21 Mar 2023 05:25:28 +0000 Subject: [PATCH 03/59] [submodule] Update submodule to the latest HEAD automatically --- src/dhcprelay | 2 +- src/linkmgrd | 2 +- src/sonic-host-services | 2 +- src/sonic-mgmt-framework | 2 +- src/sonic-platform-common | 2 +- src/sonic-platform-daemons | 2 +- src/sonic-platform-pde | 2 +- src/sonic-restapi | 2 +- src/sonic-sairedis | 2 +- src/sonic-swss | 2 +- src/sonic-swss-common | 2 +- src/sonic-ztp | 2 +- src/wpasupplicant/sonic-wpa-supplicant | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/dhcprelay b/src/dhcprelay index 1d221b04b6d3..5b3eea1899eb 160000 --- a/src/dhcprelay +++ b/src/dhcprelay @@ -1 +1 @@ -Subproject commit 1d221b04b6d3568974c3ddbc8d0bca849a4cfb63 +Subproject commit 5b3eea1899ebf8f9ced19d4641ae3beb9903fd42 diff --git a/src/linkmgrd b/src/linkmgrd index ac24ad14b014..a062c19c310d 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit ac24ad14b0144b1036b8012762f2e1887e4ae532 +Subproject commit a062c19c310d1203b27b445902bc98b8ce5b651f diff --git a/src/sonic-host-services b/src/sonic-host-services index 121330a287d1..66778525e75d 160000 --- a/src/sonic-host-services +++ b/src/sonic-host-services @@ -1 +1 @@ -Subproject commit 121330a287d139439ef4a539b84822292e3a654d +Subproject commit 66778525e75d9badeb77812c6fce39648221fabc diff --git a/src/sonic-mgmt-framework b/src/sonic-mgmt-framework index 744602bbd854..5c3c670ed34b 160000 --- a/src/sonic-mgmt-framework +++ b/src/sonic-mgmt-framework @@ -1 +1 @@ -Subproject commit 744602bbd8541546dfe977f598f917e3471f85d0 +Subproject commit 5c3c670ed34ba1db52f0ac3f837df7e01a999cee diff --git a/src/sonic-platform-common b/src/sonic-platform-common index 85c20cdee265..bbaa678241c6 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit 85c20cdee2650f89351bf3a78053ebf58ccd9846 +Subproject commit bbaa678241c6ef3c6269bb138b786ae67a69a1c1 diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index 05dd3bd3e6b3..e815bdf95e37 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit 05dd3bd3e6b3c94cf64e36302f735a101a60ea53 +Subproject commit e815bdf95e3753d38c92310c9008bd6ee85fa968 diff --git a/src/sonic-platform-pde b/src/sonic-platform-pde index f18ebc297d8b..133566a91e0c 160000 --- a/src/sonic-platform-pde +++ b/src/sonic-platform-pde @@ -1 +1 @@ -Subproject commit f18ebc297d8b751c162dffd120d284d784aa977d +Subproject commit 133566a91e0c3aeac017dd34bdbe70c5ba1cc0e6 diff --git a/src/sonic-restapi b/src/sonic-restapi index dac446feb2be..47e4b534df75 160000 --- a/src/sonic-restapi +++ b/src/sonic-restapi @@ -1 +1 @@ -Subproject commit dac446feb2be3aa348f633a4d2e3c64993d7483a +Subproject commit 47e4b534df75fd71af6f902759f69cc0fc8b7a3c diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 4d86af3474c7..92c86676375a 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 4d86af3474c7b4299557293c2ee4516753aff169 +Subproject commit 92c86676375aaf00cde13fafb658dbfa00cbbcd6 diff --git a/src/sonic-swss b/src/sonic-swss index 98a16cfaf8ef..c5fa616bde68 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 98a16cfaf8efd5f0757e68cad2559537f0e88223 +Subproject commit c5fa616bde68d39e24445add0d5350b09a21bd92 diff --git a/src/sonic-swss-common b/src/sonic-swss-common index 23df338e4d4d..a50f74a251c2 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit 23df338e4d4dc95233715fd0cd228d4389d229d1 +Subproject commit a50f74a251c2d67ee7655dcde9ee3823aff4ef44 diff --git a/src/sonic-ztp b/src/sonic-ztp index f7dd3c54ec57..92340ff4193b 160000 --- a/src/sonic-ztp +++ b/src/sonic-ztp @@ -1 +1 @@ -Subproject commit f7dd3c54ec57848f7cb6d3eec748a4d8e54d0e6c +Subproject commit 92340ff4193bf31746ca9dfa74ef3cd9ef779ad8 diff --git a/src/wpasupplicant/sonic-wpa-supplicant b/src/wpasupplicant/sonic-wpa-supplicant index 24f505148191..2c69e2cda085 160000 --- a/src/wpasupplicant/sonic-wpa-supplicant +++ b/src/wpasupplicant/sonic-wpa-supplicant @@ -1 +1 @@ -Subproject commit 24f5051481910677b9e5937c01b8b941185086d3 +Subproject commit 2c69e2cda085a1a8e9111a6246bdd6759102bd26 From 20f1ab820325b26736f328a4722c1002dd74d60c Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 22 Mar 2023 19:34:21 +0800 Subject: [PATCH 04/59] [ci/build]: Upgrade SONiC package versions (#14383) --- .../versions-deb-bullseye | 3 +++ files/build/versions/default/versions-git | 6 +++--- files/build/versions/default/versions-mirror | 20 +++++++++---------- .../docker-snmp/versions-py3-all-armhf | 1 - .../dockers/sonic-slave-bullseye/versions-py3 | 2 +- .../dockers/sonic-slave-buster/versions-py3 | 2 +- 6 files changed, 18 insertions(+), 16 deletions(-) delete mode 100644 files/build/versions/dockers/docker-snmp/versions-py3-all-armhf diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index cd889935f892..16ddbc487e99 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -35,11 +35,14 @@ libthrift0==0.14.1 libyang==1.0.73 libyang-cpp==1.0.73 libyang-dev==1.0.73 +libyang2==2.0.112-6 +libyang2-dev==2.0.112-6 linux-headers-5.10.0-18-2-amd64==5.10.140-1 linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index 9d8b6acc32f7..e8082d2d7a42 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==249e9a26c13596183c16784d1e2bcae475caa380 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==479e1e9055020c8d1351bf2194d0a606aeca93d5 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==0c774d6b6a075f37f21ca9c3506141cb0d4ae34b -https://github.com/FreeRADIUS/freeradius-server.git==2ced05a7f7a77138fbf9da49aeaabde170e32020 +https://github.com/flashrom/flashrom.git==e1cdbdbbfb98a28fe7198ae6cd3e571269a04403 +https://github.com/FreeRADIUS/freeradius-server.git==2d831491b69267a62e19a57fed508ae5cce1fb69 https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index 1fc004aad230..d369828cd09e 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230320T000333Z -debian-security==20230320T000618Z +debian==20230322T000136Z +debian-security==20230322T000139Z download.docker.com_linux_debian_dists_bullseye==2023-03-10T08:44:08Z download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230320T000618Z_dists_bullseye-security==2023-03-19T12:12:15Z -packages.trafficmanager.net_snapshot_debian-security_20230320T000618Z_dists_buster_updates==2023-03-19T12:12:15Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_bullseye-backports==2023-03-19T20:11:56Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_bullseye-updates==2023-03-19T20:11:56Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_buster-backports==2023-03-19T20:11:56Z -packages.trafficmanager.net_snapshot_debian_20230320T000333Z_dists_buster-updates==2023-03-19T20:11:56Z +packages.trafficmanager.net_snapshot_debian-security_20230322T000139Z_dists_bullseye-security==2023-03-20T18:49:24Z +packages.trafficmanager.net_snapshot_debian-security_20230322T000139Z_dists_buster_updates==2023-03-20T18:49:24Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye-backports==2023-03-21T20:25:24Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye-updates==2023-03-21T20:25:24Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster-backports==2023-03-21T20:25:24Z +packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster-updates==2023-03-21T20:25:24Z diff --git a/files/build/versions/dockers/docker-snmp/versions-py3-all-armhf b/files/build/versions/dockers/docker-snmp/versions-py3-all-armhf deleted file mode 100644 index 08241255c61a..000000000000 --- a/files/build/versions/dockers/docker-snmp/versions-py3-all-armhf +++ /dev/null @@ -1 +0,0 @@ -redis==4.5.1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 index 682ba3a5e8e7..1ccba62f7050 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 @@ -84,7 +84,7 @@ python-magic==0.4.20 pytz==2021.1 pyxdg==0.27 pyyaml==5.4.1 -redis==4.5.1 +redis==4.5.2 regex==2022.10.31 requests==2.25.1 roman==2.0.0 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 index bfa7f52e37d4..9f24a0c9758b 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -64,7 +64,7 @@ python-magic==0.4.16 pytz==2019.1 pyxdg==0.25 pyyaml==5.4.1 -redis==4.5.1 +redis==4.5.2 regex==2022.10.31 requests==2.21.0 roman==2.0.0 From 67a57ccda765cb6f028f3d94d97958a565591dc6 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Thu, 23 Mar 2023 21:51:47 +0800 Subject: [PATCH 05/59] Fix the demo_part_size not initialized issue when creating partition (#14296) Why I did it The demo_part_size should be initialized before creating partition. How I did it Move the initializing setting to the line before using it. How to verify it --- installer/install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/installer/install.sh b/installer/install.sh index 8ae0fec0e8a2..51b5a75eb574 100755 --- a/installer/install.sh +++ b/installer/install.sh @@ -138,6 +138,10 @@ fi # with "OS" or "DIAG". demo_type="%%DEMO_TYPE%%" +# The build system prepares this script by replacing %%ONIE_IMAGE_PART_SIZE%% +# with the partition size +demo_part_size="%%ONIE_IMAGE_PART_SIZE%%" + # The build system prepares this script by replacing %%IMAGE_VERSION%% # with git revision hash as a version identifier image_version="%%IMAGE_VERSION%%" @@ -236,7 +240,6 @@ if [ "$install_env" = "onie" ]; then fi fi -demo_part_size="%%ONIE_IMAGE_PART_SIZE%%" echo "ONIE_IMAGE_PART_SIZE=$demo_part_size" extra_cmdline_linux=%%EXTRA_CMDLINE_LINUX%% From ab097788d5a8c2875277d256d5d26c545467f524 Mon Sep 17 00:00:00 2001 From: Neetha John Date: Thu, 23 Mar 2023 09:31:06 -0700 Subject: [PATCH 06/59] [qos] Update RDMA-CENTRIC lossy profile to use static threshold for Th devices (#14372) Why I did it For better accounting purposes, updating the ingress lossy traffic profile to use static threshold. This change is only intended for Th devices using RDMA-CENTRIC profiles How I did it Update the buffer templates for Th devices in RDMA-CENTRIC folder to use the correct threshold How to verify it Verified the changes manually on a Th device. Existing unit tests render Th template from the RDMA-CENTRIC folder. Updated the expected output to use the correct threshold --- .../6100/RDMA-CENTRIC/buffers_defaults_t0.j2 | 2 +- .../6100/RDMA-CENTRIC/buffers_defaults_t1.j2 | 2 +- .../gen/RDMA-CENTRIC/buffers_defaults_t0.j2 | 2 +- .../gen/RDMA-CENTRIC/buffers_defaults_t1.j2 | 2 +- src/sonic-config-engine/minigraph.py | 16 +++++++-- .../tests/sample-dell-6100-t0-minigraph.xml | 10 +++--- .../sample_output/py2/buffers-dell6100.json | 2 +- .../sample_output/py3/buffers-dell6100.json | 2 +- src/sonic-config-engine/tests/test_j2files.py | 33 ++++++++++++++++--- 9 files changed, 54 insertions(+), 17 deletions(-) diff --git a/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t0.j2 b/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t0.j2 index ec7e2a23b566..ba9fe78b666e 100644 --- a/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t0.j2 +++ b/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t0.j2 @@ -26,7 +26,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t1.j2 b/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t1.j2 index e408a5c92cf6..0baa9d28a424 100644 --- a/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t1.j2 +++ b/device/common/profiles/th/6100/RDMA-CENTRIC/buffers_defaults_t1.j2 @@ -26,7 +26,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 b/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 index b96563b0a796..7f0e0b0d32ea 100644 --- a/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 +++ b/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 @@ -25,7 +25,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 b/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 index 56df5787c56a..dd75a1a04162 100644 --- a/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 +++ b/device/common/profiles/th/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 @@ -25,7 +25,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index f409d926ce00..0dea971031e1 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -5,6 +5,7 @@ import os import sys import json +import subprocess from collections import defaultdict from lxml import etree as ET @@ -65,6 +66,10 @@ def default(self, obj): return str(obj) return json.JSONEncoder.default(self, obj) +def exec_cmd(cmd): + p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE) + outs, errs = p.communicate() + def get_peer_switch_info(link_metadata, devices): peer_switch_table = {} peer_switch_ip = None @@ -1333,7 +1338,14 @@ def select_mmu_profiles(profile, platform, hwsku): files_to_copy = ['pg_profile_lookup.ini', 'qos.json.j2', 'buffers_defaults_t0.j2', 'buffers_defaults_t1.j2'] - path = os.path.join('/usr/share/sonic/device', platform, hwsku) + if os.environ.get("CFGGEN_UNIT_TESTING", "0") == "2": + for dir_path, dir_name, files in os.walk('/sonic/device'): + if platform in dir_path: + new_path = os.path.split(dir_path)[0] + break + else: + new_path = '/usr/share/sonic/device' + path = os.path.join(new_path, platform, hwsku) dir_path = os.path.join(path, profile) if os.path.exists(dir_path): @@ -1341,7 +1353,7 @@ def select_mmu_profiles(profile, platform, hwsku): file_in_dir = os.path.join(dir_path, file_item) if os.path.isfile(file_in_dir): base_file = os.path.join(path, file_item) - exec_cmd("sudo cp {} {}".format(file_in_dir, base_file)) + exec_cmd(["sudo", "cp", file_in_dir, base_file]) ############################################################################### # diff --git a/src/sonic-config-engine/tests/sample-dell-6100-t0-minigraph.xml b/src/sonic-config-engine/tests/sample-dell-6100-t0-minigraph.xml index cb84ce744ed1..fef3526bee28 100644 --- a/src/sonic-config-engine/tests/sample-dell-6100-t0-minigraph.xml +++ b/src/sonic-config-engine/tests/sample-dell-6100-t0-minigraph.xml @@ -716,6 +716,11 @@ 10.0.0.16 + + SonicQosProfile + + RDMA-CENTRIC + @@ -731,11 +736,6 @@ True - - SonicQosProfile - - RDMA-CENTRIC - ARISTA01T1:Ethernet1;s6100-dev-1:fortyGigE1/1/1 diff --git a/src/sonic-config-engine/tests/sample_output/py2/buffers-dell6100.json b/src/sonic-config-engine/tests/sample_output/py2/buffers-dell6100.json index be6292366e7b..291c44efaa37 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/buffers-dell6100.json +++ b/src/sonic-config-engine/tests/sample_output/py2/buffers-dell6100.json @@ -92,7 +92,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/src/sonic-config-engine/tests/sample_output/py3/buffers-dell6100.json b/src/sonic-config-engine/tests/sample_output/py3/buffers-dell6100.json index 08f238bcc40d..daccd608802a 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/buffers-dell6100.json +++ b/src/sonic-config-engine/tests/sample_output/py3/buffers-dell6100.json @@ -92,7 +92,7 @@ "ingress_lossy_profile": { "pool":"ingress_lossless_pool", "size":"0", - "dynamic_th":"3" + "static_th":"10875072" }, "egress_lossless_profile": { "pool":"egress_lossless_pool", diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py index 44f5be3755a0..c596f77bea09 100644 --- a/src/sonic-config-engine/tests/test_j2files.py +++ b/src/sonic-config-engine/tests/test_j2files.py @@ -323,14 +323,18 @@ def test_qos_dell9332_render_template(self): self._test_qos_render_template('dell', 'x86_64-dellemc_z9332f_d1508-r0', 'DellEMC-Z9332f-O32', 'sample-dell-9332-t1-minigraph.xml', 'qos-dell9332.json') def test_qos_dell6100_render_template(self): - self._test_qos_render_template('dell', 'x86_64-dell_s6100_c2538-r0', 'Force10-S6100', 'sample-dell-6100-t0-minigraph.xml', 'qos-dell6100.json') + self._test_qos_render_template('dell', 'x86_64-dell_s6100_c2538-r0', 'Force10-S6100', 'sample-dell-6100-t0-minigraph.xml', 'qos-dell6100.json', copy_files=True) def test_qos_arista7260_render_template(self): self._test_qos_render_template('arista', 'x86_64-arista_7260cx3_64', 'Arista-7260CX3-D96C16', 'sample-arista-7260-t1-minigraph-remap-disabled.xml', 'qos-arista7260.json') - def _test_qos_render_template(self, vendor, platform, sku, minigraph, expected): + def _test_qos_render_template(self, vendor, platform, sku, minigraph, expected, copy_files=False): file_exist, dir_exist = self.create_machine_conf(platform, vendor) dir_path = os.path.join(self.test_dir, '..', '..', '..', 'device', vendor, platform, sku) + + if copy_files: + self.copy_mmu_templates(dir_path, revert=False) + qos_file = os.path.join(dir_path, 'qos.json.j2') port_config_ini_file = os.path.join(dir_path, 'port_config.ini') @@ -345,6 +349,8 @@ def _test_qos_render_template(self, vendor, platform, sku, minigraph, expected): # cleanup qos_config_file_new = os.path.join(dir_path, 'qos_config.j2') os.remove(qos_config_file_new) + if copy_files: + self.copy_mmu_templates(dir_path, revert=True) self.remove_machine_conf(file_exist, dir_exist) @@ -450,9 +456,26 @@ def test_config_brcm_render_template(self): assert utils.cmp(config_sample_output_file, config_test_output) os.remove(config_test_output) - def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer_template, expected): + def copy_mmu_templates(self, dir_path, revert=False): + files_to_copy = ['pg_profile_lookup.ini', 'qos.json.j2', 'buffers_defaults_t0.j2', 'buffers_defaults_t1.j2'] + + for file_name in files_to_copy: + src_file = os.path.join(dir_path, file_name) + dst_file = os.path.join(self.test_dir, file_name) + + if not revert: + shutil.copy2(src_file, dst_file) + else: + shutil.copy2(dst_file, src_file) + os.remove(dst_file) + + def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer_template, expected, copy_files=False): file_exist, dir_exist = self.create_machine_conf(platform, vendor) dir_path = os.path.join(self.test_dir, '..', '..', '..', 'device', vendor, platform, sku) + + if copy_files: + self.copy_mmu_templates(dir_path, revert=False) + buffers_file = os.path.join(dir_path, buffer_template) port_config_ini_file = os.path.join(dir_path, 'port_config.ini') @@ -482,11 +505,13 @@ def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer diff = diff + str(self.run_diff(sample_output_file, self.output_file)) os.remove(os.path.join(out_file_dir, expected_files[1])) + if copy_files: + self.copy_mmu_templates(dir_path, revert=True) assert match, diff def test_buffers_dell6100_render_template(self): - self._test_buffers_render_template('dell', 'x86_64-dell_s6100_c2538-r0', 'Force10-S6100', 'sample-dell-6100-t0-minigraph.xml', 'buffers.json.j2', 'buffers-dell6100.json') + self._test_buffers_render_template('dell', 'x86_64-dell_s6100_c2538-r0', 'Force10-S6100', 'sample-dell-6100-t0-minigraph.xml', 'buffers.json.j2', 'buffers-dell6100.json', copy_files=True) def test_buffers_mellanox2410_render_template(self): self._test_buffers_render_template('mellanox', 'x86_64-mlnx_msn2410-r0', 'ACS-MSN2410', 'sample-mellanox-2410-t1-minigraph.xml', 'buffers.json.j2', 'buffers-mellanox2410.json') From fb695fed6c59210d121c206a02f36f21842cf097 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Thu, 23 Mar 2023 09:57:23 -0700 Subject: [PATCH 07/59] Update sonic-py-common, add missing dependency to redis-dump-load (#14347) Update sonic-py-common, add missing dependency to redis-dump-load. #### Why I did it The script sonic_db_dump_load.py in sonic-py-common is depends on redis-dump-load, however the dependency is missing. #### How I did it Add redis-dump-load dependency. #### How to verify it Pass all E2E test case. #### Description for the changelog Update sonic-py-common, add missing dependency to redis-dump-load. --- src/sonic-py-common/setup.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/sonic-py-common/setup.py b/src/sonic-py-common/setup.py index 144cf61f52c4..59e7bb0bf1df 100644 --- a/src/sonic-py-common/setup.py +++ b/src/sonic-py-common/setup.py @@ -1,10 +1,31 @@ +from __future__ import print_function +import sys from setuptools import setup +import pkg_resources +from packaging import version + +# sonic_dependencies, version requirement only supports '>=' +sonic_dependencies = ['redis-dump-load'] dependencies = [ 'natsort==6.2.1', # 6.2.1 is the last version which supports Python 2 'pyyaml', ] +dependencies += sonic_dependencies +for package in sonic_dependencies: + try: + package_dist = pkg_resources.get_distribution(package.split(">=")[0]) + except pkg_resources.DistributionNotFound: + print(package + " is not found!", file=sys.stderr) + print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr) + exit(1) + if ">=" in package: + if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]): + continue + print(package + " version not match!", file=sys.stderr) + exit(1) + setup( name='sonic-py-common', version='1.0', From fb6e37819b74a9138c8f0e9ad729719eb3d8113a Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sat, 25 Mar 2023 19:21:56 +0800 Subject: [PATCH 08/59] [ci/build]: Upgrade SONiC package versions (#14414) --- .../versions-deb-bullseye | 3 --- .../versions-deb-bullseye-armhf | 1 + .../build-sonic-slave-bullseye/versions-py3 | 2 +- .../versions-py3-all-armhf | 1 - files/build/versions/default/versions-docker | 24 +++++++++---------- files/build/versions/default/versions-git | 10 ++++---- files/build/versions/default/versions-mirror | 24 +++++++++---------- .../versions-py3 | 5 +++- .../docker-config-engine-buster/versions-py3 | 6 +++++ .../docker-platform-monitor/versions-py3 | 2 -- .../dockers/docker-ptf/versions-deb-buster | 1 + .../versions/dockers/docker-snmp/versions-py3 | 2 -- .../docker-sonic-mgmt-framework/versions-py3 | 3 --- .../dockers/docker-sonic-vs/versions-py3 | 4 ++-- .../dockers/sonic-slave-bullseye/versions-py3 | 4 ++-- .../sonic-slave-buster/versions-deb-buster | 2 +- .../dockers/sonic-slave-buster/versions-py3 | 2 +- files/build/versions/host-image/versions-py3 | 8 +++---- 18 files changed, 52 insertions(+), 52 deletions(-) diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index 16ddbc487e99..cd889935f892 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -35,14 +35,11 @@ libthrift0==0.14.1 libyang==1.0.73 libyang-cpp==1.0.73 libyang-dev==1.0.73 -libyang2==2.0.112-6 -libyang2-dev==2.0.112-6 linux-headers-5.10.0-18-2-amd64==5.10.140-1 linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 -mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf index ea31993a2e6b..e593594e45da 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -1,3 +1,4 @@ libnl-3-200==3.5.0-1 libnl-route-3-200==3.5.0-1 linux-headers-5.10.0-18-2-armmp==5.10.140-1 +mrvllibsai==1.10.2-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 index 1843c6d32e38..c3f7dc2a8994 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 @@ -5,7 +5,7 @@ colorful==0.5.5 docker==6.0.1 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.0 +filelock==3.10.4 ijson==2.6.1 ipaddress==1.0.23 jsondiff==2.0.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf index 073a05050656..eea883fd84b6 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -2,4 +2,3 @@ bitarray==1.5.3 click==7.0 redis==3.5.3 requests==2.28.2 -zipp==1.2.0 diff --git a/files/build/versions/default/versions-docker b/files/build/versions/default/versions-docker index 3b8b069c2c82..04b489e60d52 100644 --- a/files/build/versions/default/versions-docker +++ b/files/build/versions/default/versions-docker @@ -1,12 +1,12 @@ -amd64:amd64/debian:bullseye==sha256:6f1f698e20c8ae73b110eb614a2c6d13fbdb504bbbbcf2965c4d0b80b7bb7fb1 -amd64:amd64/debian:buster==sha256:c75d609d1d06a44ac87c52e9afe4102af856dd1c075f316b4d219f072af0b3b1 -amd64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f -amd64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 -arm64:arm64v8/debian:bullseye==sha256:6509c82860a3b4158fb6537fdec1477443c367b7d5bf1b55dfcc40325aa588e6 -arm64:arm64v8/debian:buster==sha256:0100d882223b08bc979db07977fd493163c545abcac553086bba75a96aebe0bd -arm64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f -arm64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 -armhf:arm32v7/debian:bullseye==sha256:758b1c750089fbcafcea7f4f643cd36d50c0e7673acc5e5674fc803fb52ce2c8 -armhf:arm32v7/debian:buster==sha256:43b845d5864322e89773a602535f5db85debe3356e50488c63dd99bf2cc16899 -armhf:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f -armhf:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 +amd64:amd64/debian:bullseye==sha256:d0bf7d85ad1e61ab3520b1d22d1e2a136799defd4e0d1e3f998d3b9045f38551 +amd64:amd64/debian:buster==sha256:ac8ad4307a275784e5fce8c832d1101b0fc8fd876e37f6fb2cb355c33ba456b1 +amd64:debian:bullseye==sha256:7b991788987ad860810df60927e1adbaf8e156520177bd4db82409f81dd3b721 +amd64:debian:buster==sha256:235f2a778fbc0d668c66afa9fd5f1efabab94c1d6588779ea4e221e1496f89da +arm64:arm64v8/debian:bullseye==sha256:c7908b5cd3ce2969645bc08efd3940e1d145da5d935fb084e7fde00949a1ccb9 +arm64:arm64v8/debian:buster==sha256:a5f47fe848328e0744bfa9929bc07049f9f7fae244f6d3db9cfc7fb9d9db7899 +arm64:debian:bullseye==sha256:7b991788987ad860810df60927e1adbaf8e156520177bd4db82409f81dd3b721 +arm64:debian:buster==sha256:235f2a778fbc0d668c66afa9fd5f1efabab94c1d6588779ea4e221e1496f89da +armhf:arm32v7/debian:bullseye==sha256:c0eb6a0cc41c84db8f967a6708c136bf113cf4db37a6a7db0ec73f890ce725c5 +armhf:arm32v7/debian:buster==sha256:5a0917270fe6093c5a45ab4d4036ec167764f188778f3c20e78905219eedda12 +armhf:debian:bullseye==sha256:7b991788987ad860810df60927e1adbaf8e156520177bd4db82409f81dd3b721 +armhf:debian:buster==sha256:235f2a778fbc0d668c66afa9fd5f1efabab94c1d6588779ea4e221e1496f89da diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index e8082d2d7a42..d47cca8fde7d 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==479e1e9055020c8d1351bf2194d0a606aeca93d5 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==d9717259ee7ecbe8de97b75a264f5edc18224ab2 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==e1cdbdbbfb98a28fe7198ae6cd3e571269a04403 -https://github.com/FreeRADIUS/freeradius-server.git==2d831491b69267a62e19a57fed508ae5cce1fb69 +https://github.com/flashrom/flashrom.git==59fcde0895855b88961d4a28be569d62d0948808 +https://github.com/FreeRADIUS/freeradius-server.git==917430762576dc3afadbf1ddb28721a96a3abb32 https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,8 +14,8 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==3cd477f55b7049082a3e6f38fe9fa4519f8f0469 -https://github.com/sflow/sflowtool==8c914e79ecb7930adcba2e5296041c3f9eb8e450 +https://github.com/sflow/host-sflow==a6b576455714e250c40ee7925f76e6e717e6c9c0 +https://github.com/sflow/sflowtool==7299efd21c8a0b09ae48616bd53e9e38c99a5ed2 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d https://salsa.debian.org/kernel-team/ethtool/==68409b09a969b49a07fbf3930409f155b953434b diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index d369828cd09e..bdb55bdb047c 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230322T000136Z -debian-security==20230322T000139Z -download.docker.com_linux_debian_dists_bullseye==2023-03-10T08:44:08Z -download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z +debian==20230325T000059Z +debian-security==20230325T000108Z +download.docker.com_linux_debian_dists_bullseye==2023-03-23T17:41:42Z +download.docker.com_linux_debian_dists_buster==2023-03-23T17:41:43Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230322T000139Z_dists_bullseye-security==2023-03-20T18:49:24Z -packages.trafficmanager.net_snapshot_debian-security_20230322T000139Z_dists_buster_updates==2023-03-20T18:49:24Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye-backports==2023-03-21T20:25:24Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_bullseye-updates==2023-03-21T20:25:24Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster-backports==2023-03-21T20:25:24Z -packages.trafficmanager.net_snapshot_debian_20230322T000136Z_dists_buster-updates==2023-03-21T20:25:24Z +packages.trafficmanager.net_snapshot_debian-security_20230325T000108Z_dists_bullseye-security==2023-03-24T22:05:47Z +packages.trafficmanager.net_snapshot_debian-security_20230325T000108Z_dists_buster_updates==2023-03-24T22:05:47Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye-backports==2023-03-24T20:32:21Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye-updates==2023-03-24T20:32:21Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster-backports==2023-03-24T20:32:21Z +packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster-updates==2023-03-24T20:32:21Z diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 index 5c7e31dc52fc..73bbecabb1e2 100644 --- a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 @@ -1,3 +1,4 @@ +async-timeout==4.0.2 bitarray==1.5.3 ijson==2.6.1 ipaddress==1.0.23 @@ -8,7 +9,9 @@ netaddr==0.8.0 pyang==2.5.3 pyangbind==0.8.1 pyyaml==5.4.1 -regex==2022.10.31 +redis==4.5.3 +redis-dump-load==1.1 +regex==2023.3.23 six==1.16.0 tabulate==0.8.2 xmltodict==0.12.0 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 index 5c7e31dc52fc..10d530dab553 100644 --- a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 @@ -1,5 +1,7 @@ +async-timeout==4.0.2 bitarray==1.5.3 ijson==2.6.1 +importlib-metadata==6.1.0 ipaddress==1.0.23 jsondiff==2.0.0 lxml==4.9.1 @@ -8,7 +10,11 @@ netaddr==0.8.0 pyang==2.5.3 pyangbind==0.8.1 pyyaml==5.4.1 +redis==4.5.3 +redis-dump-load==1.1 regex==2022.10.31 six==1.16.0 tabulate==0.8.2 +typing_extensions==4.5.0 xmltodict==0.12.0 +zipp==3.15.0 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-py3 b/files/build/versions/dockers/docker-platform-monitor/versions-py3 index fdb1d033244a..0bb3f02f7a26 100644 --- a/files/build/versions/dockers/docker-platform-monitor/versions-py3 +++ b/files/build/versions/dockers/docker-platform-monitor/versions-py3 @@ -1,4 +1,3 @@ -async-timeout==4.0.2 attrs==20.3.0 certifi==2022.12.7 charset-normalizer==3.1.0 @@ -14,7 +13,6 @@ netifaces==0.11.0 protobuf==3.20.3 pyrsistent==0.15.5 python_sdk_api==4.5.4206 -redis==4.5.2 requests==2.28.2 thrift==0.13.0 urllib3==1.26.15 diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster index 4f978cb4659e..5169b8cda55b 100644 --- a/files/build/versions/dockers/docker-ptf/versions-deb-buster +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -575,6 +575,7 @@ tk8.6-blt2.5==2.5.3+dfsg-4 tmux==2.8-3+deb10u1 traceroute==1:2.1.0-2 ttf-bitstream-vera==1.10-8 +tzdata==2021a-0+deb10u10 ucf==3.0038+nmu1 unzip==6.0-23+deb10u3 vim==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-snmp/versions-py3 b/files/build/versions/dockers/docker-snmp/versions-py3 index 25358e85b21a..dbdd3049f0d8 100644 --- a/files/build/versions/dockers/docker-snmp/versions-py3 +++ b/files/build/versions/dockers/docker-snmp/versions-py3 @@ -1,6 +1,4 @@ -async-timeout==4.0.2 hiredis==2.2.2 psutil==5.9.4 python-arptable==0.0.2 -redis==4.5.2 smbus==1.1.post2 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 index d3f305c9c0ec..692ebf360062 100644 --- a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 @@ -8,7 +8,6 @@ flask==2.2.3 grpcio==1.51.3 grpcio-tools==1.20.0 idna==3.4 -importlib-metadata==6.1.0 importlib-resources==5.12.0 inflection==0.5.1 itsdangerous==2.1.2 @@ -26,7 +25,5 @@ requests==2.28.2 rfc3339-validator==0.1.4 setuptools==21.0.0 six==1.11.0 -typing_extensions==4.5.0 urllib3==1.26.5 werkzeug==2.2.3 -zipp==3.15.0 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py3 b/files/build/versions/dockers/docker-sonic-vs/versions-py3 index c883e8aa914d..7c3cffb14ff0 100644 --- a/files/build/versions/dockers/docker-sonic-vs/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py3 @@ -9,7 +9,7 @@ dbus-python==1.3.2 docker==6.0.1 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.0 +filelock==3.10.4 idna==3.4 importlib-metadata==6.1.0 jsonpatch==1.32 @@ -24,7 +24,7 @@ prettyprinter==0.18.0 ptyprocess==0.7.0 pycairo==1.23.0 pygments==2.14.0 -pygobject==3.44.0 +pygobject==3.44.1 pyroute2==0.5.14 redis==4.5.2 requests==2.28.2 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 index 1ccba62f7050..fabf4771e0a6 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 @@ -84,8 +84,8 @@ python-magic==0.4.20 pytz==2021.1 pyxdg==0.27 pyyaml==5.4.1 -redis==4.5.2 -regex==2022.10.31 +redis==4.5.3 +regex==2023.3.23 requests==2.25.1 roman==2.0.0 service-identity==18.1.0 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index 8cab34dfcf2c..1b9c9cb338cc 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -48,7 +48,7 @@ cmake==3.13.4-1 cmake-data==3.13.4-1 cmocka-doc==1.1.3-1 comerr-dev==2.1-1.44.5-1+deb10u3 -containerd.io==1.6.18-1 +containerd.io==1.6.19-1 cowbuilder==0.88 cowdancer==0.88 cpio==2.12+dfsg-9 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 index 9f24a0c9758b..25eaf840d2bf 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -64,7 +64,7 @@ python-magic==0.4.16 pytz==2019.1 pyxdg==0.25 pyyaml==5.4.1 -redis==4.5.2 +redis==4.5.3 regex==2022.10.31 requests==2.21.0 roman==2.0.0 diff --git a/files/build/versions/host-image/versions-py3 b/files/build/versions/host-image/versions-py3 index 5a1e59922992..32763b8d9b0c 100644 --- a/files/build/versions/host-image/versions-py3 +++ b/files/build/versions/host-image/versions-py3 @@ -9,12 +9,12 @@ charset-normalizer==3.1.0 click==7.0 click-log==0.4.0 colorful==0.5.5 -cryptography==39.0.2 +cryptography==40.0.1 dbus-python==1.2.16 docker==5.0.3 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.0 +filelock==3.10.4 grpcio==1.39.0 grpcio-tools==1.39.0 idna==3.4 @@ -49,13 +49,13 @@ pycairo==1.23.0 pycparser==2.21 pycurl==7.43.0.6 pygments==2.14.0 -pygobject==3.44.0 +pygobject==3.44.1 pyroute2==0.5.19 python-apt==2.2.1 python-dateutil==2.8.2 pyyaml==5.4.1 redis==3.5.3 -regex==2022.10.31 +regex==2023.3.23 requests==2.28.2 scapy==2.4.4 semantic-version==2.10.0 From 6ef32d1fdf894ed33253a77feaad34d3ea8cea33 Mon Sep 17 00:00:00 2001 From: Konstantin Vasin <126960927+k-v1@users.noreply.github.com> Date: Sat, 25 Mar 2023 17:28:24 +0300 Subject: [PATCH 09/59] use sources.list to calc sonic-slave-user tag (#14409) Why I did it This is a fix for c63e9fe SLAVE_TAG should include all dependencies used for SLAVE_BASE_TAG How I did it Take sources.list.* into account when calculate SLAVE_TAG How to verify it --- Makefile.work | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.work b/Makefile.work index 1065c89ba8fc..8d3236adf350 100644 --- a/Makefile.work +++ b/Makefile.work @@ -245,6 +245,7 @@ SLAVE_BASE_TAG = $(shell \ SLAVE_TAG = $(shell \ (cat $(SLAVE_DIR)/Dockerfile.user \ $(SLAVE_DIR)/Dockerfile \ + $(SLAVE_DIR)/sources.list.* \ $(SLAVE_DIR)/buildinfo/versions/versions-* \ && echo $(USER)/$(PWD)/$(CONFIGURED_PLATFORM)) \ | sha1sum \ From b3c73f84ff880c3000c5209a5d3374a9e5b513c2 Mon Sep 17 00:00:00 2001 From: jcaiMR <111116206+jcaiMR@users.noreply.github.com> Date: Sun, 26 Mar 2023 20:21:37 +0800 Subject: [PATCH 10/59] change static rt expiry timer max value (#14397) Why I did it Change static route expiry timer max timeout value from 1800 to 172800. To keep same value range as defined in sonic-restapi/sonic_api.yaml How I did it How to verify it apply change to bgpcfd, restart bgp container see if the value take action. --- src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py b/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py index 060e7d59439c..a0e7d041382a 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py +++ b/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py @@ -12,7 +12,8 @@ def __init__(self): DEFAULT_TIMER = 180 DEFAULT_SLEEP = 60 - MAX_TIMER = 1800 + # keep same range as value defined in sonic-restapi/sonic_api.yaml + MAX_TIMER = 172800 def set_timer(self): """ Check for custom route expiry time in STATIC_ROUTE_EXPIRY_TIME """ @@ -55,4 +56,5 @@ def run(self): else: time.sleep(self.DEFAULT_SLEEP) if time.time() - self.start >= self.DEFAULT_TIMER: - self.alarm() \ No newline at end of file + self.alarm() + From f19c8a7be56f07e9e777bfc45b44891085958157 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Tue, 28 Mar 2023 00:58:37 +0800 Subject: [PATCH 11/59] [ci] Fix build issue for vs vhdx image. #14427 Why I did it sonic-slave-stretch build failed for mmh3 version update to 3.10 on Mar 24. How I did it Enable reproducible build for vhdx image. How to verify it --- .azure-pipelines/azure-pipelines-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/azure-pipelines-build.yml b/.azure-pipelines/azure-pipelines-build.yml index 92897231dab9..2997d98b7d3d 100644 --- a/.azure-pipelines/azure-pipelines-build.yml +++ b/.azure-pipelines/azure-pipelines-build.yml @@ -125,7 +125,7 @@ jobs: make $BUILD_OPTIONS target/docker-ptf-sai.gz if [ $(Build.Reason) != 'PullRequest' ];then gzip -kd target/sonic-vs.img.gz - SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make sonic-slave-run + SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make $BUILD_OPTIONS sonic-slave-run rm target/sonic-vs.img fi else From 105decc4d18eea2070c604dbb1b640fa42c4c88f Mon Sep 17 00:00:00 2001 From: Ikki Zhu <79439153+qnos@users.noreply.github.com> Date: Tue, 28 Mar 2023 01:14:37 +0800 Subject: [PATCH 12/59] [celestica/e1031]: enable emc2305 fan controller timeout feature (#14401) Why I did it There is rare condition, emc2305 hold SMBus and cause SMBus completion wait timed out. How I did it Enable EMC2305 SMBus timeout feature, 30ms period of inactivity will reset the interface. How to verify it Use 'i2cget -y -f 23 0x4d 0x20 b' to read EMC2305 configuration register and check DIS_TO bit not set. Signed-off-by: Eric Zhu --- .../haliburton/modules/emc2305.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/emc2305.c b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/emc2305.c index f08033e080ce..c32f5dffbc2d 100644 --- a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/emc2305.c +++ b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/emc2305.c @@ -407,6 +407,35 @@ emc2305_set_pwm(struct i2c_client *client, int fan_idx, long pwm) mutex_unlock(&data->update_lock); return status; } + +static int +emc2305_enable_timeout(struct i2c_client *client, bool enable) +{ + struct emc2305_data *data = i2c_get_clientdata(client); + int status = 0; + u8 conf_val = 0; + + mutex_lock(&data->update_lock); + + status = read_u8_from_i2c(client, REG_CONFIGURATION, &conf_val); + if (status < 0) { + mutex_unlock(&data->update_lock); + return status; + } + + // Section 6.2: CONFIG REGISTER DIS_TO bit(bit 6) + if (enable) { + conf_val &= ~(1 << 6); + } else { + conf_val |= (1 << 6); + } + + status = i2c_smbus_write_byte_data(client, REG_CONFIGURATION, conf_val); + + mutex_unlock(&data->update_lock); + return status; +} + /* * sysfs callback functions * @@ -744,6 +773,9 @@ emc2305_probe(struct i2c_client *client, const struct i2c_device_id *id) i2c_set_clientdata(client, data); mutex_init(&data->update_lock); + // Enable SMBus timeout feature + emc2305_enable_timeout(client, true); + status = i2c_smbus_read_byte_data(client, REG_PRODUCT_ID); switch (status) { case 0x34: /* EMC2305 */ From f550c86bd7655b61398217adc5d0bd3cf27241d1 Mon Sep 17 00:00:00 2001 From: Ikki Zhu <79439153+qnos@users.noreply.github.com> Date: Tue, 28 Mar 2023 01:17:21 +0800 Subject: [PATCH 13/59] [Seastone] DX010 platform switch to sfp-refactor based sfp impl (#13972) Why I did it sonic-sfp based sfp impl would be deprecated in future, change to sfp-refactor based implementation. How I did it Use the new sfp-refactor based sfp implementation for seastone. How to verify it Manual test sfp platform api or run sfp platform test cases. --- .../sonic_platform/chassis.py | 4 +- .../sonic_platform/sfp_optoe.py | 270 ++++++++++++++++++ 2 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp_optoe.py diff --git a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/chassis.py b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/chassis.py index 5a7c2fb3d548..ad24b063de05 100644 --- a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/chassis.py +++ b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/chassis.py @@ -50,9 +50,9 @@ def __initialize_sfp(self): port_config_file_path = device_info.get_path_to_port_config_file() sfputil_helper.read_porttab_mappings(port_config_file_path, 0) - from sonic_platform.sfp import Sfp + from sonic_platform.sfp_optoe import SfpOptoe for index in range(0, NUM_SFP): - sfp = Sfp(index, sfputil_helper.logical[index]) + sfp = SfpOptoe(index, sfputil_helper.physical_to_logical[index + 1]) self._sfp_list.append(sfp) self.sfp_module_initialized = True diff --git a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp_optoe.py b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp_optoe.py new file mode 100644 index 000000000000..4c6c9ee39326 --- /dev/null +++ b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp_optoe.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python + +############################################################################# +# Celestica +# +# Module contains an implementation of SONiC Platform Base API and +# provides the sfp status which are available in the platform +# +############################################################################# + +import time + +try: + from sonic_platform_base.sonic_xcvr.sfp_optoe_base import SfpOptoeBase + from .helper import APIHelper +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +SFP_I2C_START = 26 +I2C_EEPROM_PATH = '/sys/bus/i2c/devices/i2c-{0}/{0}-0050/eeprom' + + +class SfpOptoe(SfpOptoeBase): + """Platform-specific SfpOptoe class""" + + RESET_PATH = "/sys/devices/platform/dx010_cpld/qsfp_reset" + LP_PATH = "/sys/devices/platform/dx010_cpld/qsfp_lpmode" + PRS_PATH = "/sys/devices/platform/dx010_cpld/qsfp_modprs" + + def __init__(self, sfp_index=0, sfp_name=None): + SfpOptoeBase.__init__(self) + + self._index = sfp_index + self._port_num = self._index + 1 + self._api_helper = APIHelper() + self._name = sfp_name + self._sfp_type = None + + def _detect_sfp_type(self): + sfp_type = 'N/A' + info = self.get_transceiver_info() + if info: + sfp_type = info.get("type_abbrv_name") + # XXX: Need this hack until xcvrd is refactored + if sfp_type in ["OSFP-8X", "QSFP-DD"]: + sfp_type = "QSFP_DD" + return sfp_type + + @property + def sfp_type(self): + if self._sfp_type is None: + self._sfp_type = self._detect_sfp_type() + return self._sfp_type + + def get_eeprom_path(self): + port_to_i2c_mapping = SFP_I2C_START + self._index + port_eeprom_path = I2C_EEPROM_PATH.format(port_to_i2c_mapping) + return port_eeprom_path + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + return self._name + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + if not self.get_presence(): + return False + reset = self.get_reset_status() + if reset: + status = False + else: + status = True + return status + + def get_reset_status(self): + """ + Retrieves the reset status of SFP + Returns: + A Boolean, True if reset enabled, False if disabled + """ + reset_status_raw = self._api_helper.read_txt_file( + self.RESET_PATH).rstrip() + if not reset_status_raw: + return False + + reg_value = int(reset_status_raw, 16) + bin_format = bin(reg_value)[2:].zfill(32) + return bin_format[::-1][self._index] == '0' + + def get_presence(self): + """ + Retrieves the presence of the PSU + Returns: + bool: True if PSU is present, False if not + """ + presence_status_raw = self._api_helper.read_txt_file( + self.PRS_PATH).rstrip() + if not presence_status_raw: + return False + + content = presence_status_raw.rstrip() + reg_value = int(content, 16) + + # Determind if port_num start from 1 or 0 + bit_index = self._index + + # Mask off the bit corresponding to our port + mask = (1 << bit_index) + + # ModPrsL is active low + if reg_value & mask == 0: + return True + + return False + + def get_lpmode(self): + """ + Retrieves the lpmode (low power mode) status of this SFP + Returns: + A Boolean, True if lpmode is enabled, False if disabled + """ + try: + reg_file = open(self.LP_PATH, "r") + content = reg_file.readline().rstrip() + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + # content is a string containing the hex representation of the register + reg_value = int(content, 16) + + # Determind if port_num start from 1 or 0 + bit_index = self._index + + # Mask off the bit corresponding to our port + mask = (1 << bit_index) + + # LPMode is active high + if reg_value & mask == 0: + return False + + return True + + def reset(self): + """ + Reset SFP and return all user module settings to their default srate. + Returns: + A boolean, True if successful, False if not + """ + # Check for invalid port_num + + try: + reg_file = open(self.RESET_PATH, "r+") + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + content = reg_file.readline().rstrip() + + # File content is a string containing the hex representation of the + # register + reg_value = int(content, 16) + + # Determind if port_num start from 1 or 0 + bit_index = self._index + + # Mask off the bit corresponding to our port + mask = (1 << bit_index) + + # ResetL is active low + reg_value = reg_value & ~mask + + # Convert our register value back to a hex string and write back + reg_file.seek(0) + reg_file.write(hex(reg_value).rstrip('L')) + reg_file.close() + + # Sleep 1 second to allow it to settle + time.sleep(1) + + # Flip the bit back high and write back to the register + # to take port out of reset + try: + reg_file = open(self.RESET_PATH, "w") + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + reg_value = reg_value | mask + reg_file.seek(0) + reg_file.write(hex(reg_value).rstrip('L')) + reg_file.close() + + return True + + def set_lpmode(self, lpmode): + """ + Sets the lpmode (low power mode) of SFP + Args: + lpmode: A Boolean, True to enable lpmode, False to disable it + Note : lpmode can be overridden by set_power_override + Returns: + A boolean, True if lpmode is set successfully, False if not + """ + try: + reg_file = open(self.LP_PATH, "r+") + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + content = reg_file.readline().rstrip() + + # content is a string containing the hex representation of the register + reg_value = int(content, 16) + + # Determind if port_num start from 1 or 0 + bit_index = self._index + + # Mask off the bit corresponding to our port + mask = (1 << bit_index) + # LPMode is active high; set or clear the bit accordingly + reg_value = reg_value | mask if lpmode else reg_value & ~mask + + # Convert our register value back to a hex string and write back + content = hex(reg_value).strip('L') + + reg_file.seek(0) + reg_file.write(content) + reg_file.close() + + return True + + def get_error_description(self): + """ + Retrives the error descriptions of the SFP module + Returns: + String that represents the current error descriptions of + vendor specific errors + In case there are multiple errors, they should be joined by '|', + like: "Bad EEPROM|Unsupported cable" + """ + if self.sfp_type == "QSFP_DD": + return super().get_error_description() + + if not self.get_presence(): + return self.SFP_STATUS_UNPLUGGED + return self.SFP_STATUS_OK + + def get_position_in_parent(self): + return self._index + + def get_index(self): + """ + Retrieves current sfp index + Returns: + A int value, sfp index + """ + return self._index + + def is_replaceable(self): + return True From cedc4d914fa5847e724ef74dd1f91a7ad3c3967b Mon Sep 17 00:00:00 2001 From: Gokulnath-Raja <87805083+Gokulnath-Raja@users.noreply.github.com> Date: Mon, 27 Mar 2023 22:49:05 +0530 Subject: [PATCH 14/59] [sflow] Exception handling for if_nametoindex (#11437) (#13567) catch system error and log as warning level instead of error level in case interface was already deleted. Why I did it sflow process exited when failed to convert the interface index from interface name How I did it Added exception handling code and logged when OSError exception. How to verify it Recreated the bug scenario #11437 and ensured that sflow process not exited. Description for the changelog catch system error and log as warning level instead of error level in case interface was already deleted. Logs steps : root@sonic:~# sudo config vlan member del 4094 PortChannel0001 root@sonic:~# sudo config vlan member del 4094 Ethernet2 root@sonic:~# sudo config vlan del 4094 root@sonic:~# "WARNING sflow#port_index_mapper: no interface with this name" is seen but no crash is reported syslogs : Jan 23 09:17:24.420448 sonic NOTICE swss#orchagent: :- removeVlanMember: Remove member Ethernet2 from VLAN Vlan4094 lid:ffe vmid:27000000000a53 Jan 23 09:17:24.420710 sonic NOTICE swss#orchagent: :- flushFdbEntries: flush key: SAI_OBJECT_TYPE_FDB_FLUSH:oid:0x21000000000000, fields: 3 Jan 23 09:17:24.420847 sonic NOTICE swss#orchagent: :- recordFlushFdbEntries: flush key: SAI_OBJECT_TYPE_FDB_FLUSH:oid:0x21000000000000, fields: 3 Jan 23 09:17:24.426082 sonic NOTICE syncd#syncd: :- processFdbFlush: fdb flush succeeded, updating redis database Jan 23 09:17:24.426242 sonic NOTICE syncd#syncd: :- processFlushEvent: received a flush port fdb event, portVid = oid:0x3a000000000a52, bvId = oid:0x26000000000a51 Jan 23 09:17:24.426374 sonic NOTICE syncd#syncd: :- processFlushEvent: pattern ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:*oid:0x26000000000a51*, portStr oid:0x3a000000000a52 Jan 23 09:17:24.427104 sonic NOTICE bgp#fpmsyncd: :- onRouteMsg: RouteTable del msg for route with only one nh on eth0/docker0: fe80::/64 :: eth0 Jan 23 09:17:24.427182 sonic NOTICE bgp#fpmsyncd: :- onRouteMsg: RouteTable del msg for route with only one nh on eth0/docker0: fd00::/80 :: docker0 Jan 23 09:17:24.428502 sonic NOTICE swss#orchagent: :- meta_sai_on_fdb_flush_event_consolidated: processing consolidated fdb flush event of type: SAI_FDB_ENTRY_TYPE_DYNAMIC Jan 23 09:17:24.429058 sonic NOTICE swss#orchagent: :- meta_sai_on_fdb_flush_event_consolidated: fdb flush took 0.000606 sec Jan 23 09:17:24.431496 sonic NOTICE swss#orchagent: :- setHostIntfsStripTag: Set SAI_HOSTIF_VLAN_TAG_STRIP to host interface: Ethernet2 Jan 23 09:17:24.431675 sonic NOTICE swss#orchagent: :- flushFdbEntries: flush key: SAI_OBJECT_TYPE_FDB_FLUSH:oid:0x21000000000000, fields: 2 Jan 23 09:17:24.431797 sonic NOTICE swss#orchagent: :- recordFlushFdbEntries: flush key: SAI_OBJECT_TYPE_FDB_FLUSH:oid:0x21000000000000, fields: 2 Jan 23 09:17:24.437009 sonic NOTICE swss#orchagent: :- meta_sai_on_fdb_flush_event_consolidated: processing consolidated fdb flush event of type: SAI_FDB_ENTRY_TYPE_DYNAMIC Jan 23 09:17:24.437532 sonic NOTICE swss#orchagent: :- meta_sai_on_fdb_flush_event_consolidated: fdb flush took 0.000514 sec Jan 23 09:17:24.437942 sonic NOTICE syncd#syncd: :- processFdbFlush: fdb flush succeeded, updating redis database Jan 23 09:17:24.438065 sonic NOTICE syncd#syncd: :- processFlushEvent: received a flush port fdb event, portVid = oid:0x3a000000000a52, bvId = oid:0x0 Jan 23 09:17:24.438173 sonic NOTICE syncd#syncd: :- processFlushEvent: pattern ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:*, portStr oid:0x3a000000000a52 Jan 23 09:17:24.440348 sonic NOTICE swss#orchagent: :- removeBridgePort: Remove bridge port Ethernet2 from default 1Q bridgeJan 23 09:17:29.782554 sonic NOTICE swss#orchagent: :- removeVlan: VLAN Vlan4094 still has 1 FDB entries Jan 23 09:17:29.791373 sonic WARNING sflow#port_index_mapper: no interface with this name Signed-off-by: Gokulnath-Raja --- dockers/docker-sflow/port_index_mapper.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dockers/docker-sflow/port_index_mapper.py b/dockers/docker-sflow/port_index_mapper.py index ee9dba15a407..e232d0e3830f 100755 --- a/dockers/docker-sflow/port_index_mapper.py +++ b/dockers/docker-sflow/port_index_mapper.py @@ -45,7 +45,15 @@ def update_db(self, ifname, op): index = port_util.get_index_from_str(ifname) if op == 'SET' and index is None: return - ifindex = if_nametoindex(ifname) + + # catch system error and log as warning level instead of + # error level in case interface was already deleted + ifindex = None + try: + ifindex = if_nametoindex(ifname) + except OSError as e: + logger.log_warning("%s" % str(e)) + if op == 'SET' and ifindex is None: return From d630b2f91cb2330d8b98c0ed647cbe1a10e1ac6c Mon Sep 17 00:00:00 2001 From: Keshav Gupta <123375613+Keshavg-marvell@users.noreply.github.com> Date: Mon, 27 Mar 2023 22:59:31 +0530 Subject: [PATCH 15/59] [Innovium] Innovium build changes for master branch (#13512) To Fix innovium build issue Signed-off-by: Keshav Gupta --- platform/innovium/docker-syncd-invm-rpc.mk | 1 + platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 | 8 +++----- platform/innovium/docker-syncd-invm.mk | 6 ++++-- platform/innovium/docker-syncd-invm/Dockerfile.j2 | 4 ++-- platform/innovium/rules.mk | 4 ++-- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/platform/innovium/docker-syncd-invm-rpc.mk b/platform/innovium/docker-syncd-invm-rpc.mk index 8ccbef57dd4f..ac1797f148ba 100755 --- a/platform/innovium/docker-syncd-invm-rpc.mk +++ b/platform/innovium/docker-syncd-invm-rpc.mk @@ -5,6 +5,7 @@ $(DOCKER_SYNCD_INVM_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-invm-rpc $(DOCKER_SYNCD_INVM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(INVM_LIBSAI) $(PTF) $(DOCKER_SYNCD_INVM_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_BASE) SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_INVM_RPC) +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_INVM_RPC) ifeq ($(ENABLE_SYNCD_RPC),y) SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_INVM_RPC) endif diff --git a/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 b/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 index 5ad93088c7eb..7ddccc3ab29b 100755 --- a/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 +++ b/platform/innovium/docker-syncd-invm-rpc/Dockerfile.j2 @@ -9,19 +9,20 @@ debs/{{ deb }}{{' '}} {%- endfor -%} debs/ -RUN dpkg -P syncd +RUN apt-get purge -y syncd ## Pre-install the fundamental packages RUN apt-get update \ && apt-get -y install \ net-tools \ python-pip \ + python-setuptools \ build-essential \ libssl-dev \ libffi-dev \ python-dev \ - libpython2.7 \ libjansson4 \ + libyaml-dev \ wget \ cmake \ libqt5core5a \ @@ -43,9 +44,6 @@ RUN wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \ && cd .. \ && rm -fr nanomsg-1.0.0 \ && rm -f 1.0.0.tar.gz \ - && pip install cffi==1.7.0 \ - && pip install --upgrade cffi==1.7.0 \ - && pip install nnpy \ && pip install numpy \ && pip install scipy \ && pip install setuptools \ diff --git a/platform/innovium/docker-syncd-invm.mk b/platform/innovium/docker-syncd-invm.mk index f500515c56e3..56f5c35e685b 100755 --- a/platform/innovium/docker-syncd-invm.mk +++ b/platform/innovium/docker-syncd-invm.mk @@ -10,10 +10,12 @@ $(DOCKER_SYNCD_BASE)_DBG_DEPENDS += $(SYNCD_DBG) \ $(LIBSAIMETADATA_DBG) \ $(LIBSAIREDIS_DBG) -SONIC_STRETCH_DOCKERS += $(DOCKER_SYNCD_BASE) -SONIC_STRETCH_DBG_DOCKERS += $(DOCKER_SYNCD_BASE_DBG) +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SYNCD_BASE_DBG) + $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd +$(DOCKER_SYNCD_BASE)_MACHINE = innovium $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/innovium/docker-syncd-invm/Dockerfile.j2 b/platform/innovium/docker-syncd-invm/Dockerfile.j2 index 0811d044b02b..449f0d3467ae 100755 --- a/platform/innovium/docker-syncd-invm/Dockerfile.j2 +++ b/platform/innovium/docker-syncd-invm/Dockerfile.j2 @@ -1,4 +1,4 @@ -FROM docker-config-engine-stretch-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} +FROM docker-config-engine-buster-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} ARG docker_container_name @@ -15,8 +15,8 @@ debs/ # Needed for Innovium Debug Shell RUN apt-get install -y net-tools -RUN apt-get install -y libpython2.7 RUN apt-get install -y libjansson4 +RUN apt-get install -y libyaml-dev RUN dpkg -i \ {% for deb in docker_syncd_invm_debs.split(' ') -%} diff --git a/platform/innovium/rules.mk b/platform/innovium/rules.mk index 39e695575326..bef044501e5a 100755 --- a/platform/innovium/rules.mk +++ b/platform/innovium/rules.mk @@ -1,8 +1,8 @@ include $(PLATFORM_PATH)/invm-sai.mk include $(PLATFORM_PATH)/platform-modules-cel.mk -include $(PLATFORM_PATH)/platform-modules-delta.mk +#include $(PLATFORM_PATH)/platform-modules-delta.mk include $(PLATFORM_PATH)/platform-modules-wistron.mk -include $(PLATFORM_PATH)/platform-modules-netberg.mk +#include $(PLATFORM_PATH)/platform-modules-netberg.mk include $(PLATFORM_PATH)/docker-syncd-invm.mk include $(PLATFORM_PATH)/docker-syncd-invm-rpc.mk include $(PLATFORM_PATH)/one-image.mk From 4da51b07ad4ad8d11379462a3c3caa066f17ff13 Mon Sep 17 00:00:00 2001 From: oleksandrx-kolomeiets Date: Mon, 27 Mar 2023 20:32:07 +0300 Subject: [PATCH 16/59] Set owner after restoring counters folder during warmboot (#13507) Why I did it After warm reboot, show environment prints the following error: failed to import plugin show.plugins.macsec: [Errno 13] Permission denied: '/tmp/cache/macsec' How I did it Set owner back to admin after restoring counters folder. How to verify it sudo warm-reboot, then ensure show environement does not print errors. Signed-off-by: Oleksandr Kolomeiets --- files/image_config/warmboot-finalizer/finalize-warmboot.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/files/image_config/warmboot-finalizer/finalize-warmboot.sh b/files/image_config/warmboot-finalizer/finalize-warmboot.sh index 412559289026..fc1fbdad7159 100755 --- a/files/image_config/warmboot-finalizer/finalize-warmboot.sh +++ b/files/image_config/warmboot-finalizer/finalize-warmboot.sh @@ -112,6 +112,7 @@ function restore_counters_folder() cache_counters_folder="/host/counters" if [[ -d $cache_counters_folder ]]; then mv $cache_counters_folder /tmp/cache + chown -R admin:admin /tmp/cache fi } From 74695747ab432375efa4ac6ef9c0893715da502f Mon Sep 17 00:00:00 2001 From: Isabella J de Leon Date: Mon, 27 Mar 2023 14:40:30 -0700 Subject: [PATCH 17/59] [Build] Fix marvell-arm64 build redis_dump_load-1.1-py2-none-any.whl fail (#14375) #### Why I did it Fixes #9216 #### How I did it Add support for python2 redis to the sonic-slave-stretch and sonic-slave-buster Dockerfiles #### How to verify it Run build steps documented in Issue #9216 --- sonic-slave-buster/Dockerfile.j2 | 1 + sonic-slave-stretch/Dockerfile.j2 | 1 + 2 files changed, 2 insertions(+) diff --git a/sonic-slave-buster/Dockerfile.j2 b/sonic-slave-buster/Dockerfile.j2 index a0c00e5b04a1..1d0656bb78fc 100644 --- a/sonic-slave-buster/Dockerfile.j2 +++ b/sonic-slave-buster/Dockerfile.j2 @@ -550,6 +550,7 @@ RUN pip3 install "lxml==4.9.1" {%- endif %} # For sonic-platform-common testing +RUN pip2 install redis RUN pip3 install redis # For vs image build diff --git a/sonic-slave-stretch/Dockerfile.j2 b/sonic-slave-stretch/Dockerfile.j2 index 58686fe20d8c..5ccc07c464d5 100644 --- a/sonic-slave-stretch/Dockerfile.j2 +++ b/sonic-slave-stretch/Dockerfile.j2 @@ -337,6 +337,7 @@ RUN pip3 install "lxml==4.9.1" # For sonic-platform-common testing +RUN pip2 install redis RUN pip3 install redis # For vs image build From 7230b59559bd50b273af46dc8fd2f3d17c02bbbd Mon Sep 17 00:00:00 2001 From: Konstantin Vasin <126960927+k-v1@users.noreply.github.com> Date: Tue, 28 Mar 2023 00:58:44 +0300 Subject: [PATCH 18/59] [Build] fix sonic-slave empty build log (#14408) New docker versions use stderr instead of stdout to print info when build image. As a resullt we got empty log files. the fix is to redirect stderr to stdout when build sonic-slave images. --- Makefile.work | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.work b/Makefile.work index 8d3236adf350..40c73dc08978 100644 --- a/Makefile.work +++ b/Makefile.work @@ -415,7 +415,7 @@ endif endif -SPLIT_LOG = | tee +SPLIT_LOG = 2>&1 | tee DOCKER_BASE_LOG = $(SLAVE_DIR)/$(SLAVE_BASE_IMAGE)_$(SLAVE_BASE_TAG).log DOCKER_LOG = $(SLAVE_DIR)/$(SLAVE_IMAGE)_$(SLAVE_TAG).log From 4c059d8eb59c4834c454e32d251a19adb28dea75 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Mon, 27 Mar 2023 17:08:14 -0700 Subject: [PATCH 19/59] Improve sudo cat command for RO user. (#14428) Improve sudo cat command for RO user. #### Why I did it RO user can use sudo command show none syslog files. #### How I did it Improve sudo cat command for RO user. #### How to verify it Pass all UT. Manually check fixed code work correctly. #### Description for the changelog Improve sudo cat command for RO user. --- files/image_config/sudoers/sudoers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/image_config/sudoers/sudoers b/files/image_config/sudoers/sudoers index d07d0dcfbcc8..bc4c92446ed8 100644 --- a/files/image_config/sudoers/sudoers +++ b/files/image_config/sudoers/sudoers @@ -19,7 +19,7 @@ Defaults lecture_file = /etc/sudoers.lecture # Cmnd alias specification # Note: bcmcmd is dangerous for users in read only netgroups because it may operate ASIC -Cmnd_Alias READ_ONLY_CMDS = /bin/cat /var/log/syslog*, \ +Cmnd_Alias READ_ONLY_CMDS = /bin/cat /var/log/syslog, /bin/cat /var/log/syslog.1 /var/log/syslog, /bin/cat /var/log/syslog.1, \ /bin/ip netns identify [0-9]*, \ /sbin/brctl show, \ /usr/bin/docker exec snmp cat /etc/snmp/snmpd.conf, \ From 9726ec84205984d2acbe35658f2d5f1b39373c7f Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 27 Mar 2023 22:44:49 -0700 Subject: [PATCH 20/59] Always use the openssl backend of curl (#14351) Why I did it This should make sure that the openssl backend of curl is used, instead of the gnutls or nss backend, for consistency reasons. --- sonic-slave-bullseye/Dockerfile.j2 | 6 +++--- sonic-slave-buster/Dockerfile.j2 | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index a340db46185a..8bf3928a1086 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -202,7 +202,7 @@ RUN apt-get update && apt-get install -y \ libxml2-dev \ # For BFN sdk build libusb-1.0-0-dev \ - libcurl3-nss-dev \ + libcurl4-openssl-dev \ libunwind8-dev \ telnet \ libc-ares2 \ @@ -360,7 +360,7 @@ RUN apt-get update && apt-get install -y \ xsltproc \ python3-lxml \ libexpat1-dev \ - libcurl3-gnutls \ + libcurl4 \ libcjson-dev \ # For WPA supplication qtbase5-dev \ @@ -614,7 +614,7 @@ RUN apt-get install -y nodejs {%- if CROSS_BUILD_ENVIRON == "y" %} RUN apt-get install -y rsync dh-python -RUN apt-get install -y libelf-dev:$arch libdw-dev:$arch libbz2-dev:$arch liblzo2-dev:$arch libedit-dev:$arch libevent-dev:$arch libopts25-dev:$arch libssl-dev:$arch pps-tools:$arch libpam-cap:$arch libcap-dev:$arch libpam0g-dev:$arch libaudit-dev:$arch libgtk-3-dev:$arch libkrb5-dev:$arch libsystemd-dev:$arch libwrap0-dev:$arch libkrb5-dev:$arch libboost1.74-dev:$arch libboost-dev:$arch libzmq5:$arch libzmq3-dev:$arch libdaemon-dev:$arch libjansson-dev:$arch libmnl-dev:$arch libsensors5:$arch libsensors4-dev:$arch libperl-dev:$arch libmariadb-dev:$arch libmariadb-dev-compat:$arch libpci-dev:$arch libjson-c-dev:$arch libreadline-dev:$arch librtr-dev:$arch librrd-dev:$arch libnetfilter-conntrack-dev:$arch libnetfilter-conntrack3:$arch libnfnetlink-dev:$arch libnftnl-dev:$arch libldap2-dev:$arch libbind-export-dev:$arch check:$arch libboost-atomic-dev:$arch libboost-test-dev:$arch libglib2.0-dev:$arch libexplain-dev:$arch libc-ares-dev:$arch libiptc0:$arch libxtables12:$arch libatm1-dev:$arch libbpf-dev:$arch libdb-dev:$arch pkg-config:$arch libnghttp2-14:$arch librtmp1:$arch libssh2-1:$arch libcjson1:$arch libcjson-dev:$arch libcurl3-gnutls:$arch libcurl3-nss-dev:$arch libboost-thread1.74-dev:$arch libboost-thread-dev:$arch libboost-system1.74-dev:$arch libboost-system-dev:$arch libgtest-dev:$arch libgmock-dev:$arch libfido2-dev:$arch libcunit1:$arch libcunit1-dev:$arch libauparse-dev:$arch libnetsnmptrapd40:$arch qtbase5-dev:$arch libboost-log-dev:$arch libboost-filesystem-dev:$arch libboost-program-options-dev:$arch +RUN apt-get install -y libelf-dev:$arch libdw-dev:$arch libbz2-dev:$arch liblzo2-dev:$arch libedit-dev:$arch libevent-dev:$arch libopts25-dev:$arch libssl-dev:$arch pps-tools:$arch libpam-cap:$arch libcap-dev:$arch libpam0g-dev:$arch libaudit-dev:$arch libgtk-3-dev:$arch libkrb5-dev:$arch libsystemd-dev:$arch libwrap0-dev:$arch libkrb5-dev:$arch libboost1.74-dev:$arch libboost-dev:$arch libzmq5:$arch libzmq3-dev:$arch libdaemon-dev:$arch libjansson-dev:$arch libmnl-dev:$arch libsensors5:$arch libsensors4-dev:$arch libperl-dev:$arch libmariadb-dev:$arch libmariadb-dev-compat:$arch libpci-dev:$arch libjson-c-dev:$arch libreadline-dev:$arch librtr-dev:$arch librrd-dev:$arch libnetfilter-conntrack-dev:$arch libnetfilter-conntrack3:$arch libnfnetlink-dev:$arch libnftnl-dev:$arch libldap2-dev:$arch libbind-export-dev:$arch check:$arch libboost-atomic-dev:$arch libboost-test-dev:$arch libglib2.0-dev:$arch libexplain-dev:$arch libc-ares-dev:$arch libiptc0:$arch libxtables12:$arch libatm1-dev:$arch libbpf-dev:$arch libdb-dev:$arch pkg-config:$arch libnghttp2-14:$arch librtmp1:$arch libssh2-1:$arch libcjson1:$arch libcjson-dev:$arch libcurl4-openssl-dev:$arch libboost-thread1.74-dev:$arch libboost-thread-dev:$arch libboost-system1.74-dev:$arch libboost-system-dev:$arch libgtest-dev:$arch libgmock-dev:$arch libfido2-dev:$arch libcunit1:$arch libcunit1-dev:$arch libauparse-dev:$arch libnetsnmptrapd40:$arch qtbase5-dev:$arch libboost-log-dev:$arch libboost-filesystem-dev:$arch libboost-program-options-dev:$arch RUN apt-get download libgirepository1.0-dev:$arch && dpkg --force-all -i libgirepository1.0-dev* RUN PATH=/python_virtualenv/env3/bin/:$PATH pip3 install pycairo diff --git a/sonic-slave-buster/Dockerfile.j2 b/sonic-slave-buster/Dockerfile.j2 index 1d0656bb78fc..78a777946efc 100644 --- a/sonic-slave-buster/Dockerfile.j2 +++ b/sonic-slave-buster/Dockerfile.j2 @@ -204,7 +204,7 @@ RUN apt-get update && apt-get install -y \ libxml2-dev \ # For BFN sdk build libusb-1.0-0-dev \ - libcurl3-nss-dev \ + libcurl4-openssl-dev \ libunwind8-dev \ telnet \ libc-ares2 \ @@ -359,7 +359,7 @@ RUN apt-get update && apt-get install -y \ xsltproc \ python-lxml \ libexpat1-dev \ - libcurl3-gnutls \ + libcurl4 \ libcjson-dev \ # For WPA supplication qtbase5-dev \ @@ -635,7 +635,7 @@ RUN apt-get install -y nodejs {%- if CROSS_BUILD_ENVIRON == "y" %} RUN apt-get install -y rsync dh-python -RUN apt-get install -y libelf-dev:$arch libdw-dev:$arch libbz2-dev:$arch liblzo2-dev:$arch libedit-dev:$arch libevent-dev:$arch libopts25-dev:$arch libssl-dev:$arch pps-tools:$arch libpam-cap:$arch libcap-dev:$arch libpam0g-dev:$arch libaudit-dev:$arch libgtk-3-dev:$arch libkrb5-dev:$arch libsystemd-dev:$arch libwrap0-dev:$arch libkrb5-dev:$arch libboost1.67-dev:$arch libboost-dev:$arch libzmq5:$arch libzmq3-dev:$arch libdaemon-dev:$arch libjansson-dev:$arch libmnl-dev:$arch libsensors5:$arch libsensors4-dev:$arch libperl-dev:$arch libmariadb-dev:$arch libmariadb-dev-compat:$arch libpci-dev:$arch libjson-c3:$arch libjson-c-dev:$arch libreadline-dev:$arch librtr-dev:$arch librrd-dev:$arch libnetfilter-conntrack-dev:$arch libnetfilter-conntrack3:$arch libnfnetlink-dev:$arch libnftnl-dev:$arch libldap2-dev:$arch libbind-export-dev:$arch check:$arch libboost-atomic-dev:$arch libboost-test-dev:$arch libglib2.0-dev:$arch qt5-default:$arch libexplain-dev:$arch libc-ares-dev:$arch libip4tc0:$arch libip6tc0:$arch libiptc0:$arch libxtables12:$arch iptables-dev:$arch libatm1-dev:$arch libdb-dev:$arch pkg-config:$arch libnghttp2-14:$arch librtmp1:$arch libssh2-1:$arch libcjson1:$arch libcjson-dev:$arch libcurl3-gnutls:$arch libcurl3-nss-dev:$arch libboost-thread1.67-dev:$arch libboost-thread-dev:$arch libboost-system1.67-dev:$arch libboost-system-dev:$arch libgtest-dev:$arch libgmock-dev:$arch +RUN apt-get install -y libelf-dev:$arch libdw-dev:$arch libbz2-dev:$arch liblzo2-dev:$arch libedit-dev:$arch libevent-dev:$arch libopts25-dev:$arch libssl-dev:$arch pps-tools:$arch libpam-cap:$arch libcap-dev:$arch libpam0g-dev:$arch libaudit-dev:$arch libgtk-3-dev:$arch libkrb5-dev:$arch libsystemd-dev:$arch libwrap0-dev:$arch libkrb5-dev:$arch libboost1.67-dev:$arch libboost-dev:$arch libzmq5:$arch libzmq3-dev:$arch libdaemon-dev:$arch libjansson-dev:$arch libmnl-dev:$arch libsensors5:$arch libsensors4-dev:$arch libperl-dev:$arch libmariadb-dev:$arch libmariadb-dev-compat:$arch libpci-dev:$arch libjson-c3:$arch libjson-c-dev:$arch libreadline-dev:$arch librtr-dev:$arch librrd-dev:$arch libnetfilter-conntrack-dev:$arch libnetfilter-conntrack3:$arch libnfnetlink-dev:$arch libnftnl-dev:$arch libldap2-dev:$arch libbind-export-dev:$arch check:$arch libboost-atomic-dev:$arch libboost-test-dev:$arch libglib2.0-dev:$arch qt5-default:$arch libexplain-dev:$arch libc-ares-dev:$arch libip4tc0:$arch libip6tc0:$arch libiptc0:$arch libxtables12:$arch iptables-dev:$arch libatm1-dev:$arch libdb-dev:$arch pkg-config:$arch libnghttp2-14:$arch librtmp1:$arch libssh2-1:$arch libcjson1:$arch libcjson-dev:$arch libcurl4-openssl-dev:$arch libboost-thread1.67-dev:$arch libboost-thread-dev:$arch libboost-system1.67-dev:$arch libboost-system-dev:$arch libgtest-dev:$arch libgmock-dev:$arch RUN apt-get install -y -t buster-backports \ libbpf-dev:$arch From 320366ab60f27ef618698685ee137e13c4c2a5e3 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Tue, 28 Mar 2023 14:04:33 +0800 Subject: [PATCH 21/59] [Build] Fix the installation candidate not found issue when building docker-sonic-vs (#14439) Why I did it Fix the installation candidate not found issue when building docker-sonic-vs How I did it Need to run the command "apt-get update" to update the mirror indexes before installing the package gnupg How to verify it --- platform/vs/docker-sonic-vs/Dockerfile.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index 437261bbb128..4b356fa1a17a 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -8,7 +8,7 @@ RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%s ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get install -y gnupg +RUN apt-get update && apt-get install -y gnupg COPY ["sonic-dev.gpg.key", "/etc/apt/"] RUN apt-key add /etc/apt/sonic-dev.gpg.key RUN echo "deb http://packages.microsoft.com/repos/sonic-dev/ jessie main" >> /etc/apt/sources.list From 80d30daf88ea43d7dfa6841fbc695636b4c6c7b8 Mon Sep 17 00:00:00 2001 From: Konstantin Vasin <126960927+k-v1@users.noreply.github.com> Date: Wed, 29 Mar 2023 02:10:29 +0300 Subject: [PATCH 22/59] [Build] don't install rsync if vcache is disabled #14407 Why I did it We don't need to install rsync in every docker container if vcache is disabled. How I did it Install rsync in pre_run_buildinfo script only if vcache is enabled. How to verify it --- src/sonic-build-hooks/scripts/pre_run_buildinfo | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sonic-build-hooks/scripts/pre_run_buildinfo b/src/sonic-build-hooks/scripts/pre_run_buildinfo index 7a30e3541eac..10445351d35b 100755 --- a/src/sonic-build-hooks/scripts/pre_run_buildinfo +++ b/src/sonic-build-hooks/scripts/pre_run_buildinfo @@ -41,6 +41,8 @@ if [ "$ENABLE_VERSION_CONTROL_DEB" == "y" ] && [ -f $VERSION_DEB_PREFERENCE ]; t cp -f $VERSION_DEB_PREFERENCE /etc/apt/preferences.d/ fi -DISTRO=${DISTRO} apt-get update && apt-get install -y rsync +if [ ! -z "$(get_version_cache_option)" ]; then + DISTRO=${DISTRO} apt-get update && apt-get install -y rsync +fi exit 0 From 7509eb3bcdfe973b0b66aad6c85e7feb7cfcd212 Mon Sep 17 00:00:00 2001 From: Ye Jianquan Date: Wed, 29 Mar 2023 18:35:08 +0800 Subject: [PATCH 23/59] Refine testbedv2 pr template (#14371) Description for the changelog Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU. --- .../run-test-scheduler-template.yml | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.azure-pipelines/run-test-scheduler-template.yml b/.azure-pipelines/run-test-scheduler-template.yml index ad5a1b1c6ef8..dc95e6fadd5b 100644 --- a/.azure-pipelines/run-test-scheduler-template.yml +++ b/.azure-pipelines/run-test-scheduler-template.yml @@ -48,13 +48,13 @@ parameters: steps: - script: | - set -ex + set -e wget -O ./.azure-pipelines/test_plan.py https://raw.githubusercontent.com/sonic-net/sonic-mgmt/master/.azure-pipelines/test_plan.py wget -O ./.azure-pipelines/pr_test_scripts.yaml https://raw.githubusercontent.com/sonic-net/sonic-mgmt/master/.azure-pipelines/pr_test_scripts.yaml displayName: Download TestbedV2 scripts - script: | - set -ex + set -e pip install PyYAML rm -f new_test_plan_id.txt python ./.azure-pipelines/test_plan.py create -t ${{ parameters.TOPOLOGY }} -o new_test_plan_id.txt \ @@ -76,10 +76,10 @@ steps: displayName: Trigger test - script: | - set -ex + set -e echo "Lock testbed" echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com" - echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID" + echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID " # When "LOCK_TESTBED" finish, it changes into "PREPARE_TESTBED" python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state LOCK_TESTBED env: @@ -87,12 +87,12 @@ steps: displayName: Lock testbed - script: | - set -ex + set -e echo "Prepare testbed" echo "Preparing the testbed(add-topo, deploy-mg) may take 15-30 minutes. Before the testbed is ready, the progress of the test plan keeps displayed as 0, please be patient(We will improve the indication in a short time)" echo "If the progress keeps as 0 for more than 1 hour, please cancel and retry this pipeline" echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com" - echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID" + echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID " # When "PREPARE_TESTBED" finish, it changes into "EXECUTING" python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state PREPARE_TESTBED env: @@ -100,10 +100,10 @@ steps: displayName: Prepare testbed - script: | - set -ex + set -e echo "Run test" echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com" - echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID" + echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID " # When "EXECUTING" finish, it changes into "KVMDUMP", "FAILED", "CANCELLED" or "FINISHED" python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state EXECUTING env: @@ -111,10 +111,10 @@ steps: displayName: Run test - script: | - set -ex + set -e echo "KVM dump" echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com" - echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID" + echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID " # When "KVMDUMP" finish, it changes into "FAILED", "CANCELLED" or "FINISHED" python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state KVMDUMP condition: succeededOrFailed() @@ -123,7 +123,7 @@ steps: displayName: KVM dump - script: | - set -ex + set -e echo "Try to cancel test plan $TEST_PLAN_ID, cancelling finished test plan has no effect." python ./.azure-pipelines/test_plan.py cancel -i "$(TEST_PLAN_ID)" condition: always() From 6e11833a6c7ed4cabc70f119db300056a6909f2a Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 29 Mar 2023 18:39:10 +0800 Subject: [PATCH 24/59] [ci/build]: Upgrade SONiC package versions (#14430) --- .../versions-deb-bullseye | 1 + .../build-sonic-slave-bullseye/versions-py3 | 2 +- .../build-sonic-slave-buster/versions-py2 | 1 - files/build/versions/default/versions-git | 12 ++++----- files/build/versions/default/versions-mirror | 24 +++++++++--------- .../versions-deb-bullseye | 2 -- .../docker-base-buster/versions-deb-buster | 2 -- .../docker-fpm-frr/versions-deb-bullseye | 1 + .../dockers/docker-nat/versions-deb-buster | 1 + .../dockers/docker-sflow/versions-deb-buster | 1 + .../versions-deb-buster | 1 + .../docker-sonic-mgmt-framework/versions-py3 | 2 +- .../docker-sonic-vs/versions-deb-bullseye | 1 + .../dockers/docker-sonic-vs/versions-py3 | 2 +- .../versions-deb-bullseye | 25 +++++++++---------- .../versions-deb-bullseye-arm64 | 1 + .../versions-deb-bullseye-armhf | 1 + .../sonic-slave-buster/versions-deb-buster | 5 ++-- .../dockers/sonic-slave-buster/versions-py2 | 1 + .../versions/host-image/versions-deb-bullseye | 2 +- files/build/versions/host-image/versions-py3 | 2 +- 21 files changed, 46 insertions(+), 44 deletions(-) diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index cd889935f892..ab539ea0fecf 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -40,6 +40,7 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 index c3f7dc2a8994..f9dfba1065bb 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 @@ -5,7 +5,7 @@ colorful==0.5.5 docker==6.0.1 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.4 +filelock==3.10.7 ijson==2.6.1 ipaddress==1.0.23 jsondiff==2.0.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2 b/files/build/versions/build/build-sonic-slave-buster/versions-py2 index ecfc5d8d7bd1..e78665e7aba2 100644 --- a/files/build/versions/build/build-sonic-slave-buster/versions-py2 +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2 @@ -6,6 +6,5 @@ natsort==6.2.1 netaddr==0.8.0 pyang==2.5.3 pyangbind==0.6.0 -redis==3.5.3 thrift==0.11.0 zipp==1.2.0 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index d47cca8fde7d..1f2427b1cf17 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==d9717259ee7ecbe8de97b75a264f5edc18224ab2 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==ae46c3cecda20def1a9005e3893bfb89efca736e https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==59fcde0895855b88961d4a28be569d62d0948808 -https://github.com/FreeRADIUS/freeradius-server.git==917430762576dc3afadbf1ddb28721a96a3abb32 +https://github.com/flashrom/flashrom.git==73e47091103891f2e3c12c5c51840faf9b57e436 +https://github.com/FreeRADIUS/freeradius-server.git==11dd181ec1dcfad8ce3d34f8ed0406a056a03880 https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,11 +14,11 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==a6b576455714e250c40ee7925f76e6e717e6c9c0 -https://github.com/sflow/sflowtool==7299efd21c8a0b09ae48616bd53e9e38c99a5ed2 +https://github.com/sflow/host-sflow==ad7cd7cf586339ebe5cb17ea3c1f2c0f488454ad +https://github.com/sflow/sflowtool==4ce1223bb4c2cd0cbb1dd688dc0914561fcbb6c4 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d https://salsa.debian.org/kernel-team/ethtool/==68409b09a969b49a07fbf3930409f155b953434b https://salsa.debian.org/kernel-team/initramfs-tools.git==193dfbb7929e518976f89f6c8dd9201982e56f80 https://salsa.debian.org/sk-guest/monit.git==c9da7ebb1f35dfba17b50b5969a6e75e29cbec0d -https://salsa.debian.org/ssh-team/openssh.git==48770216530d8a0a57f5f1d7cc60addd67d1b549 +https://salsa.debian.org/ssh-team/openssh.git==49836a13815efec2773fbd76d34189424a26fb20 diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index bdb55bdb047c..86273e4e48b2 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230325T000059Z -debian-security==20230325T000108Z -download.docker.com_linux_debian_dists_bullseye==2023-03-23T17:41:42Z -download.docker.com_linux_debian_dists_buster==2023-03-23T17:41:43Z +debian==20230328T000218Z +debian-security==20230328T000222Z +download.docker.com_linux_debian_dists_bullseye==2023-03-28T10:34:58Z +download.docker.com_linux_debian_dists_buster==2023-03-28T10:34:59Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230325T000108Z_dists_bullseye-security==2023-03-24T22:05:47Z -packages.trafficmanager.net_snapshot_debian-security_20230325T000108Z_dists_buster_updates==2023-03-24T22:05:47Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye-backports==2023-03-24T20:32:21Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_bullseye-updates==2023-03-24T20:32:21Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster-backports==2023-03-24T20:32:21Z -packages.trafficmanager.net_snapshot_debian_20230325T000059Z_dists_buster-updates==2023-03-24T20:32:21Z +packages.trafficmanager.net_snapshot_debian-security_20230328T000222Z_dists_bullseye-security==2023-03-27T22:32:27Z +packages.trafficmanager.net_snapshot_debian-security_20230328T000222Z_dists_buster_updates==2023-03-27T22:32:27Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye-backports==2023-03-27T20:21:20Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye-updates==2023-03-27T20:21:20Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster-backports==2023-03-27T20:21:20Z +packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster-updates==2023-03-27T20:21:20Z diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye index 474ef737c501..3f43b7484bfa 100644 --- a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye @@ -36,7 +36,6 @@ libnorm1==1.5.9+dfsg-2 libonig5==6.9.6-1.1 libperl5.32==5.32.1-4+deb11u2 libpgm-5.3-0==5.3.128~dfsg-2 -libpopt0==1.18-2 libprocps8==2:3.3.17-5 libpsl5==0.21.0-1.2 libpython3-stdlib==3.9.2-3 @@ -71,7 +70,6 @@ python3.9==3.9.2-1 python3.9-minimal==3.9.2-1 readline-common==8.1-1 redis-tools==5:6.0.16-1+deb11u2 -rsync==3.2.3-4+deb11u1 rsyslog==8.2302.0-1~bpo11+1 socat==1.7.4.1-3 symcrypt-openssl==0.1 diff --git a/files/build/versions/dockers/docker-base-buster/versions-deb-buster b/files/build/versions/dockers/docker-base-buster/versions-deb-buster index 1b2a7d3d3cec..1cd4e27c9aa7 100644 --- a/files/build/versions/dockers/docker-base-buster/versions-deb-buster +++ b/files/build/versions/dockers/docker-base-buster/versions-deb-buster @@ -30,7 +30,6 @@ libnorm1==1.5.8+dfsg2-1 libonig5==6.9.1-1 libperl5.28==5.28.1-6+deb10u1 libpgm-5.2-0==5.2.122~dfsg-3 -libpopt0==1.16-12 libprocps7==2:3.3.15-2 libpsl5==0.20.2-2 libpython3-stdlib==3.7.3-1 @@ -63,7 +62,6 @@ python3.7==3.7.3-2+deb10u4 python3.7-minimal==3.7.3-2+deb10u4 readline-common==7.0-5 redis-tools==5:6.0.6-1~bpo10+1 -rsync==3.1.3-6 rsyslog==8.1901.0-1+deb10u2 socat==1.7.4.1-3 vim-common==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye index d0577735bda8..44bc1b792dd9 100644 --- a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye @@ -22,6 +22,7 @@ libipt2==2.0.3-1 libjson-c5==0.15-2 libmpfr6==4.1.0-3 libpci3==1:3.7.0-5 +libpopt0==1.18-2 libsensors-config==1:3.6.0-7 libsensors5==1:3.6.0-7 libsnmp-base==5.9+dfsg-4+deb11u1 diff --git a/files/build/versions/dockers/docker-nat/versions-deb-buster b/files/build/versions/dockers/docker-nat/versions-deb-buster index f6d893787f2b..c8f6289c9793 100644 --- a/files/build/versions/dockers/docker-nat/versions-deb-buster +++ b/files/build/versions/dockers/docker-nat/versions-deb-buster @@ -17,6 +17,7 @@ libiptc0==1.8.2-4 libnetfilter-conntrack3==1.0.7-1 libnfnetlink0==1.0.1-3+b1 libnftnl11==1.1.2-2 +libpopt0==1.16-12 libswsscommon-dbgsym==1.0.0 libunwind8==1.2.1-10~deb10u1 openssh-client==1:7.9p1-10+deb10u2 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-buster b/files/build/versions/dockers/docker-sflow/versions-deb-buster index 91f65cdcaf85..da149bd692e3 100644 --- a/files/build/versions/dockers/docker-sflow/versions-deb-buster +++ b/files/build/versions/dockers/docker-sflow/versions-deb-buster @@ -10,6 +10,7 @@ libglib2.0-0==2.58.3-2+deb10u4 libgpm2==1.20.7-5 libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 libipt2==2.0-2 +libpopt0==1.16-12 libswsscommon-dbgsym==1.0.0 libunwind8==1.2.1-10~deb10u1 openssh-client==1:7.9p1-10+deb10u2 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster index 08c3f8e03116..7d1b8c3c1213 100644 --- a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster @@ -12,6 +12,7 @@ libgpm2==1.20.7-5 libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 libicu63==63.1-6+deb10u3 libipt2==2.0-2 +libpopt0==1.16-12 libswsscommon-dbgsym==1.0.0 libunwind8==1.2.1-10~deb10u1 libxml2==2.9.4+dfsg1-7+deb10u5 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 index 692ebf360062..1cf0b76d5c2e 100644 --- a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 @@ -5,7 +5,7 @@ click==8.1.3 clickclick==20.10.2 connexion==2.7.0 flask==2.2.3 -grpcio==1.51.3 +grpcio==1.53.0 grpcio-tools==1.20.0 idna==3.4 importlib-resources==5.12.0 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-vs/versions-deb-bullseye index 04c7c081a5d1..e18588a830f2 100644 --- a/files/build/versions/dockers/docker-sonic-vs/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-sonic-vs/versions-deb-bullseye @@ -80,6 +80,7 @@ libpcap0.8==1.10.0-2 libpcre2-16-0==10.36-2+deb11u1 libpgm-dev==5.3.128~dfsg-2 libpng16-16==1.6.37-3 +libpopt0==1.18-2 libpython2-stdlib==2.7.18-3 libpython2.7-minimal==2.7.18-8 libpython2.7-stdlib==2.7.18-8 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py3 b/files/build/versions/dockers/docker-sonic-vs/versions-py3 index 7c3cffb14ff0..637d918d2088 100644 --- a/files/build/versions/dockers/docker-sonic-vs/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py3 @@ -9,7 +9,7 @@ dbus-python==1.3.2 docker==6.0.1 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.4 +filelock==3.10.7 idna==3.4 importlib-metadata==6.1.0 jsonpatch==1.32 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye index b8cd470f371d..ecabbf7de5c0 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -95,7 +95,7 @@ docbook-utils==0.6.14-3.4 docbook-xml==4.5-9 docker-ce==5:20.10.14~3-0~debian-bullseye docker-ce-cli==5:20.10.14~3-0~debian-bullseye -docker-ce-rootless-extras==5:23.0.1-1~debian.11~bullseye +docker-ce-rootless-extras==5:23.0.2-1~debian.11~bullseye docker-scan-plugin==0.23.0~debian-bullseye docutils-common==0.16+dfsg-4 dosfstools==4.2-1 @@ -434,9 +434,8 @@ libcunit1==2.1-3-dfsg-2.3 libcunit1-dev==2.1-3-dfsg-2.3 libcups2==2.3.3op2-3+deb11u2 libcurl3-gnutls==7.74.0-1.3+deb11u7 -libcurl3-nss==7.74.0-1.3+deb11u7 libcurl4==7.74.0-1.3+deb11u7 -libcurl4-nss-dev==7.74.0-1.3+deb11u7 +libcurl4-openssl-dev==7.74.0-1.3+deb11u7 libdaemon-dev==0.14-7.1 libdaemon0==0.14-7.1 libdata-dpath-perl==0.58-1 @@ -1290,16 +1289,16 @@ libxdamage1==1:1.1.5-2 libxdelta2==1.1.3-9.3 libxdmcp-dev==1:1.1.2-3 libxdmcp6==1:1.1.2-3 -libxencall1==4.14.5+86-g1c354767d5-1 -libxendevicemodel1==4.14.5+86-g1c354767d5-1 -libxenevtchn1==4.14.5+86-g1c354767d5-1 -libxenforeignmemory1==4.14.5+86-g1c354767d5-1 -libxengnttab1==4.14.5+86-g1c354767d5-1 -libxenhypfs1==4.14.5+86-g1c354767d5-1 -libxenmisc4.14==4.14.5+86-g1c354767d5-1 -libxenstore3.0==4.14.5+86-g1c354767d5-1 -libxentoolcore1==4.14.5+86-g1c354767d5-1 -libxentoollog1==4.14.5+86-g1c354767d5-1 +libxencall1==4.14.5+94-ge49571868d-1 +libxendevicemodel1==4.14.5+94-ge49571868d-1 +libxenevtchn1==4.14.5+94-ge49571868d-1 +libxenforeignmemory1==4.14.5+94-ge49571868d-1 +libxengnttab1==4.14.5+94-ge49571868d-1 +libxenhypfs1==4.14.5+94-ge49571868d-1 +libxenmisc4.14==4.14.5+94-ge49571868d-1 +libxenstore3.0==4.14.5+94-ge49571868d-1 +libxentoolcore1==4.14.5+94-ge49571868d-1 +libxentoollog1==4.14.5+94-ge49571868d-1 libxerces2-java==2.12.1-1 libxext-dev==2:1.3.3-1.1 libxext6==2:1.3.3-1.1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 index 29fe1b59d419..818757a31d54 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 @@ -20,3 +20,4 @@ libxslt1-dev==1.1.34-4+deb11u1 linux-headers-5.10.0-21-arm64==5.10.162-1 linux-headers-arm64==5.10.162-1 nodejs==14.21.3-deb-1nodesource1 +tzdata==2021a-1+deb11u9 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf index 567564a273f4..a067557eef88 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -11,3 +11,4 @@ linux-headers-5.10.0-21-armmp==5.10.162-1 linux-headers-armmp==5.10.162-1 nasm==2.15.05-1 nodejs==14.21.3-deb-1nodesource1 +tzdata==2021a-1+deb11u9 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index 1b9c9cb338cc..75a29b904310 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -93,7 +93,7 @@ docbook-utils==0.6.14-3.3 docbook-xml==4.5-8 docker-ce==5:20.10.21~3-0~debian-buster docker-ce-cli==5:20.10.21~3-0~debian-buster -docker-ce-rootless-extras==5:23.0.1-1~debian.10~buster +docker-ce-rootless-extras==5:23.0.2-1~debian.10~buster docker-scan-plugin==0.23.0~debian-buster docutils-common==0.14+dfsg-4 docutils-doc==0.14+dfsg-4 @@ -417,9 +417,8 @@ libcups2==2.2.10-6+deb10u6 libcupsfilters1==1.21.6-5 libcupsimage2==2.2.10-6+deb10u6 libcurl3-gnutls==7.64.0-4+deb10u5 -libcurl3-nss==7.64.0-4+deb10u5 libcurl4==7.64.0-4+deb10u5 -libcurl4-nss-dev==7.64.0-4+deb10u5 +libcurl4-openssl-dev==7.64.0-4+deb10u5 libdaemon-dev==0.14-7 libdaemon0==0.14-7 libdata-dump-perl==1.23-1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py2 b/files/build/versions/dockers/sonic-slave-buster/versions-py2 index a52d8d0af625..b981e77dd5db 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-py2 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py2 @@ -74,6 +74,7 @@ pytest-runner==4.4 pytz==2019.1 pyxdg==0.25 pyyaml==5.4.1 +redis==3.5.3 requests==2.21.0 roman==2.0.0 scandir==1.9.0 diff --git a/files/build/versions/host-image/versions-deb-bullseye b/files/build/versions/host-image/versions-deb-bullseye index da6f50483aee..344a24f79b72 100644 --- a/files/build/versions/host-image/versions-deb-bullseye +++ b/files/build/versions/host-image/versions-deb-bullseye @@ -299,7 +299,6 @@ python3.9-minimal==3.9.2-1 rasdaemon==0.6.6-2 readline-common==8.1-1 resolvconf==1.87 -rsync==3.2.3-4+deb11u1 rsyslog==8.2302.0-1~bpo11+1 runit-helper==2.10.3 sbsigntool==0.9.2-2 @@ -327,6 +326,7 @@ systemd-sysv==247.3-7+deb11u1 tcpdump==4.99.0-2+deb11u1 tcptraceroute==1.5beta7+debian-4.1+b1 traceroute==1:2.1.0-2+b1 +tzdata==2021a-1+deb11u9 u-boot-tools==2021.01+dfsg-5 ucf==3.0043 udev==247.3-7+deb11u1 diff --git a/files/build/versions/host-image/versions-py3 b/files/build/versions/host-image/versions-py3 index 32763b8d9b0c..89f500903f2b 100644 --- a/files/build/versions/host-image/versions-py3 +++ b/files/build/versions/host-image/versions-py3 @@ -14,7 +14,7 @@ dbus-python==1.2.16 docker==5.0.3 docker-image-py==0.1.12 enlighten==1.11.2 -filelock==3.10.4 +filelock==3.10.7 grpcio==1.39.0 grpcio-tools==1.39.0 idna==3.4 From 253ff6685d2e038561420838a8ff8a194390e68c Mon Sep 17 00:00:00 2001 From: jcaiMR <111116206+jcaiMR@users.noreply.github.com> Date: Wed, 29 Mar 2023 23:13:29 +0800 Subject: [PATCH 25/59] advance dhcprelay to 67a3bdf (#14455) Why I did it advnace dhcprelay to latest version 67a3bdf12e7d24260bf114c46da033e2be5f57cd show counters wrong cli output fixed [vivekrnv] --- src/dhcprelay | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dhcprelay b/src/dhcprelay index 5b3eea1899eb..67a3bdf12e7d 160000 --- a/src/dhcprelay +++ b/src/dhcprelay @@ -1 +1 @@ -Subproject commit 5b3eea1899ebf8f9ced19d4641ae3beb9903fd42 +Subproject commit 67a3bdf12e7d24260bf114c46da033e2be5f57cd From a8f8ea3b505d2659fa4c20f1ca9550a317c93ea2 Mon Sep 17 00:00:00 2001 From: anamehra <54692434+anamehra@users.noreply.github.com> Date: Wed, 29 Mar 2023 09:53:32 -0700 Subject: [PATCH 26/59] chassis-packet: resolve the missing static routes (#14230) arp_update should resolve the missing arp/ndp static route entries. Added code to check for missing entries and try ping to resolve the missing entry. Why I did it Fixes #14179 chassis-packet: missing arp entries for static routes causing high orchagent cpu usage It is observed that some sonic-mgmt test case calls sonic-clear arp, which clears the static arp entries as well. Orchagent or arp_update process does not try to resolve the missing arp entries after clear. How I did it arp_update should resolve the missing arp/ndp static route entries. Added code to check for missing entries and try ping if any found to resolve it. How to verify it After boot or config reload, check ipv4 and ipv4 neigh entries to make sure all static route entries are present manual validation: Use sonic-clear arp and sonic-clear ndp to clear all neighbor entries run arp_update Check for neigh entries. All entries should be present. Signed-off-by: anamehra --- files/build_templates/arp_update_vars.j2 | 3 ++- files/scripts/arp_update | 27 +++++++++++++++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/files/build_templates/arp_update_vars.j2 b/files/build_templates/arp_update_vars.j2 index 91992e781ac0..9f4ba4a42050 100644 --- a/files/build_templates/arp_update_vars.j2 +++ b/files/build_templates/arp_update_vars.j2 @@ -4,5 +4,6 @@ "pc_interface" : "{% for (name, prefix) in PORTCHANNEL_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan_sub_interface": "{% for (name, prefix) in VLAN_SUB_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan" : "{% if VLAN %}{{ VLAN.keys() | join(' ') }}{% endif %}", - "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}" + "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}", + "static_route_ifnames": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['ifname'].split(',') | join(' ') + " " }}{%- endif -%}{% endfor %}{% endif %}" } diff --git a/files/scripts/arp_update b/files/scripts/arp_update index b686e1a93e24..2725f034668b 100755 --- a/files/scripts/arp_update +++ b/files/scripts/arp_update @@ -14,13 +14,16 @@ while /bin/true; do ARP_UPDATE_VARS=$(sonic-cfggen -d -t ${ARP_UPDATE_VARS_FILE}) SWITCH_TYPE=$(echo $ARP_UPDATE_VARS | jq -r '.switch_type') if [[ "$SWITCH_TYPE" == "chassis-packet" ]]; then - STATIC_ROUTE_NEXTHOPS=$(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops') + # Get array of Nexthops and ifnames. Nexthops and ifnames are mapped one to one + STATIC_ROUTE_NEXTHOPS=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops')) + STATIC_ROUTE_IFNAMES=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_ifnames')) # on supervisor/rp exit the script gracefully - if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]]; then + if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]] || [[ -z "$STATIC_ROUTE_IFNAMES" ]]; then logger "arp_update: exiting as no static route in packet based chassis" exit 0 fi - for nexthop in $STATIC_ROUTE_NEXTHOPS; do + for i in ${!STATIC_ROUTE_NEXTHOPS[@]}; do + nexthop="${STATIC_ROUTE_NEXTHOPS[i]}" if [[ $nexthop == *"."* ]]; then neigh_state=( $(ip -4 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping @@ -28,11 +31,19 @@ while /bin/true; do neigh_state=( $(ip -6 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping6 fi - - if [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then - pingcmd="timeout 0.2 $ping_prefix -I ${neigh_state[0]} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" - eval $pingcmd - logger "arp_update: sttaic route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" + if [[ -z "${neigh_state}" ]] || [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then + interface="${STATIC_ROUTE_IFNAMES[i]}" + if [[ -z "$interface" ]]; then + # should never be here, handling just in case + logger "ERR: arp_update: missing interface entry for static route $nexthop" + interface=${neigh_state[0]} + fi + intf_up=$(ip link show $interface | grep "state UP") + if [[ -n "$intf_up" ]]; then + pingcmd="timeout 0.2 $ping_prefix -I ${interface} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" + eval $pingcmd + logger "arp_update: static route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" + fi fi done From 760c06ecba3be9b306a0c9ab1e030b52582ecc58 Mon Sep 17 00:00:00 2001 From: bingwang-ms <66248323+bingwang-ms@users.noreply.github.com> Date: Wed, 29 Mar 2023 18:24:31 -0700 Subject: [PATCH 27/59] Update check of IP_TYPE from ACL Yang model (#13810) Why I did it This PR is to update the check of IP_TYPE from sonic-acl.yang. It's because if the ACL rule is added by loading a json file with acl-loader, there is no IP_TYPE for ACL rule. If such rule exists in ACL_RULE table, the GCU (generic config updater) refuses to update any ACL rules because the existing one is invalid. This PR updates the yang model for ACL. If the IP_TYPE leaf doesn't exist, then we don't check the field. How I did it Accept the rule if IP_TYPE is absent. How to verify it The change is verified by UT. --- .../tests/yang_model_tests/tests/acl.json | 3 ++ .../yang_model_tests/tests_config/acl.json | 53 +++++++++++++++++++ .../yang-templates/sonic-acl.yang.j2 | 8 +-- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json b/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json index b6a7e5b213a6..0de357f5b167 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json @@ -31,6 +31,9 @@ "eStrKey" : "When", "eStr": ["IP_TYPE"] }, + "ACL_RULE_WITHOUT_IP_TYPE": { + "desc": "Configure ACL_RULE without IP_TYPE." + }, "ACL_RULE_ARP_TYPE_DST_IPV6_MISMATCH": { "desc": "Configure IP_TYPE as ARP and DST_IPV6 in ACL_RULE.", "eStrKey" : "When", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json index dee86577e68e..7decf89871bd 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json @@ -158,6 +158,59 @@ } } }, + "ACL_RULE_WITHOUT_IP_TYPE": { + "sonic-acl:sonic-acl": { + "sonic-acl:ACL_RULE": { + "ACL_RULE_LIST": [ + { + "ACL_TABLE_NAME": "NO-NSW-PACL-V4", + "PACKET_ACTION": "FORWARD", + "PRIORITY": 999980, + "RULE_NAME": "Rule_20", + "SRC_IPV6": "2001::1/64" + } + ] + }, + "sonic-acl:ACL_TABLE": { + "ACL_TABLE_LIST": [ + { + "ACL_TABLE_NAME": "NO-NSW-PACL-V4", + "policy_desc": "Filter IPv4", + "ports": [ + "Ethernet0", + "Ethernet1" + ], + "stage": "EGRESS", + "type": "L3" + } + ] + } + }, + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "0,1,2,3", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + }, + { + "admin_status": "up", + "alias": "eth1", + "description": "Ethernet1", + "lanes": "4,5,6,7", + "mtu": 9000, + "name": "Ethernet1", + "speed": 25000 + } + ] + } + } + }, "ACL_RULE_UNDEFINED_PACKET_ACTION": { "sonic-acl:sonic-acl": { "sonic-acl:ACL_RULE": { diff --git a/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 b/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 index 43250a033078..c2a8a48dcd12 100644 --- a/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 +++ b/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 @@ -106,7 +106,7 @@ module sonic-acl { } } case ip4_prefix { - when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV4' or .='IPv4ANY' or .='ARP'])"; + when "not(IP_TYPE) or boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV4' or .='IPv4ANY' or .='ARP'])"; leaf SRC_IP { type inet:ipv4-prefix; } @@ -117,7 +117,7 @@ module sonic-acl { } case ip6_prefix { - when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV6' or .='IPv6ANY'])"; + when "not(IP_TYPE) or boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV6' or .='IPv6ANY'])"; leaf SRC_IPV6 { type inet:ipv6-prefix; } @@ -199,7 +199,7 @@ module sonic-acl { choice icmp { case icmp4 { - when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV4' or .='IPv4ANY' or .='ARP'])"; + when "not(IP_TYPE) or boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV4' or .='IPv4ANY' or .='ARP'])"; leaf ICMP_TYPE { type uint8 { range 1..44; @@ -214,7 +214,7 @@ module sonic-acl { } case icmp6 { - when "boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV6' or .='IPv6ANY'])"; + when "not(IP_TYPE) or boolean(IP_TYPE[.='ANY' or .='IP' or .='IPV6' or .='IPv6ANY'])"; leaf ICMPV6_TYPE { type uint8 { range 1..44; From 3d1733bc40aba3cd7891ef5acbf4856fd29be8b3 Mon Sep 17 00:00:00 2001 From: StormLiangMS <89824293+StormLiangMS@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:52:32 +0800 Subject: [PATCH 28/59] Advance submodule sonic-utilities to 832ef9c4 (#14445) Why I did it 832ef9c4 - Fix bug in GCU vlanintf_validator ([Bcm SAI] ugprade Broadcom SAI to version 3.3.5.4m-1 #2765) (5 minutes ago) [jingwenxie] 53f611b7 - Revert "Convert IPv6 addresses to lowercase in apply-patch (Add Pegatron project to branch 201807 #2299)" (Add note for running out of disk space in /var/lib/docker to README.md #2758) (20 hours ago) [jingwenxie] 79a21cef - Revert frr route check ([mlnx] fix url inconsistency in fw.mk #2761) (8 minutes ago) [StormLiangMS] 824680ed - Resolved rc!=0 problem by replacing fgrep with awk. Added ipv4 filtering to get only v4 peers in case of show ip bgp neighbors (Improve eeprom access reliability #2756) (30 hours ago) [saurabh17g] 10f31ea6 - Revert "Replace pickle by json (Add autoneg to 7170-Q59S20 #2636)" ([hostcfgd] Default value of fallthrough for authentication set to be False. #2746) (7 days ago) [Mai Bui] 05fa7513 - Fix the show interface counters throwing exception on device with no external interfaces ([docker-platform-monitor]: Add smartmontools 6.6-1 #2703) (11 days ago) [abdosi] f27dea0c - [route_check] remove check-frr_patch mock ([minigraph]: Mark both ERSPAN and ERSPANv6 as mirror ACL tables #2732) (11 days ago) [Stepan Blyshchak] 2d95529d - Revert "Update load minigraph to load backend acl (mlnx msn2010: default config_db.json generation with sonic-cfggen is not working #2236)" (swss stretch update broke restore_neighbors.py for neigh service #2735) (12 days ago) [Neetha John] c869c970 - (master) Update the ref guide to reflect the vlan brief output ([teamd] update teamd docker to stretch and fix teamd_init failure #2731) (2 weeks ago) [Vivek] 76457141 - Fix fast-reboot DB migration ([teamd]: update teamd docker to stretch #2734) (2 weeks ago) [Aryeh Feigin] f7f783bc - Enhance the logic to wait for all buffer tables to be removed in _clear_qos ([sfputil] Not able to read out values of voltage/temp/power on some cables #2720) (2 weeks ago) [Stephen Sun] e6179afa - Remove timer from FAST_REBOOT STATE_DB entry and use finalizer (Rollback kernel submodule update. #2621) (3 weeks ago) [Aryeh Feigin] ff688323 - [route_check] fix IPv6 address handling ([docker pmon] install fancontrol & sensord #2722) (3 weeks ago) [Stepan Blyshchak] 7a604c51 - update fast-reboot ([201811][sairedis][swss] advance sub module head of sairedis and swss #2728) (3 weeks ago) [jhli-cisco] 9f83ace9 - [GCU] Add vlanintf-validator (Revert "[device/celestica] blacklist gpio_ich kernel module on haliburton" #2697) (3 weeks ago) [jingwenxie] 338d1c05 - Check SONiC dependencies before installation. ([sonic-slave]: Add iproute2 dependencies in stretch docker #2716) (3 weeks ago) [Liu Shilong] 64d2efd2 - Improve show acl commands ([sonic-utilities] update submodule #2667) (3 weeks ago) [bingwang-ms] 2ef5b31e - [GCU] Add PFC_WD RDMA validator ([sub module] advance sonic-utilities sub module for 201811 branch #2619) (3 weeks ago) [isabelmsft] c7aa8416 - [show][muxcable] increase timeout for displaying HW_STATUS (Fixing get_transceiver_change_event #2712) (3 weeks ago) [vdahiya12] 2fc2b826 - YANG validation for ConfigDB Updates: MIRROR_SESSION use case ([mellanox] Update SDK to 4.3.0132 #2430) (3 weeks ago) [isabelmsft] e16bdaae - Fix non-zero status exit on non secure boot system ([service] add warmboot finializer service #2715) (3 weeks ago) [kellyyeh] 90d70152 - [route_check] implement a check for FRR routes not marked offloaded (Feature to run an option platform specific script on the first boot #2531) (3 weeks ago) [Stepan Blyshchak] c2bc150a - [warm/fast-reboot] Backup logs from tmpfs to disk during fast/warm shutdown ([swss]: update swss docker to stretch #2714) (3 weeks ago) [Vaibhav Hemant Dixit] a015834d - [db_migrator] Add missing attribute 'weight' to route entries in APPL DB ([device/celestica] blacklist gpio_ich kernel module on seastone #2691) (4 weeks ago) [Vaibhav Hemant Dixit] cd519aac - [ci] Fix pipeline issue caused by sonic-slave-* change. ([201803] Modify Debian apt repos to reflect changes made by maintainers #2709) (4 weeks ago) [Liu Shilong] 2680e6f3 - [dhcp_relay] Fix dhcp_relay restart error while add/del vlan ([thrift] add a patch to revert THRIFT-3650 #2688) (4 weeks ago) [Yaqiang Zhu] How I did it How to verify it --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index b81734289b7c..832ef9c4c50e 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit b81734289b7ca361b365cbf1c845d31b0a81657e +Subproject commit 832ef9c4c50e8cd3c0c745b34dac39280ada319b From 1ba1892c73dfc9225d1c83cb3931c2b05504df0d Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Thu, 30 Mar 2023 23:10:34 +0800 Subject: [PATCH 29/59] Pin mmh3 package version in sonic-slave-stretch docker (#14463) Why I did it mmh3's new version 3.1.0 breaks pipeline build. bullseye/buster/jessie pined the version to 2.5.1 How I did it Pin mmh3's version as other dists. How to verify it --- sonic-slave-stretch/Dockerfile.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonic-slave-stretch/Dockerfile.j2 b/sonic-slave-stretch/Dockerfile.j2 index 5ccc07c464d5..ac37e6b4eb5c 100644 --- a/sonic-slave-stretch/Dockerfile.j2 +++ b/sonic-slave-stretch/Dockerfile.j2 @@ -356,7 +356,7 @@ RUN pip2 install Pympler==0.8 RUN pip3 install pyang==2.4.0 # For mgmt-framework build -RUN pip2 install mmh3 +RUN pip2 install mmh3==2.5.1 # Install dependencies for isc-dhcp-relay build RUN apt-get -y build-dep isc-dhcp From 284392354926657191cd320dcc862282a75b54aa Mon Sep 17 00:00:00 2001 From: kellyyeh <42761586+kellyyeh@users.noreply.github.com> Date: Thu, 30 Mar 2023 08:32:56 -0700 Subject: [PATCH 30/59] Add sonic-dhcpmon as a submodule (#14285) Why I did it Add sonic-dhcpmon as a submodule How to verify it Tested dhcpmon on dualtor and single tor --- .gitmodules | 3 + rules/dhcpmon.dep | 5 +- src/dhcpmon | 1 + src/dhcpmon/.gitignore | 5 - src/dhcpmon/Makefile | 45 -- src/dhcpmon/debian/changelog | 5 - src/dhcpmon/debian/compat | 1 - src/dhcpmon/debian/control | 14 - src/dhcpmon/debian/rules | 9 - src/dhcpmon/objects.mk | 4 - src/dhcpmon/src/dhcp_device.cpp | 869 -------------------------------- src/dhcpmon/src/dhcp_device.h | 197 -------- src/dhcpmon/src/dhcp_devman.cpp | 226 --------- src/dhcpmon/src/dhcp_devman.h | 132 ----- src/dhcpmon/src/dhcp_mon.cpp | 285 ----------- src/dhcpmon/src/dhcp_mon.h | 55 -- src/dhcpmon/src/main.cpp | 191 ------- src/dhcpmon/src/subdir.mk | 29 -- 18 files changed, 7 insertions(+), 2069 deletions(-) create mode 160000 src/dhcpmon delete mode 100644 src/dhcpmon/.gitignore delete mode 100644 src/dhcpmon/Makefile delete mode 100644 src/dhcpmon/debian/changelog delete mode 100644 src/dhcpmon/debian/compat delete mode 100644 src/dhcpmon/debian/control delete mode 100755 src/dhcpmon/debian/rules delete mode 100644 src/dhcpmon/objects.mk delete mode 100644 src/dhcpmon/src/dhcp_device.cpp delete mode 100644 src/dhcpmon/src/dhcp_device.h delete mode 100644 src/dhcpmon/src/dhcp_devman.cpp delete mode 100644 src/dhcpmon/src/dhcp_devman.h delete mode 100644 src/dhcpmon/src/dhcp_mon.cpp delete mode 100644 src/dhcpmon/src/dhcp_mon.h delete mode 100644 src/dhcpmon/src/main.cpp delete mode 100644 src/dhcpmon/src/subdir.mk diff --git a/.gitmodules b/.gitmodules index b2fe3c4800b5..2715540c1f90 100644 --- a/.gitmodules +++ b/.gitmodules @@ -112,3 +112,6 @@ [submodule "src/sonic-genl-packet"] path = src/sonic-genl-packet url = https://github.com/sonic-net/sonic-genl-packet +[submodule "src/dhcpmon"] + path = src/dhcpmon + url = https://github.com/sonic-net/sonic-dhcpmon.git diff --git a/rules/dhcpmon.dep b/rules/dhcpmon.dep index cd8a410a8e95..c6ce3c593722 100644 --- a/rules/dhcpmon.dep +++ b/rules/dhcpmon.dep @@ -2,9 +2,10 @@ SPATH := $($(SONIC_DHCPMON)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/dhcpmon.mk rules/dhcpmon.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) -DEP_FILES += $(shell git ls-files $(SPATH)) +SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) $(SONIC_DHCPMON)_CACHE_MODE := GIT_CONTENT_SHA $(SONIC_DHCPMON)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(SONIC_DHCPMON)_DEP_FILES := $(DEP_FILES) - +$(SONIC_DHCPMON)_SMDEP_FILES := $(SMDEP_FILES) +$(SONIC_DHCPMON)_SMDEP_PATHS := $(SPATH) diff --git a/src/dhcpmon b/src/dhcpmon new file mode 160000 index 000000000000..24364a3c897d --- /dev/null +++ b/src/dhcpmon @@ -0,0 +1 @@ +Subproject commit 24364a3c897df22f51e9951a381bfb6ea4996f01 diff --git a/src/dhcpmon/.gitignore b/src/dhcpmon/.gitignore deleted file mode 100644 index 9d09ae6b3f1a..000000000000 --- a/src/dhcpmon/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -debian/* -!debian/changelog -!debian/compat -!debian/control -!debian/rules diff --git a/src/dhcpmon/Makefile b/src/dhcpmon/Makefile deleted file mode 100644 index 4d21f57199f2..000000000000 --- a/src/dhcpmon/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -RM := rm -rf -DHCPMON_TARGET := dhcpmon -CP := cp -MKDIR := mkdir -CC := g++ -MV := mv -PWD := $(shell pwd) - -# All of the sources participating in the build are defined here --include src/subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: sonic-dhcpmon - -# Tool invocations -sonic-dhcpmon: $(OBJS) $(USER_OBJS) - @echo 'Building target: $@' - @echo 'Invoking: G++ C Linker' - $(CC) -o "$(DHCPMON_TARGET)" $(OBJS) $(USER_OBJS) $(LIBS) - @echo 'Finished building target: $@' - @echo ' ' - -# Other Targets -install: - $(MKDIR) -p $(DESTDIR)/usr/sbin - $(MV) $(DHCPMON_TARGET) $(DESTDIR)/usr/sbin - -deinstall: - $(RM) $(DESTDIR)/usr/sbin/$(DHCPMON_TARGET) - $(RM) -rf $(DESTDIR)/usr/sbin - -clean: - -$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) $(DHCPMON_TARGET) - -@echo ' ' - -.PHONY: all clean dependents diff --git a/src/dhcpmon/debian/changelog b/src/dhcpmon/debian/changelog deleted file mode 100644 index 83b79d6d93bd..000000000000 --- a/src/dhcpmon/debian/changelog +++ /dev/null @@ -1,5 +0,0 @@ -sonic-dhcpmon (1.0.0-0) UNRELEASED; urgency=medium - - * Initial release. - - -- Tamer Ahmed Mon, 09 Dec 2019 12:00:00 -0700 diff --git a/src/dhcpmon/debian/compat b/src/dhcpmon/debian/compat deleted file mode 100644 index 48082f72f087..000000000000 --- a/src/dhcpmon/debian/compat +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/src/dhcpmon/debian/control b/src/dhcpmon/debian/control deleted file mode 100644 index c70c274f19fd..000000000000 --- a/src/dhcpmon/debian/control +++ /dev/null @@ -1,14 +0,0 @@ -Source: sonic-dhcpmon -Section: devel -Priority: optional -Maintainer: Tamer Ahmed -Build-Depends: debhelper (>= 12.0.0), libevent-dev, libexplain-dev -Standards-Version: 3.9.3 -Homepage: https://github.com/Azure/sonic-buildimage -XS-Go-Import-Path: github.com/Azure/sonic-buildimage - -Package: sonic-dhcpmon -Architecture: any -Built-Using: ${misc:Built-Using} -Depends: ${shlibs:Depends} -Description: SONiC DHCP Monitor diff --git a/src/dhcpmon/debian/rules b/src/dhcpmon/debian/rules deleted file mode 100755 index 76fc7ea1f839..000000000000 --- a/src/dhcpmon/debian/rules +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/make -f - -export DEB_BUILD_MAINT_OPTIONS=hardening=+all - -DEB_CFLAGS_APPEND=-std=gnu11 -export DEB_CFLAGS_APPEND - -%: - dh $@ --parallel diff --git a/src/dhcpmon/objects.mk b/src/dhcpmon/objects.mk deleted file mode 100644 index dc0d09e5021f..000000000000 --- a/src/dhcpmon/objects.mk +++ /dev/null @@ -1,4 +0,0 @@ -USER_OBJS := - -LIBS := -levent -lexplain -lswsscommon -pthread -lboost_thread -lboost_system -lhiredis - diff --git a/src/dhcpmon/src/dhcp_device.cpp b/src/dhcpmon/src/dhcp_device.cpp deleted file mode 100644 index 12c0e1544903..000000000000 --- a/src/dhcpmon/src/dhcp_device.cpp +++ /dev/null @@ -1,869 +0,0 @@ -/** - * @file dhcp_device.c - * - * device (interface) module - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "subscriberstatetable.h" -#include "select.h" - -#include "dhcp_devman.h" -#include "dhcp_device.h" - -/** Counter print width */ -#define DHCP_COUNTER_WIDTH 9 - -/** Start of Ether header of a captured frame */ -#define ETHER_START_OFFSET 0 -/** Start of IP header of a captured frame */ -#define IP_START_OFFSET (ETHER_START_OFFSET + ETHER_HDR_LEN) -/** Start of UDP header of a captured frame */ -#define UDP_START_OFFSET (IP_START_OFFSET + sizeof(struct ip)) -/** Start of DHCP header of a captured frame */ -#define DHCP_START_OFFSET (UDP_START_OFFSET + sizeof(struct udphdr)) -/** Start of DHCP Options segment of a captured frame */ -#define DHCP_OPTIONS_HEADER_SIZE 240 -/** Offset of DHCP GIADDR */ -#define DHCP_GIADDR_OFFSET 24 -#define CLIENT_IF_PREFIX "Ethernet" - -#define OP_LDHA (BPF_LD | BPF_H | BPF_ABS) /** bpf ldh Abs */ -#define OP_LDHI (BPF_LD | BPF_H | BPF_IND) /** bpf ldh Ind */ -#define OP_LDB (BPF_LD | BPF_B | BPF_ABS) /** bpf ldb Abs*/ -#define OP_JEQ (BPF_JMP | BPF_JEQ | BPF_K) /** bpf jeq */ -#define OP_JGT (BPF_JMP | BPF_JGT | BPF_K) /** bpf jgt */ -#define OP_RET (BPF_RET | BPF_K) /** bpf ret */ -#define OP_JSET (BPF_JMP | BPF_JSET | BPF_K) /** bpf jset */ -#define OP_LDXB (BPF_LDX | BPF_B | BPF_MSH) /** bpf ldxb */ - -std::shared_ptr mConfigDbPtr = std::make_shared ("CONFIG_DB", 0); -std::shared_ptr mStateDbPtr = std::make_shared ("STATE_DB", 0); -std::shared_ptr mStateDbMuxTablePtr = std::make_shared ( - mStateDbPtr.get(), "HW_MUX_CABLE_TABLE" - ); - -/* interface to vlan mapping */ -std::unordered_map vlan_map; - -/* interface to port-channel mapping */ -std::unordered_map portchan_map; - -/* interface to mgmt port mapping */ -std::unordered_map mgmt_map; - -/** Berkeley Packet Filter program for "udp and (port 67 or port 68)". - * This program is obtained using the following command tcpdump: - * `tcpdump -dd "outbound and udp and (port 67 or port 68)"` - */ -static struct sock_filter dhcp_outbound_bpf_code[] = { - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0xfffff004}, // (000) ldh #fffff004 - {.code = OP_JEQ, .jt = 0, .jf = 22, .k = 0x00000004}, // (001) jeq #0x04 jt 0 jf 22 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x0000000c}, // (002) ldh [12] - {.code = OP_JEQ, .jt = 0, .jf = 7, .k = 0x000086dd}, // (003) jeq #0x86dd jt 2 jf 9 - {.code = OP_LDB, .jt = 0, .jf = 0, .k = 0x00000014}, // (004) ldb [20] - {.code = OP_JEQ, .jt = 0, .jf = 18, .k = 0x00000011}, // (005) jeq #0x11 jt 4 jf 22 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000036}, // (006) ldh [54] - {.code = OP_JEQ, .jt = 15, .jf = 0, .k = 0x00000043}, // (007) jeq #0x43 jt 21 jf 6 - {.code = OP_JEQ, .jt = 14, .jf = 0, .k = 0x00000044}, // (008) jeq #0x44 jt 21 jf 7 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000038}, // (009) ldh [56] - {.code = OP_JEQ, .jt = 12, .jf = 11, .k = 0x00000043}, // (010) jeq #0x43 jt 21 jf 20 - {.code = OP_JEQ, .jt = 0, .jf = 12, .k = 0x00000800}, // (011) jeq #0x800 jt 10 jf 22 - {.code = OP_LDB, .jt = 0, .jf = 0, .k = 0x00000017}, // (012) ldb [23] - {.code = OP_JEQ, .jt = 0, .jf = 10, .k = 0x00000011}, // (013) jeq #0x11 jt 12 jf 22 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000014}, // (014) ldh [20] - {.code = OP_JSET, .jt = 8, .jf = 0, .k = 0x00001fff}, // (015) jset #0x1fff jt 22 jf 14 - {.code = OP_LDXB, .jt = 0, .jf = 0, .k = 0x0000000e}, // (016) ldxb 4*([14]&0xf) - {.code = OP_LDHI, .jt = 0, .jf = 0, .k = 0x0000000e}, // (017) ldh [x + 14] - {.code = OP_JEQ, .jt = 4, .jf = 0, .k = 0x00000043}, // (018) jeq #0x43 jt 21 jf 17 - {.code = OP_JEQ, .jt = 3, .jf = 0, .k = 0x00000044}, // (019) jeq #0x44 jt 21 jf 18 - {.code = OP_LDHI, .jt = 0, .jf = 0, .k = 0x00000010}, // (020) ldh [x + 16] - {.code = OP_JEQ, .jt = 1, .jf = 0, .k = 0x00000043}, // (021) jeq #0x43 jt 21 jf 20 - {.code = OP_JEQ, .jt = 0, .jf = 1, .k = 0x00000044}, // (022) jeq #0x44 jt 21 jf 22 - {.code = OP_RET, .jt = 0, .jf = 0, .k = 0x00040000}, // (023) ret #262144 - {.code = OP_RET, .jt = 0, .jf = 0, .k = 0x00000000}, // (024) ret #0 -}; - -/** Berkeley Packet Filter program for "udp and (port 67 or port 68)". - * This program is obtained using the following command tcpdump: - * `tcpdump -dd "inbound and udp and (port 67 or port 68)"` - */ -static struct sock_filter dhcp_inbound_bpf_code[] = { - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0xfffff004}, // (000) ldh #fffff004 - {.code = OP_JEQ, .jt = 22, .jf = 0, .k = 0x00000004}, // (001) jeq #0x04 jt 22 jf 0 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x0000000c}, // (002) ldh [12] - {.code = OP_JEQ, .jt = 0, .jf = 7, .k = 0x000086dd}, // (003) jeq #0x86dd jt 2 jf 9 - {.code = OP_LDB, .jt = 0, .jf = 0, .k = 0x00000014}, // (004) ldb [20] - {.code = OP_JEQ, .jt = 0, .jf = 18, .k = 0x00000011}, // (005) jeq #0x11 jt 4 jf 22 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000036}, // (006) ldh [54] - {.code = OP_JEQ, .jt = 15, .jf = 0, .k = 0x00000043}, // (007) jeq #0x43 jt 21 jf 6 - {.code = OP_JEQ, .jt = 14, .jf = 0, .k = 0x00000044}, // (008) jeq #0x44 jt 21 jf 7 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000038}, // (009) ldh [56] - {.code = OP_JEQ, .jt = 12, .jf = 11, .k = 0x00000043}, // (010) jeq #0x43 jt 21 jf 20 - {.code = OP_JEQ, .jt = 0, .jf = 12, .k = 0x00000800}, // (011) jeq #0x800 jt 10 jf 22 - {.code = OP_LDB, .jt = 0, .jf = 0, .k = 0x00000017}, // (012) ldb [23] - {.code = OP_JEQ, .jt = 0, .jf = 10, .k = 0x00000011}, // (013) jeq #0x11 jt 12 jf 22 - {.code = OP_LDHA, .jt = 0, .jf = 0, .k = 0x00000014}, // (014) ldh [20] - {.code = OP_JSET, .jt = 8, .jf = 0, .k = 0x00001fff}, // (015) jset #0x1fff jt 22 jf 14 - {.code = OP_LDXB, .jt = 0, .jf = 0, .k = 0x0000000e}, // (016) ldxb 4*([14]&0xf) - {.code = OP_LDHI, .jt = 0, .jf = 0, .k = 0x0000000e}, // (017) ldh [x + 14] - {.code = OP_JEQ, .jt = 4, .jf = 0, .k = 0x00000043}, // (018) jeq #0x43 jt 21 jf 17 - {.code = OP_JEQ, .jt = 3, .jf = 0, .k = 0x00000044}, // (019) jeq #0x44 jt 21 jf 18 - {.code = OP_LDHI, .jt = 0, .jf = 0, .k = 0x00000010}, // (020) ldh [x + 16] - {.code = OP_JEQ, .jt = 1, .jf = 0, .k = 0x00000043}, // (021) jeq #0x43 jt 21 jf 20 - {.code = OP_JEQ, .jt = 0, .jf = 1, .k = 0x00000044}, // (022) jeq #0x44 jt 21 jf 22 - {.code = OP_RET, .jt = 0, .jf = 0, .k = 0x00040000}, // (023) ret #262144 - {.code = OP_RET, .jt = 0, .jf = 0, .k = 0x00000000}, // (024) ret #0 -}; - -/** Filter program socket struct */ -static struct sock_fprog dhcp_outbound_sock_bfp = { - .len = sizeof(dhcp_outbound_bpf_code) / sizeof(*dhcp_outbound_bpf_code), .filter = dhcp_outbound_bpf_code -}; -static struct sock_fprog dhcp_inbound_sock_bfp = { - .len = sizeof(dhcp_inbound_bpf_code) / sizeof(*dhcp_inbound_bpf_code), .filter = dhcp_inbound_bpf_code -}; - -static uint8_t *rx_recv_buffer = NULL; -static uint8_t *tx_recv_buffer = NULL; -static uint32_t snap_length; - -/** Aggregate device of DHCP interfaces. It contains aggregate counters from - all interfaces - */ -static dhcp_device_context_t aggregate_dev = {0}; - -/** Monitored DHCP message type */ -static dhcp_message_type_t monitored_msgs[] = { - DHCP_MESSAGE_TYPE_DISCOVER, - DHCP_MESSAGE_TYPE_OFFER, - DHCP_MESSAGE_TYPE_REQUEST, - DHCP_MESSAGE_TYPE_ACK -}; - -/** update ethernet interface to vlan map - * VLAN_MEMBER|Vlan1000|Ethernet48 - */ -void update_vlan_mapping(std::shared_ptr db_conn) { - auto match_pattern = std::string("VLAN_MEMBER|*"); - auto keys = db_conn->keys(match_pattern); - for (auto &itr : keys) { - auto first = itr.find_first_of('|'); - auto second = itr.find_last_of('|'); - auto vlan = itr.substr(first + 1, second - first - 1); - auto interface = itr.substr(second + 1); - vlan_map[interface] = vlan; - syslog(LOG_INFO, "add <%s, %s> into interface vlan map\n", interface.c_str(), vlan.c_str()); - } -} - -/** update ethernet interface to port-channel map - * PORTCHANNEL_MEMBER|PortChannel101|Ethernet112 - */ -void update_portchannel_mapping(std::shared_ptr db_conn) { - auto match_pattern = std::string("PORTCHANNEL_MEMBER|*"); - auto keys = db_conn->keys(match_pattern); - for (auto &itr : keys) { - auto first = itr.find_first_of('|'); - auto second = itr.find_last_of('|'); - auto portchannel = itr.substr(first + 1, second - first - 1); - auto interface = itr.substr(second + 1); - portchan_map[interface] = portchannel; - syslog(LOG_INFO, "add <%s, %s> into interface port-channel map\n", interface.c_str(), portchannel.c_str()); - } -} - -/** update interface to mgmt map - */ -void update_mgmt_mapping() { - auto mgmt = dhcp_devman_get_mgmt_dev(); - if (mgmt) { - auto name = std::string(mgmt->intf); - mgmt_map[name] = name; - } -} - -dhcp_device_context_t *find_device_context(std::unordered_map *intfs, std::string if_name) { - auto intf = intfs->find(if_name); - if (intf == intfs->end()) { - return NULL; - } - return intf->second->dev_context; -} - -/** Number of monitored DHCP message type */ -static uint8_t monitored_msg_sz = sizeof(monitored_msgs) / sizeof(*monitored_msgs); - -/** - * @code handle_dhcp_option_53(context, dhcp_option, dir, iphdr, dhcphdr); - * - * @brief handle the logic related to DHCP option 53 - * - * @param context Device (interface) context - * @param dhcp_option pointer to DHCP option buffer space - * @param dir packet direction - * @param iphdr pointer to packet IP header - * @param dhcphdr pointer to DHCP header - * - * @return none - */ -static void handle_dhcp_option_53(dhcp_device_context_t *context, - const u_char *dhcp_option, - dhcp_packet_direction_t dir, - struct ip *iphdr, - uint8_t *dhcphdr) -{ - in_addr_t giaddr; - switch (dhcp_option[2]) - { - // DHCP messages send by client - case DHCP_MESSAGE_TYPE_DISCOVER: - case DHCP_MESSAGE_TYPE_REQUEST: - case DHCP_MESSAGE_TYPE_DECLINE: - case DHCP_MESSAGE_TYPE_RELEASE: - case DHCP_MESSAGE_TYPE_INFORM: - giaddr = ntohl(dhcphdr[DHCP_GIADDR_OFFSET] << 24 | dhcphdr[DHCP_GIADDR_OFFSET + 1] << 16 | - dhcphdr[DHCP_GIADDR_OFFSET + 2] << 8 | dhcphdr[DHCP_GIADDR_OFFSET + 3]); - if ((context->giaddr_ip == giaddr && context->is_uplink && dir == DHCP_TX) || - (!context->is_uplink && dir == DHCP_RX && iphdr->ip_dst.s_addr == INADDR_BROADCAST)) { - context->counters[DHCP_COUNTERS_CURRENT][dir][dhcp_option[2]]++; - aggregate_dev.counters[DHCP_COUNTERS_CURRENT][dir][dhcp_option[2]]++; - } - break; - // DHCP messages send by server - case DHCP_MESSAGE_TYPE_OFFER: - case DHCP_MESSAGE_TYPE_ACK: - case DHCP_MESSAGE_TYPE_NAK: - if ((context->giaddr_ip == iphdr->ip_dst.s_addr && context->is_uplink && dir == DHCP_RX) || - (!context->is_uplink && dir == DHCP_TX)) { - context->counters[DHCP_COUNTERS_CURRENT][dir][dhcp_option[2]]++; - aggregate_dev.counters[DHCP_COUNTERS_CURRENT][dir][dhcp_option[2]]++; - } - break; - default: - syslog(LOG_WARNING, "handle_dhcp_option_53(%s): Unknown DHCP option 53 type %d", context->intf, dhcp_option[2]); - break; - } -} - -/** - * @code client_packet_handler(dhcp_device_context_t *context, ssize_t buffer_sz); - * - * @brief packet handler to process received rx and tx packets - * - * @param context pointer to device (interface) context - * @param buffer_sz buffer that stores received packet data - * - * @return none - */ -static void client_packet_handler(dhcp_device_context_t *context, uint8_t *buffer, - ssize_t buffer_sz, dhcp_packet_direction_t dir) -{ - struct ip *iphdr = (struct ip*) (buffer + IP_START_OFFSET); - struct udphdr *udp = (struct udphdr*) (buffer + UDP_START_OFFSET); - uint8_t *dhcphdr = buffer + DHCP_START_OFFSET; - int dhcp_option_offset = DHCP_START_OFFSET + DHCP_OPTIONS_HEADER_SIZE; - - if (((unsigned)buffer_sz > UDP_START_OFFSET + sizeof(struct udphdr) + DHCP_OPTIONS_HEADER_SIZE) && - (ntohs(udp->len) > DHCP_OPTIONS_HEADER_SIZE)) - { - int dhcp_sz = ntohs(udp->len) < buffer_sz - UDP_START_OFFSET - sizeof(struct udphdr) ? - ntohs(udp->len) : buffer_sz - UDP_START_OFFSET - sizeof(struct udphdr); - int dhcp_option_sz = dhcp_sz - DHCP_OPTIONS_HEADER_SIZE; - const u_char *dhcp_option = buffer + dhcp_option_offset; - - int offset = 0; - while ((offset < (dhcp_option_sz + 1)) && dhcp_option[offset] != 255) { - if (dhcp_option[offset] == OPTION_DHCP_MESSAGE_TYPE) { - if (offset < (dhcp_option_sz + 2)) { - handle_dhcp_option_53(context, &dhcp_option[offset], dir, iphdr, dhcphdr); - } - break; // break while loop since we are only interested in Option 53 - } - - if (dhcp_option[offset] == 0) { // DHCP Option Padding - offset++; - } else { - offset += dhcp_option[offset + 1] + 2; - } - } - } else { - syslog(LOG_WARNING, "read_callback(%s %s): read length (%ld) is too small to capture DHCP options", - context->intf, dir == DHCP_TX ? "TX" : "RX", buffer_sz); - } -} - -static dhcp_device_context_t *interface_to_dev_context(std::unordered_map *devices, - std::string ifname) -{ - auto vlan = vlan_map.find(ifname); - if (vlan != vlan_map.end()) { - if (dual_tor_sock) { - std::string state; - mStateDbMuxTablePtr->hget(ifname, "state", state); - if (state == "standby") { - return NULL; - } - } - return find_device_context(devices, vlan->second); - } else { - auto port_channel = portchan_map.find(ifname); - if (port_channel != portchan_map.end()) { - return find_device_context(devices, port_channel->second); - } - else { - // mgmt interface check - auto mgmt = mgmt_map.find(ifname); - if (mgmt != mgmt_map.end()) { - return find_device_context(devices, mgmt->second); - } - } - } - return NULL; -} - - -/** - * @code read_tx_callback(fd, event, arg); - * - * @brief callback for libevent which is called every time out in order to read queued outgoing packet capture - * - * @param fd socket to read from - * @param event libevent triggered event - * @param arg user provided argument for callback (interface context) - * - * @return none - */ -static void read_tx_callback(int fd, short event, void *arg) -{ - auto devices = (std::unordered_map *)arg; - ssize_t buffer_sz; - struct sockaddr_ll sll; - socklen_t slen = sizeof sll; - dhcp_device_context_t *context = NULL; - - while ((buffer_sz = recvfrom(fd, tx_recv_buffer, snap_length, MSG_DONTWAIT, (struct sockaddr *)&sll, &slen)) > 0) - { - char interfaceName[IF_NAMESIZE]; - if (if_indextoname(sll.sll_ifindex, interfaceName) == NULL) { - syslog(LOG_WARNING, "invalid output interface index %d\n", sll.sll_ifindex); - continue; - } - std::string intf(interfaceName); - context = find_device_context(devices, intf); - if (context) { - client_packet_handler(context, tx_recv_buffer, buffer_sz, DHCP_TX); - } - } -} - -/** - * @code read_rx_callback(fd, event, arg); - * - * @brief callback for libevent which is called every time out in order to read queued incoming packet capture - * - * @param fd socket to read from - * @param event libevent triggered event - * @param arg user provided argument for callback (interface context) - * - * @return none - */ -static void read_rx_callback(int fd, short event, void *arg) -{ - auto devices = (std::unordered_map *)arg; - ssize_t buffer_sz; - struct sockaddr_ll sll; - socklen_t slen = sizeof(sll); - dhcp_device_context_t *context = NULL; - - while ((buffer_sz = recvfrom(fd, rx_recv_buffer, snap_length, MSG_DONTWAIT, (struct sockaddr *)&sll, &slen)) > 0) - { - char interfaceName[IF_NAMESIZE]; - if (if_indextoname(sll.sll_ifindex, interfaceName) == NULL) { - syslog(LOG_WARNING, "invalid input interface index %d\n", sll.sll_ifindex); - continue; - } - std::string intf(interfaceName); - context = interface_to_dev_context(devices, intf); - if (context) { - client_packet_handler(context, rx_recv_buffer, buffer_sz, DHCP_RX); - } - } -} - -/** - * @code dhcp_device_is_dhcp_inactive(counters); - * - * @brief Check if there were no DHCP activity - * - * @param counters current/snapshot counter - * - * @return true if there were no DHCP activity, false otherwise - */ -static bool dhcp_device_is_dhcp_inactive(uint64_t counters[][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]) -{ - uint64_t *rx_counters = counters[DHCP_COUNTERS_CURRENT][DHCP_RX]; - uint64_t *rx_counter_snapshot = counters[DHCP_COUNTERS_SNAPSHOT][DHCP_RX]; - - bool rv = true; - for (uint8_t i = 0; (i < monitored_msg_sz) && rv; i++) { - rv = rx_counters[monitored_msgs[i]] == rx_counter_snapshot[monitored_msgs[i]]; - } - - return rv; -} - -/** - * @code dhcp_device_is_dhcp_msg_unhealthy(type, counters); - * - * @brief Check if DHCP relay is functioning properly for message of type 'type'. - * For every rx of message 'type', there should be increment of the same message type. - * - * @param type DHCP message type - * @param counters current/snapshot counter - * - * @return true if DHCP message 'type' is transmitted,false otherwise - */ -static bool dhcp_device_is_dhcp_msg_unhealthy(dhcp_message_type_t type, - uint64_t counters[][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]) -{ - // check if DHCP message 'type' is being relayed - return ((counters[DHCP_COUNTERS_CURRENT][DHCP_RX][type] > counters[DHCP_COUNTERS_SNAPSHOT][DHCP_RX][type]) && - (counters[DHCP_COUNTERS_CURRENT][DHCP_TX][type] <= counters[DHCP_COUNTERS_SNAPSHOT][DHCP_TX][type]) ); -} - -/** - * @code dhcp_device_check_positive_health(counters, counters_snapshot); - * - * @brief Check if DHCP relay is functioning properly for monitored messages (Discover, Offer, Request, ACK.) - * For every rx of monitored messages, there should be increment of the same message type. - * - * @param counters current/snapshot counter - * - * @return DHCP_MON_STATUS_HEALTHY, DHCP_MON_STATUS_UNHEALTHY, or DHCP_MON_STATUS_INDETERMINATE - */ -static dhcp_mon_status_t dhcp_device_check_positive_health(uint64_t counters[][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]) -{ - dhcp_mon_status_t rv = DHCP_MON_STATUS_HEALTHY; - - bool is_dhcp_unhealthy = false; - for (uint8_t i = 0; (i < monitored_msg_sz) && !is_dhcp_unhealthy; i++) { - is_dhcp_unhealthy = dhcp_device_is_dhcp_msg_unhealthy(monitored_msgs[i], counters); - } - - // if we have rx DORA then we should have corresponding tx DORA (DORA being relayed) - if (is_dhcp_unhealthy) { - rv = DHCP_MON_STATUS_UNHEALTHY; - } - - return rv; -} - -/** - * @code dhcp_device_check_negative_health(counters); - * - * @brief Check that DHCP relayed messages are not being transmitted out of this interface/dev - * using its counters. The interface is negatively healthy if there are not DHCP message - * travelling through it. - * - * @param counters recent interface counter - * @param counters_snapshot snapshot counters - * - * @return DHCP_MON_STATUS_HEALTHY, DHCP_MON_STATUS_UNHEALTHY, or DHCP_MON_STATUS_INDETERMINATE - */ -static dhcp_mon_status_t dhcp_device_check_negative_health(uint64_t counters[][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]) -{ - dhcp_mon_status_t rv = DHCP_MON_STATUS_HEALTHY; - - uint64_t *tx_counters = counters[DHCP_COUNTERS_CURRENT][DHCP_TX]; - uint64_t *tx_counter_snapshot = counters[DHCP_COUNTERS_SNAPSHOT][DHCP_TX]; - - bool is_dhcp_unhealthy = false; - for (uint8_t i = 0; (i < monitored_msg_sz) && !is_dhcp_unhealthy; i++) { - is_dhcp_unhealthy = tx_counters[monitored_msgs[i]] > tx_counter_snapshot[monitored_msgs[i]]; - } - - // for negative validation, return unhealthy if DHCP packet are being - // transmitted out of the device/interface - if (is_dhcp_unhealthy) { - rv = DHCP_MON_STATUS_UNHEALTHY; - } - - return rv; -} - -/** - * @code dhcp_device_check_health(check_type, counters, counters_snapshot); - * - * @brief Check that DHCP relay is functioning properly given a check type. Positive check - * indicates for every rx of DHCP message of type 'type', there would increment of - * the corresponding TX of the same message type. While negative check indicates the - * device should not be actively transmitting any DHCP messages. If it does, it is - * considered unhealthy. - * - * @param check_type type of health check - * @param counters current/snapshot counter - * - * @return DHCP_MON_STATUS_HEALTHY, DHCP_MON_STATUS_UNHEALTHY, or DHCP_MON_STATUS_INDETERMINATE - */ -static dhcp_mon_status_t dhcp_device_check_health(dhcp_mon_check_t check_type, - uint64_t counters[][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]) -{ - dhcp_mon_status_t rv = DHCP_MON_STATUS_HEALTHY; - - if (dhcp_device_is_dhcp_inactive(aggregate_dev.counters)) { - rv = DHCP_MON_STATUS_INDETERMINATE; - } else if (check_type == DHCP_MON_CHECK_POSITIVE) { - rv = dhcp_device_check_positive_health(counters); - } else if (check_type == DHCP_MON_CHECK_NEGATIVE) { - rv = dhcp_device_check_negative_health(counters); - } - - return rv; -} - -/** - * @code dhcp_print_counters(vlan_intf, type, counters); - * - * @brief prints DHCP counters to sylsog. - * - * @param vlan_intf vlan interface name - * @param type counter type - * @param counters interface counter - * - * @return none - */ -static void dhcp_print_counters(const char *vlan_intf, - dhcp_counters_type_t type, - uint64_t counters[][DHCP_MESSAGE_TYPE_COUNT]) -{ - static const char *counter_desc[DHCP_COUNTERS_COUNT] = { - [DHCP_COUNTERS_CURRENT] = " Current", - [DHCP_COUNTERS_SNAPSHOT] = "Snapshot" - }; - - syslog( - LOG_NOTICE, - "[%*s-%*s rx/tx] Discover: %*lu/%*lu, Offer: %*lu/%*lu, Request: %*lu/%*lu, ACK: %*lu/%*lu\n", - IF_NAMESIZE, vlan_intf, - (int) strlen(counter_desc[type]), counter_desc[type], - DHCP_COUNTER_WIDTH, counters[DHCP_RX][DHCP_MESSAGE_TYPE_DISCOVER], - DHCP_COUNTER_WIDTH, counters[DHCP_TX][DHCP_MESSAGE_TYPE_DISCOVER], - DHCP_COUNTER_WIDTH, counters[DHCP_RX][DHCP_MESSAGE_TYPE_OFFER], - DHCP_COUNTER_WIDTH, counters[DHCP_TX][DHCP_MESSAGE_TYPE_OFFER], - DHCP_COUNTER_WIDTH, counters[DHCP_RX][DHCP_MESSAGE_TYPE_REQUEST], - DHCP_COUNTER_WIDTH, counters[DHCP_TX][DHCP_MESSAGE_TYPE_REQUEST], - DHCP_COUNTER_WIDTH, counters[DHCP_RX][DHCP_MESSAGE_TYPE_ACK], - DHCP_COUNTER_WIDTH, counters[DHCP_TX][DHCP_MESSAGE_TYPE_ACK] - ); -} - -/** - * @code init_socket(); - * - * @brief initializes rx/tx sockets, bind it to interface and bpf program - * - * @return 0 on success, otherwise for failure - */ -static int init_socket() -{ - int rv = -1; - - do { - auto rx_sock = socket(AF_PACKET, SOCK_RAW | SOCK_NONBLOCK, htons(ETH_P_ALL)); - auto tx_sock = socket(AF_PACKET, SOCK_RAW | SOCK_NONBLOCK, htons(ETH_P_ALL)); - if (rx_sock < 0 || tx_sock < 0) { - syslog(LOG_ALERT, "socket: failed to open socket with '%s'\n", strerror(errno)); - exit(1); - } - - struct sockaddr_ll rx_addr; - memset(&rx_addr, 0, sizeof(rx_addr)); - rx_addr.sll_ifindex = 0; // any interface - rx_addr.sll_family = AF_PACKET; - rx_addr.sll_protocol = htons(ETH_P_ALL); - if (bind(rx_sock, (struct sockaddr *) &rx_addr, sizeof(rx_addr))) { - syslog(LOG_ALERT, "bind: failed to bind to all interface with '%s'\n", strerror(errno)); - break; - } - - struct sockaddr_ll tx_addr; - memset(&tx_addr, 0, sizeof(tx_addr)); - tx_addr.sll_ifindex = 0; // any interface - tx_addr.sll_family = AF_PACKET; - tx_addr.sll_protocol = htons(ETH_P_ALL); - if (bind(tx_sock, (struct sockaddr *) &tx_addr, sizeof(tx_addr))) { - syslog(LOG_ALERT, "bind: failed to bind to interface with '%s'\n", strerror(errno)); - exit(1); - } - - for (auto &itr : intfs) { - itr.second->dev_context->rx_sock = rx_sock; - itr.second->dev_context->tx_sock = tx_sock; - } - rv = 0; - } while (0); - - return rv; -} - -static void init_recv_buffers(int snaplen) -{ - snap_length = snaplen; - rx_recv_buffer = (uint8_t *) malloc(snaplen); - if (rx_recv_buffer == NULL) { - syslog(LOG_ALERT, "malloc: failed to allocate memory for socket rx buffer '%s'\n", strerror(errno)); - exit(1); - } - - tx_recv_buffer = (uint8_t *) malloc(snaplen); - if (tx_recv_buffer == NULL) { - syslog(LOG_ALERT, "malloc: failed to allocate memory for socket tx buffer '%s'\n", strerror(errno)); - exit(1); - } -} - -/** - * @code initialize_intf_mac_and_ip_addr(context); - * - * @brief initializes device (interface) mac/ip addresses - * - * @param context pointer to device (interface) context - * - * @return 0 on success, otherwise for failure - */ -int initialize_intf_mac_and_ip_addr(dhcp_device_context_t *context) -{ - int rv = -1; - - do { - int fd; - struct ifreq ifr; - if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { - syslog(LOG_ALERT, "socket: %s", strerror(errno)); - break; - } - - ifr.ifr_addr.sa_family = AF_INET; - strncpy(ifr.ifr_name, context->intf, sizeof(ifr.ifr_name) - 1); - ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0'; - - // Get network address - if (ioctl(fd, SIOCGIFADDR, &ifr) == -1) { - syslog(LOG_ALERT, "ioctl: %s", explain_ioctl(fd, SIOCGIFADDR, &ifr)); - break; - } - context->ip = ((struct sockaddr_in*) &ifr.ifr_addr)->sin_addr.s_addr; - - // Get mac address - if (ioctl(fd, SIOCGIFHWADDR, &ifr) == -1) { - syslog(LOG_ALERT, "ioctl: %s", explain_ioctl(fd, SIOCGIFHWADDR, &ifr)); - break; - } - memcpy(context->mac, ifr.ifr_hwaddr.sa_data, sizeof(context->mac)); - - close(fd); - - rv = 0; - } while (0); - - return rv; -} - -/** - * @code dhcp_device_get_ip(context); - * - * @brief Accessor method - * - * @param context pointer to device (interface) context - * - * @return interface IP - */ -int dhcp_device_get_ip(dhcp_device_context_t *context, in_addr_t *ip) -{ - int rv = -1; - - if (context != NULL && ip != NULL) { - *ip = context->ip; - rv = 0; - } - - return rv; -} - -/** - * @code dhcp_device_get_aggregate_context(); - * - * @brief Accessor method - * - * @return pointer to aggregate device (interface) context - */ -dhcp_device_context_t* dhcp_device_get_aggregate_context() -{ - return &aggregate_dev; -} - -/** - * @code dhcp_device_init(context, intf, is_uplink); - * - * @brief initializes device (interface) that handles packet capture per interface. - */ -int dhcp_device_init(dhcp_device_context_t **context, const char *intf, uint8_t is_uplink) -{ - int rv = -1; - dhcp_device_context_t *dev_context = NULL; - - if ((context != NULL) && (strlen(intf) < sizeof(dev_context->intf))) { - dev_context = (dhcp_device_context_t *) malloc(sizeof(dhcp_device_context_t)); - if (dev_context != NULL) { - // set device name - strncpy(dev_context->intf, intf, sizeof(dev_context->intf) - 1); - dev_context->intf[sizeof(dev_context->intf) - 1] = '\0'; - // set device meta data - if (initialize_intf_mac_and_ip_addr(dev_context) == 0) { - dev_context->is_uplink = is_uplink; - memset(dev_context->counters, 0, sizeof(dev_context->counters)); - *context = dev_context; - rv = 0; - } - } - else { - syslog(LOG_ALERT, "malloc: failed to allocated device context memory for '%s'", dev_context->intf); - } - } - - return rv; -} - -/** - * @code dhcp_device_start_capture(snaplen, base, giaddr_ip); - * - * @brief starts packet capture on this interface - */ -int dhcp_device_start_capture(size_t snaplen, struct event_base *base, in_addr_t giaddr_ip) -{ - int rv = -1; - struct event *rx_ev; - struct event *tx_ev; - int rx_sock = -1, tx_sock = -1; - - do { - if (snaplen < UDP_START_OFFSET + sizeof(struct udphdr) + DHCP_OPTIONS_HEADER_SIZE) { - syslog(LOG_ALERT, "dhcp_device_start_capture: snap length is too low to capture DHCP options"); - exit(1); - } - - init_socket(); - - init_recv_buffers(snaplen); - - update_vlan_mapping(mConfigDbPtr); - update_portchannel_mapping(mConfigDbPtr); - update_mgmt_mapping(); - - for (auto &itr : intfs) { - itr.second->dev_context->snaplen = snaplen; - itr.second->dev_context->giaddr_ip = giaddr_ip; - // all interface dev context has same rx/tx socket - rx_sock = itr.second->dev_context->rx_sock; - tx_sock = itr.second->dev_context->tx_sock; - } - - if (rx_sock == -1 || tx_sock == -1) { - syslog(LOG_ALERT, "dhcp_device_start_capture: invalid rx_sock or tx_sock"); - exit(1); - } - if (setsockopt(rx_sock, SOL_SOCKET, SO_ATTACH_FILTER, &dhcp_inbound_sock_bfp, sizeof(dhcp_inbound_sock_bfp)) != 0) { - syslog(LOG_ALERT, "setsockopt: failed to attach filter with '%s'\n", strerror(errno)); - exit(1); - } - - if (setsockopt(tx_sock, SOL_SOCKET, SO_ATTACH_FILTER, &dhcp_outbound_sock_bfp, sizeof(dhcp_outbound_sock_bfp)) != 0) { - syslog(LOG_ALERT, "setsockopt: failed to attach filter with '%s'\n", strerror(errno)); - exit(1); - } - - rx_ev = event_new(base, rx_sock, EV_READ | EV_PERSIST, read_rx_callback, &intfs); - tx_ev = event_new(base, tx_sock, EV_READ | EV_PERSIST, read_tx_callback, &intfs); - - if (rx_ev == NULL || tx_ev == NULL) { - syslog(LOG_ALERT, "event_new: failed to allocate memory for libevent event '%s'\n", strerror(errno)); - exit(1); - } - event_add(rx_ev, NULL); - event_add(tx_ev, NULL); - - rv = 0; - } while (0); - - return rv; -} - -/** - * @code dhcp_device_shutdown(context); - * - * @brief shuts down device (interface). Also, stops packet capture on interface and cleans up any allocated memory - */ -void dhcp_device_shutdown(dhcp_device_context_t *context) -{ - free(context); -} - -/** - * @code dhcp_device_get_status(check_type, context); - * - * @brief collects DHCP relay status info for a given interface. If context is null, it will report aggregate - * status - */ -dhcp_mon_status_t dhcp_device_get_status(dhcp_mon_check_t check_type, dhcp_device_context_t *context) -{ - dhcp_mon_status_t rv = DHCP_MON_STATUS_HEALTHY; - - if (context != NULL) { - rv = dhcp_device_check_health(check_type, context->counters); - } - - return rv; -} - -/** - * @code dhcp_device_update_snapshot(context); - * - * @brief Update device/interface counters snapshot - */ -void dhcp_device_update_snapshot(dhcp_device_context_t *context) -{ - if (context != NULL) { - memcpy(context->counters[DHCP_COUNTERS_SNAPSHOT], - context->counters[DHCP_COUNTERS_CURRENT], - sizeof(context->counters[DHCP_COUNTERS_SNAPSHOT])); - } -} - -/** - * @code dhcp_device_print_status(context, type); - * - * @brief prints status counters to syslog. - */ -void dhcp_device_print_status(dhcp_device_context_t *context, dhcp_counters_type_t type) -{ - if (context != NULL) { - dhcp_print_counters(context->intf, type, context->counters[type]); - } -} diff --git a/src/dhcpmon/src/dhcp_device.h b/src/dhcpmon/src/dhcp_device.h deleted file mode 100644 index cd8eab1ee7eb..000000000000 --- a/src/dhcpmon/src/dhcp_device.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * @file dhcp_device.h - * - * device (interface) module - */ - -#ifndef DHCP_DEVICE_H_ -#define DHCP_DEVICE_H_ - -#include -#include -#include -#include - -#include -#include -#include - -extern bool dual_tor_sock; -extern std::unordered_map intfs; - -/** - * DHCP message types - **/ -typedef enum -{ - DHCP_MESSAGE_TYPE_DISCOVER = 1, - DHCP_MESSAGE_TYPE_OFFER = 2, - DHCP_MESSAGE_TYPE_REQUEST = 3, - DHCP_MESSAGE_TYPE_DECLINE = 4, - DHCP_MESSAGE_TYPE_ACK = 5, - DHCP_MESSAGE_TYPE_NAK = 6, - DHCP_MESSAGE_TYPE_RELEASE = 7, - DHCP_MESSAGE_TYPE_INFORM = 8, - - DHCP_MESSAGE_TYPE_COUNT -} dhcp_message_type_t; - -enum -{ - OPTION_DHCP_MESSAGE_TYPE = 53, -}; - -/** packet direction */ -typedef enum -{ - DHCP_RX, /** RX DHCP packet */ - DHCP_TX, /** TX DHCP packet */ - - DHCP_DIR_COUNT -} dhcp_packet_direction_t; - -/** counters type */ -typedef enum -{ - DHCP_COUNTERS_CURRENT, /** DHCP current counters */ - DHCP_COUNTERS_SNAPSHOT, /** DHCP snapshot counters */ - - DHCP_COUNTERS_COUNT -} dhcp_counters_type_t; - -/** dhcp health status */ -typedef enum -{ - DHCP_MON_STATUS_HEALTHY, /** DHCP relay is healthy */ - DHCP_MON_STATUS_UNHEALTHY, /** DHCP relay is unhealthy and is missing out on some packets */ - DHCP_MON_STATUS_INDETERMINATE, /** DHCP relay health could not be determined */ -} dhcp_mon_status_t; - -/** dhcp check type */ -typedef enum -{ - DHCP_MON_CHECK_NEGATIVE, /** Presence of relayed DHCP packets activity is flagged as unhealthy state */ - DHCP_MON_CHECK_POSITIVE, /** Validate that received DORA packets are relayed */ -} dhcp_mon_check_t; - -/** DHCP device (interface) context */ -typedef struct -{ - int rx_sock; /** Raw socket associated with this device/interface to count rx packets */ - int tx_sock; /** Raw socket associated with this device/interface to count tx packets*/ - in_addr_t ip; /** network address of this device (interface) */ - uint8_t mac[ETHER_ADDR_LEN]; /** hardware address of this device (interface) */ - in_addr_t giaddr_ip; /** Gateway IP address */ - uint8_t is_uplink; /** north interface? */ - char intf[IF_NAMESIZE]; /** device (interface) name */ - size_t snaplen; /** snap length or buffer size */ - uint64_t counters[DHCP_COUNTERS_COUNT][DHCP_DIR_COUNT][DHCP_MESSAGE_TYPE_COUNT]; - /** current/snapshot counters of DHCP packets */ -} dhcp_device_context_t; - -/** - * @code initialize_intf_mac_and_ip_addr(context); - * - * @brief initializes device (interface) mac/ip addresses - * - * @param context pointer to device (interface) context - * - * @return 0 on success, otherwise for failure - */ -int initialize_intf_mac_and_ip_addr(dhcp_device_context_t *context); - -/** - * @code dhcp_device_get_ip(context, ip); - * - * @brief Accessor method - * - * @param context pointer to device (interface) context - * @param ip(out) pointer to device IP - * - * @return 0 on success, otherwise for failure - */ -int dhcp_device_get_ip(dhcp_device_context_t *context, in_addr_t *ip); - -/** - * @code dhcp_device_get_aggregate_context(); - * - * @brief Accessor method - * - * @return pointer to aggregate device (interface) context - */ -dhcp_device_context_t* dhcp_device_get_aggregate_context(); - -/** - * @code dhcp_device_init(context, intf, is_uplink); - * - * @brief initializes device (interface) that handles packet capture per interface. - * - * @param context(inout) pointer to device (interface) context - * @param intf interface name - * @param is_uplink uplink interface - * - * @return 0 on success, otherwise for failure - */ -int dhcp_device_init(dhcp_device_context_t **context, - const char *intf, - uint8_t is_uplink); - -/** - * @code dhcp_device_start_capture(snaplen, base, giaddr_ip); - * - * @brief starts packet capture on this interface - * - * @param snaplen length of packet capture - * @param base pointer to libevent base - * @param giaddr_ip gateway IP address - * - * @return 0 on success, otherwise for failure - */ -int dhcp_device_start_capture(size_t snaplen, struct event_base *base, in_addr_t giaddr_ip); - -/** - * @code dhcp_device_shutdown(context); - * - * @brief shuts down device (interface). Also, stops packet capture on interface and cleans up any allocated memory - * - * @param context Device (interface) context - * - * @return nonedhcp_device_shutdown - */ -void dhcp_device_shutdown(dhcp_device_context_t *context); - -/** - * @code dhcp_device_get_status(check_type, context); - * - * @brief collects DHCP relay status info for a given interface. If context is null, it will report aggregate - * status - * - * @param check_type Type of validation - * @param context Device (interface) context - * - * @return DHCP_MON_STATUS_HEALTHY, DHCP_MON_STATUS_UNHEALTHY, or DHCP_MON_STATUS_INDETERMINATE - */ -dhcp_mon_status_t dhcp_device_get_status(dhcp_mon_check_t check_type, dhcp_device_context_t *context); - -/** - * @code dhcp_device_update_snapshot(context); - * - * @param context Device (interface) context - * - * @brief Update device/interface counters snapshot - */ -void dhcp_device_update_snapshot(dhcp_device_context_t *context); - -/** - * @code dhcp_device_print_status(context, type); - * - * @brief prints status counters to syslog. If context is null, it will print aggregate status - * - * @param context Device (interface) context - * @param counters_type Counter type to be printed - * - * @return none - */ -void dhcp_device_print_status(dhcp_device_context_t *context, dhcp_counters_type_t type); - -#endif /* DHCP_DEVICE_H_ */ diff --git a/src/dhcpmon/src/dhcp_devman.cpp b/src/dhcpmon/src/dhcp_devman.cpp deleted file mode 100644 index 0fa490d138bd..000000000000 --- a/src/dhcpmon/src/dhcp_devman.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/** - * @file dhcp_devman.c - * - * Device (interface) manager - */ -#include -#include -#include -#include -#include - -#include "dhcp_devman.h" - -/** Prefix appended to Aggregation device */ -#define AGG_DEV_PREFIX "Agg-" - -/** intfs map of interfaces */ -std::unordered_map intfs; -/** dhcp_num_south_intf number of south interfaces */ -static uint32_t dhcp_num_south_intf = 0; -/** dhcp_num_north_intf number of north interfaces */ -static uint32_t dhcp_num_north_intf = 0; -/** dhcp_num_mgmt_intf number of mgmt interfaces */ -static uint32_t dhcp_num_mgmt_intf = 0; - -/** On Device vlan interface IP address corresponding vlan downlink IP - * This IP is used to filter Offer/Ack packet coming from DHCP server */ -static in_addr_t vlan_ip = 0; - -/* Device loopback interface ip, which will be used as the giaddr in dual tor setup. */ -static in_addr_t loopback_ip = 0; - -/* Whether the device is in dual tor mode, 0 as default for single tor mode. */ -static int dual_tor_mode = 0; - -/** mgmt interface */ -static struct intf *mgmt_intf = NULL; - -/** - * @code dhcp_devman_get_vlan_intf(); - * - * Accessor method - */ -dhcp_device_context_t* dhcp_devman_get_agg_dev() -{ - return dhcp_device_get_aggregate_context(); -} - -/** - * @code dhcp_devman_get_mgmt_dev(); - * - * Accessor method - */ -dhcp_device_context_t* dhcp_devman_get_mgmt_dev() -{ - return mgmt_intf ? mgmt_intf->dev_context : NULL; -} - -/** - * @code dhcp_devman_shutdown(); - * - * shuts down device (interface) manager. Also, stops packet capture on interface and cleans up any allocated - * memory - */ -void dhcp_devman_shutdown() -{ - for (auto it = intfs.begin(); it != intfs.end();) { - auto inf = it->second; - dhcp_device_shutdown(inf->dev_context); - it = intfs.erase(it); - free(inf); - } -} - -/** - * @code dhcp_devman_add_intf(name, is_uplink); - * - * @brief adds interface to the device manager. - */ -int dhcp_devman_add_intf(const char *name, char intf_type) -{ - int rv = -1; - struct intf *dev = (struct intf*) malloc(sizeof(struct intf)); - - if (dev != NULL) { - dev->name = name; - dev->is_uplink = intf_type != 'd'; - - switch (intf_type) - { - case 'u': - dhcp_num_north_intf++; - break; - case 'd': - dhcp_num_south_intf++; - assert(dhcp_num_south_intf <= 1); - break; - case 'm': - dhcp_num_mgmt_intf++; - assert(dhcp_num_mgmt_intf <= 1); - mgmt_intf = dev; - break; - default: - break; - } - - rv = dhcp_device_init(&dev->dev_context, dev->name, dev->is_uplink); - if (rv == 0 && intf_type == 'd') { - rv = dhcp_device_get_ip(dev->dev_context, &vlan_ip); - - dhcp_device_context_t *agg_dev = dhcp_device_get_aggregate_context(); - - strncpy(agg_dev->intf, AGG_DEV_PREFIX, strlen(AGG_DEV_PREFIX) + 1); - strncpy(agg_dev->intf + strlen(AGG_DEV_PREFIX), name, sizeof(agg_dev->intf) - strlen(AGG_DEV_PREFIX) - 1); - agg_dev->intf[sizeof(agg_dev->intf) - 1] = '\0'; - syslog(LOG_INFO, "dhcpmon add aggregate interface '%s'\n", agg_dev->intf); - } - std::string if_name; - if_name.assign(dev->name); - intfs[if_name] = dev; - } - else { - syslog(LOG_ALERT, "malloc: failed to allocate memory for intf '%s'\n", name); - } - - return rv; -} - -/** - * @code dhcp_devman_setup_dual_tor_mode(name); - * - * @brief set up dual tor mode: 1) set dual_tor_mode flag and 2) retrieve loopback_ip. - */ -int dhcp_devman_setup_dual_tor_mode(const char *name) -{ - int rv = -1; - - dhcp_device_context_t loopback_intf_context; - - if (strlen(name) < sizeof(loopback_intf_context.intf)) { - strncpy(loopback_intf_context.intf, name, sizeof(loopback_intf_context.intf) - 1); - loopback_intf_context.intf[sizeof(loopback_intf_context.intf) - 1] = '\0'; - } else { - syslog(LOG_ALERT, "loopback interface name (%s) is too long", name); - return rv; - } - - if (initialize_intf_mac_and_ip_addr(&loopback_intf_context) == 0 && - dhcp_device_get_ip(&loopback_intf_context, &loopback_ip) == 0) { - dual_tor_mode = 1; - } else { - syslog(LOG_ALERT, "failed to retrieve ip addr for loopback interface (%s)", name); - return rv; - } - - rv = 0; - return rv; -} - -/** - * @code dhcp_devman_start_capture(snaplen, base); - * - * @brief start packet capture on the devman interface list - */ -int dhcp_devman_start_capture(size_t snaplen, struct event_base *base) -{ - int rv = -1; - - if ((dhcp_num_south_intf == 1) && (dhcp_num_north_intf >= 1)) { - rv = dhcp_device_start_capture(snaplen, base, dual_tor_mode ? loopback_ip : vlan_ip); - if (rv != 0) { - syslog(LOG_ALERT, "Capturing DHCP packets on interface failed"); - exit(1); - } - } - else { - syslog(LOG_ERR, "Invalid number of interfaces, downlink/south %d, uplink/north %d\n", - dhcp_num_south_intf, dhcp_num_north_intf); - } - - return rv; -} - -/** - * @code dhcp_devman_get_status(check_type, context); - * - * @brief collects DHCP relay status info. - */ -dhcp_mon_status_t dhcp_devman_get_status(dhcp_mon_check_t check_type, dhcp_device_context_t *context) -{ - return dhcp_device_get_status(check_type, context); -} - -/** - * @code dhcp_devman_update_snapshot(context); - * - * @brief Update device/interface counters snapshot - */ -void dhcp_devman_update_snapshot(dhcp_device_context_t *context) -{ - if (context == NULL) { - for (auto &itr : intfs) { - dhcp_device_update_snapshot(itr.second->dev_context); - } - dhcp_device_update_snapshot(dhcp_devman_get_agg_dev()); - } else { - dhcp_device_update_snapshot(context); - } -} - -/** - * @code dhcp_devman_print_status(context, type); - * - * @brief prints status counters to syslog, if context is null, it prints status counters for all interfaces - */ -void dhcp_devman_print_status(dhcp_device_context_t *context, dhcp_counters_type_t type) -{ - if (context == NULL) { - for (auto &itr : intfs) { - dhcp_device_print_status(itr.second->dev_context, type); - } - dhcp_device_print_status(dhcp_devman_get_agg_dev(), type); - } else { - dhcp_device_print_status(context, type); - } -} diff --git a/src/dhcpmon/src/dhcp_devman.h b/src/dhcpmon/src/dhcp_devman.h deleted file mode 100644 index d1c80cf30e9f..000000000000 --- a/src/dhcpmon/src/dhcp_devman.h +++ /dev/null @@ -1,132 +0,0 @@ -/** - * @file dhcp_devman.h - * - * Device (interface) manager - */ - -#ifndef DHCP_DEVMAN_H_ -#define DHCP_DEVMAN_H_ - -#include -#include -#include - -#include "dhcp_device.h" - -/** struct for interface information */ -struct intf -{ - const char *name; /** interface name */ - uint8_t is_uplink; /** is uplink (north) interface */ - dhcp_device_context_t *dev_context; /** device (interface_ context */ -}; - -/** - * @code dhcp_devman_init(); - * - * @brief initializes device (interface) manager that keeps track of interfaces and assert that there is one south - * interface and as many north interfaces - * - * @return none - */ -void dhcp_devman_init(); - -/** - * @code dhcp_devman_shutdown(); - * - * @brief shuts down device (interface) manager. Also, stops packet capture on interface and cleans up any allocated - * memory - * - * @return none - */ -void dhcp_devman_shutdown(); - -/** - * @code dhcp_devman_get_vlan_intf(); - * - * @brief Accessor method - * - * @return pointer to aggregate device (interface) context - */ -dhcp_device_context_t* dhcp_devman_get_agg_dev(); - -/** - * @code dhcp_devman_get_mgmt_intf_context(); - * - * @brief Accessor method - * - * @return pointer to mgmt interface context - */ -dhcp_device_context_t* dhcp_devman_get_mgmt_dev(); - -/** - * @code dhcp_devman_add_intf(name, uplink); - * - * @brief adds interface to the device manager. - * - * @param name interface name - * @param intf_type 'u' for uplink (north) interface - * 'd' for downlink (south) interface - * 'm' for mgmt interface - * - * @return 0 on success, nonzero otherwise - */ -int dhcp_devman_add_intf(const char *name, char intf_type); - -/** - * @code dhcp_devman_setup_dual_tor_mode(name); - * - * @brief set up dual tor mode: 1) set dual_tor_mode flag and 2) retrieve loopback_ip. - * - * @param name interface name - * - * @return 0 on success, nonzero otherwise - */ -int dhcp_devman_setup_dual_tor_mode(const char *name); - -/** - * @code dhcp_devman_start_capture(snaplen, base); - * - * @brief start packet capture on the devman interface list - * - * @param snaplen packet packet capture snap length - * @param base libevent base - * - * @return 0 on success, nonzero otherwise - */ -int dhcp_devman_start_capture(size_t snaplen, struct event_base *base); - -/** - * @code dhcp_devman_get_status(check_type, context); - * - * @brief collects DHCP relay status info. - * - * @param check_type Type of validation - * @param context pointer to device (interface) context - * - * @return DHCP_MON_STATUS_HEALTHY, DHCP_MON_STATUS_UNHEALTHY, or DHCP_MON_STATUS_INDETERMINATE - */ -dhcp_mon_status_t dhcp_devman_get_status(dhcp_mon_check_t check_type, dhcp_device_context_t *context); - -/** - * @code dhcp_devman_update_snapshot(context); - * - * @param context Device (interface) context - * - * @brief Update device/interface counters snapshot - */ -void dhcp_devman_update_snapshot(dhcp_device_context_t *context); - -/** - * @code dhcp_devman_print_status(context, type); - * - * @brief prints status counters to syslog - * - * @param context pointer to device (interface) context - * @param type Counter type to be printed - * - * @return none - */ -void dhcp_devman_print_status(dhcp_device_context_t *context, dhcp_counters_type_t type); - -#endif /* DHCP_DEVMAN_H_ */ diff --git a/src/dhcpmon/src/dhcp_mon.cpp b/src/dhcpmon/src/dhcp_mon.cpp deleted file mode 100644 index 66f2001b6e27..000000000000 --- a/src/dhcpmon/src/dhcp_mon.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/** - * @file dhcp_mon.c - * - * @brief dhcp relay monitor module - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "dhcp_mon.h" -#include "dhcp_devman.h" -#include "events.h" - -/** DHCP device/interface state */ -typedef struct -{ - dhcp_mon_check_t check_type; /** check type */ - dhcp_device_context_t* (*get_context)(); /** functor to a device context accessor function */ - int count; /** count in the number of unhealthy checks */ - const char *msg; /** message to be printed if unhealthy state is determined */ -} dhcp_mon_state_t; - -/** window_interval_sec monitoring window for dhcp relay health checks */ -static int window_interval_sec = 18; -/** dhcp_unhealthy_max_count max count of consecutive unhealthy statuses before reporting to syslog */ -static int dhcp_unhealthy_max_count = 10; -/** dhcpmon debug mode control flag */ -static bool debug_on = false; -/** libevent base struct */ -static struct event_base *base; -/** libevent timeout event struct */ -static struct event *ev_timeout = NULL; -/** libevent SIGINT signal event struct */ -static struct event *ev_sigint; -/** libevent SIGTERM signal event struct */ -static struct event *ev_sigterm; -/** libevent SIGUSR1 signal event struct */ -static struct event *ev_sigusr1; - -event_handle_t g_events_handle; - -/** DHCP monitor state data for aggregate device for mgmt device */ -static dhcp_mon_state_t state_data[] = { - [0] = { - .check_type = DHCP_MON_CHECK_POSITIVE, - .get_context = dhcp_devman_get_agg_dev, - .count = 0, - .msg = "dhcpmon detected disparity in DHCP Relay behavior. Duration: %d (sec) for vlan: '%s'\n" - }, - [1] = { - .check_type = DHCP_MON_CHECK_NEGATIVE, - .get_context = dhcp_devman_get_mgmt_dev, - .count = 0, - .msg = "dhcpmon detected DHCP packets traveling through mgmt interface (please check BGP routes.)" - " Duration: %d (sec) for intf: '%s'\n" - } -}; - -/** - * @code signal_callback(fd, event, arg); - * - * @brief signal handler for dhcpmon. It will initiate shutdown when signal is caught - * - * @param fd libevent socket - * @param event event triggered - * @param arg pointer to user provided context (libevent base) - * - * @return none - */ -static void signal_callback(evutil_socket_t fd, short event, void *arg) -{ - syslog(LOG_ALERT, "Received signal: '%s'\n", strsignal(fd)); - dhcp_devman_print_status(NULL, DHCP_COUNTERS_CURRENT); - if ((fd == SIGTERM) || (fd == SIGINT)) { - dhcp_mon_stop(); - } -} - -/** - * @code check_dhcp_relay_health(state_data); - * - * @brief check DHCP relay overall health - * - * @param state_data pointer to dhcpmon state data - * - * @return none - */ -static void check_dhcp_relay_health(dhcp_mon_state_t *state_data) -{ - dhcp_device_context_t *context = state_data->get_context(); - dhcp_mon_status_t dhcp_mon_status = dhcp_devman_get_status(state_data->check_type, context); - - switch (dhcp_mon_status) - { - case DHCP_MON_STATUS_UNHEALTHY: - if (++state_data->count > dhcp_unhealthy_max_count) { - auto duration = state_data->count * window_interval_sec; - std::string vlan(context->intf); - syslog(LOG_ALERT, state_data->msg, duration, context->intf); - if (state_data->check_type == DHCP_MON_CHECK_POSITIVE) { - event_params_t params = { - { "vlan", vlan }, - { "duration", std::to_string(duration) }}; - event_publish(g_events_handle, "dhcp-relay-disparity", ¶ms); - } - dhcp_devman_print_status(context, DHCP_COUNTERS_SNAPSHOT); - dhcp_devman_print_status(context, DHCP_COUNTERS_CURRENT); - } - break; - case DHCP_MON_STATUS_HEALTHY: - state_data->count = 0; - break; - case DHCP_MON_STATUS_INDETERMINATE: - if (state_data->count) { - state_data->count++; - } - break; - default: - syslog(LOG_ERR, "DHCP Relay returned unknown status %d\n", dhcp_mon_status); - break; - } -} - -/** - * @code timeout_callback(fd, event, arg); - * - * @brief periodic timer call back - * - * @param fd libevent socket - * @param event event triggered - * @param arg pointer user provided context (libevent base) - * - * @return none - */ -static void timeout_callback(evutil_socket_t fd, short event, void *arg) -{ - for (uint8_t i = 0; i < sizeof(state_data) / sizeof(*state_data); i++) { - check_dhcp_relay_health(&state_data[i]); - } - - dhcp_devman_update_snapshot(NULL); - - if (debug_on) { - dhcp_devman_print_status(NULL, DHCP_COUNTERS_SNAPSHOT); - dhcp_devman_print_status(NULL, DHCP_COUNTERS_CURRENT); - } -} - -/** - * @code dhcp_mon_init(window_sec, max_count); - * - * initializes event base and periodic timer event that continuously collects dhcp relay health status every window_sec - * seconds. It also writes to syslog when dhcp relay has been unhealthy for consecutive max_count checks. - * - */ -int dhcp_mon_init(int window_sec, int max_count) -{ - int rv = -1; - - do { - window_interval_sec = window_sec; - dhcp_unhealthy_max_count = max_count; - - base = event_base_new(); - if (base == NULL) { - syslog(LOG_ERR, "Could not initialize libevent!\n"); - break; - } - - ev_sigint = evsignal_new(base, SIGINT, signal_callback, base); - if (ev_sigint == NULL) { - syslog(LOG_ERR, "Could not create SIGINT libevent signal!\n"); - break; - } - - ev_sigterm = evsignal_new(base, SIGTERM, signal_callback, base); - if (ev_sigterm == NULL) { - syslog(LOG_ERR, "Could not create SIGTERM libevent signal!\n"); - break; - } - - ev_sigusr1 = evsignal_new(base, SIGUSR1, signal_callback, base); - if (ev_sigusr1 == NULL) { - syslog(LOG_ERR, "Could not create SIGUSER1 libevent signal!\n"); - break; - } - - ev_timeout = event_new(base, -1, EV_PERSIST, timeout_callback, base); - if (ev_timeout == NULL) { - syslog(LOG_ERR, "Could not create libevent timer!\n"); - break; - } - - g_events_handle = events_init_publisher("sonic-events-dhcp-relay"); - - rv = 0; - } while (0); - - return rv; -} - -/** - * @code dhcp_mon_shutdown(); - * - * @brief shuts down libevent loop - */ -void dhcp_mon_shutdown() -{ - event_del(ev_timeout); - event_del(ev_sigint); - event_del(ev_sigterm); - event_del(ev_sigusr1); - - event_free(ev_timeout); - event_free(ev_sigint); - event_free(ev_sigterm); - event_free(ev_sigusr1); - - event_base_free(base); - - events_deinit_publisher(g_events_handle); -} - -/** - * @code dhcp_mon_start(snaplen, debug_mode); - * - * @brief start monitoring DHCP Relay - */ -int dhcp_mon_start(size_t snaplen, bool debug_mode) -{ - int rv = -1; - debug_on = debug_mode; - - do - { - if (dhcp_devman_start_capture(snaplen, base) != 0) { - break; - } - - if (evsignal_add(ev_sigint, NULL) != 0) { - syslog(LOG_ERR, "Could not add SIGINT libevent signal!\n"); - break; - } - - if (evsignal_add(ev_sigterm, NULL) != 0) { - syslog(LOG_ERR, "Could not add SIGTERM libevent signal!\n"); - break; - } - - if (evsignal_add(ev_sigusr1, NULL) != 0) { - syslog(LOG_ERR, "Could not add SIGUSR1 libevent signal!\n"); - break; - } - - struct timeval event_time = {.tv_sec = window_interval_sec, .tv_usec = 0}; - if (evtimer_add(ev_timeout, &event_time) != 0) { - syslog(LOG_ERR, "Could not add event timer to libevent!\n"); - break; - } - - if (event_base_dispatch(base) != 0) { - syslog(LOG_ERR, "Could not start libevent dispatching loop!\n"); - break; - } - rv = 0; - } while (0); - - return rv; -} - -/** - * @code dhcp_mon_stop(); - * - * @brief stop monitoring DHCP Relay - */ -void dhcp_mon_stop() -{ - event_base_loopexit(base, NULL); -} diff --git a/src/dhcpmon/src/dhcp_mon.h b/src/dhcpmon/src/dhcp_mon.h deleted file mode 100644 index 5bae01f5962b..000000000000 --- a/src/dhcpmon/src/dhcp_mon.h +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @file dhcp_mon.h - * - * @brief dhcp relay monitor module - * - */ - -#ifndef DHCP_MON_H_ -#define DHCP_MON_H_ - -/** - * @code dhcp_mon_init(window_ssec, max_count); - * - * @brief initializes event base and periodic timer event that continuously collects dhcp relay health status every - * window_sec seconds. It also writes to syslog when dhcp relay has been unhealthy for consecutive max_count - * checks. - * - * @param window_sec time interval between health checks - * @param max_count max count of consecutive unhealthy statuses before reporting to syslog - * - * @return 0 upon success, otherwise upon failure - */ -int dhcp_mon_init(int window_sec, int max_count); - -/** - * @code dhcp_mon_shutdown(); - * - * @brief shuts down libevent loop - * - * @return none - */ -void dhcp_mon_shutdown(); - -/** - * @code dhcp_mon_start(snaplen, debug); - * - * @brief start monitoring DHCP Relay - * - * @param snaplen packet capture length - * @param debug turn on debug or not - * - * @return 0 upon success, otherwise upon failure - */ -int dhcp_mon_start(size_t snaplen, bool debug); - -/** - * @code dhcp_mon_stop(); - * - * @brief stop monitoring DHCP Relay - * - * @return none - */ -void dhcp_mon_stop(); - -#endif /* DHCP_MON_H_ */ diff --git a/src/dhcpmon/src/main.cpp b/src/dhcpmon/src/main.cpp deleted file mode 100644 index e660bbd908a9..000000000000 --- a/src/dhcpmon/src/main.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/** - * @file main.c - * - * @brief: Main entry point for dhcpmon utility. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "subscriberstatetable.h" -#include "select.h" - -#include "dhcp_mon.h" -#include "dhcp_devman.h" -#include "dhcp_device.h" - -/** dhcpmon_default_snaplen: default snap length of packet being captured */ -static const size_t dhcpmon_default_snaplen = 65535; -/** dhcpmon_default_health_check_window: default value for a time window, during which DHCP DORA packet counts are being - * collected */ -static const uint32_t dhcpmon_default_health_check_window = 18; -/** dhcpmon_default_unhealthy_max_count: default max consecutive unhealthy status reported before reporting an issue - * with DHCP relay */ -static const uint32_t dhcpmon_default_unhealthy_max_count = 10; - -bool dual_tor_sock = false; - -/** - * @code usage(prog); - * - * @brief prints help message about how to use dhcpmon utility - * - * @param prog program name - * - * @return none - */ -static void usage(const char *prog) -{ - printf("Usage: %s -id {-iu }+ -im [-u ]" - "[-w ] [-c ] [-s ] [-D] [-d]\n", prog); - printf("where\n"); - printf("\tsouth interface: is a vlan interface,\n"); - printf("\tnorth interface: is a TOR-T1 interface,\n"); - printf("\tloopback interface: is the loopback interface for dual tor setup,\n"); - printf("\tsnapshot window: during which DHCP counters are gathered and DHCP status is validated (default %d),\n", - dhcpmon_default_health_check_window); - printf("\tunhealthy status count: count of consecutive unhealthy status before writing an alert to syslog " - "(default %d),\n", - dhcpmon_default_unhealthy_max_count); - printf("\tsnap length: snap length of packet capture (default %ld),\n", dhcpmon_default_snaplen); - printf("\t-D: debug mode: print counter to syslog\n"); - printf("\t-d: daemonize %s.\n", prog); - - exit(EXIT_SUCCESS); -} - -/** - * @code dhcpmon_daemonize(); - * - * @brief make this utility run as a daemon. - * - * @return none - */ -static void dhcpmon_daemonize() -{ - pid_t pid, sid; - pid = fork(); - if (pid < 0) { - syslog(LOG_ALERT, "fork: %s", strerror(errno)); - exit(EXIT_FAILURE); - } - - if (pid > 0) { - exit(EXIT_SUCCESS); - } - - // this is the daemon running now - umask(0); - // Create a new SID for the child process - sid = setsid(); - if (sid < 0) { - syslog(LOG_ALERT, "setsid: %s", strerror(errno)); - exit(EXIT_FAILURE); - } - - // Change the current working directory - if ((chdir("/")) < 0) { - syslog(LOG_ALERT, "chdir: %s", strerror(errno)); - exit(EXIT_FAILURE); - } - - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); -} - -/** - * @code main(argc, argv); - * - * @brief main entry point of dhcpmon utility - * - * @return int 0 on success, otherwise on failure - */ -int main(int argc, char **argv) -{ - int rv = EXIT_FAILURE; - int i; - int window_interval = dhcpmon_default_health_check_window; - int max_unhealthy_count = dhcpmon_default_unhealthy_max_count; - size_t snaplen = dhcpmon_default_snaplen; - int make_daemon = 0; - bool debug_mode = false; - - setlogmask(LOG_UPTO(LOG_INFO)); - openlog(basename(argv[0]), LOG_CONS | LOG_PID | LOG_NDELAY, LOG_DAEMON); - - for (i = 1; i < argc;) { - if ((argv[i] == NULL) || (argv[i][0] != '-')) { - break; - } - switch (argv[i][1]) - { - case 'h': - usage(basename(argv[0])); - break; - case 'i': - if (dhcp_devman_add_intf(argv[i + 1], argv[i][2]) != 0) { - usage(basename(argv[0])); - } - i += 2; - break; - case 'u': - dual_tor_sock = true; - if (dhcp_devman_setup_dual_tor_mode(argv[i + 1]) != 0) { - usage(basename(argv[0])); - } - i += 2; - break; - case 'd': - make_daemon = 1; - i++; - break; - case 's': - snaplen = atoi(argv[i + 1]); - i += 2; - break; - case 'w': - window_interval = atoi(argv[i + 1]); - i += 2; - break; - case 'c': - max_unhealthy_count = atoi(argv[i + 1]); - i += 2; - break; - case 'D': - debug_mode = true; - i += 1; - break; - default: - fprintf(stderr, "%s: %c: Unknown option\n", basename(argv[0]), argv[i][1]); - usage(basename(argv[0])); - } - } - - if (make_daemon) { - dhcpmon_daemonize(); - } - - if ((dhcp_mon_init(window_interval, max_unhealthy_count) == 0) && - (dhcp_mon_start(snaplen, debug_mode) == 0)) { - - rv = EXIT_SUCCESS; - - dhcp_mon_shutdown(); - } - - dhcp_devman_shutdown(); - - closelog(); - - return rv; -} diff --git a/src/dhcpmon/src/subdir.mk b/src/dhcpmon/src/subdir.mk deleted file mode 100644 index dd808aeb7202..000000000000 --- a/src/dhcpmon/src/subdir.mk +++ /dev/null @@ -1,29 +0,0 @@ -# Add inputs and outputs from these tool invocations to the build variables -CC := g++ - -C_SRCS += \ -../src/dhcp_device.cpp \ -../src/dhcp_devman.cpp \ -../src/dhcp_mon.cpp \ -../src/main.cpp - -OBJS += \ -./src/dhcp_device.o \ -./src/dhcp_devman.o \ -./src/dhcp_mon.o \ -./src/main.o - -C_DEPS += \ -./src/dhcp_device.d \ -./src/dhcp_devman.d \ -./src/dhcp_mon.d \ -./src/main.d - - -# Each subdirectory must supply rules for building sources it contributes -src/%.o: src/%.cpp - @echo 'Building file: $<' - @echo 'Invoking: GCC C Compiler' - $(CC) -O3 -g3 -Wall -I$(PWD)/../sonic-swss-common/common -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" - @echo 'Finished building: $<' - @echo ' ' From 78ca0dae2ae7b9e243372ec58f5448a07e80c3b3 Mon Sep 17 00:00:00 2001 From: "Ravi [Marvell]" Date: Fri, 31 Mar 2023 00:03:20 +0530 Subject: [PATCH 31/59] Add platform files for Innovium platform (#12653) Why I did it Add platform files for critical processes and default qos config for Innovium platforms How I did it Added default files for critical processes and qos config How to verify it Tested with autorestart/test_container_autorestart.py::test_containers_autorestart Signed-off-by: rck-innovium rck@innovium.com --- .../docker-syncd-invm/critical_processes | 1 + .../innovium/docker-syncd-invm/ivm_start.sh | 39 +++++++++++++++++++ platform/innovium/docker-syncd-invm/start.sh | 6 +++ 3 files changed, 46 insertions(+) create mode 100644 platform/innovium/docker-syncd-invm/critical_processes create mode 100755 platform/innovium/docker-syncd-invm/ivm_start.sh create mode 100755 platform/innovium/docker-syncd-invm/start.sh diff --git a/platform/innovium/docker-syncd-invm/critical_processes b/platform/innovium/docker-syncd-invm/critical_processes new file mode 100644 index 000000000000..bdd6903c5690 --- /dev/null +++ b/platform/innovium/docker-syncd-invm/critical_processes @@ -0,0 +1 @@ +program:syncd diff --git a/platform/innovium/docker-syncd-invm/ivm_start.sh b/platform/innovium/docker-syncd-invm/ivm_start.sh new file mode 100755 index 000000000000..896d209702f8 --- /dev/null +++ b/platform/innovium/docker-syncd-invm/ivm_start.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +TOPO_CONF=/usr/share/sonic/platform/topo.conf +if [ -f ${TOPO_CONF} ]; then + topo=`cat ${TOPO_CONF}` +else + topo="none" +fi + +if [ ${topo} != "none" ]; then + BUFFER_CONFIG=/usr/share/sonic/hwsku/buffers_defaults_${topo}.j2 + QOS_CONFIG=/usr/share/sonic/hwsku/qos_defaults_${topo}.j2 + + if [ "$(/usr/local/bin/sonic-cfggen -d -v TC_TO_PRIORITY_GROUP_MAP)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v MAP_PFC_PRIORITY_TO_QUEUE)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v TC_TO_QUEUE_MAP)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v DSCP_TO_TC_MAP)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v SCHEDULER)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v PFC_PRIORITY_TO_PRIORITY_GROUP_MAP)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v PORT_QOS_MAP)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v WRED_PROFILE)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v QUEUE)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v CABLE_LENGTH)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v BUFFER_POOL)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v BUFFER_PROFILE)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v BUFFER_PG)" ] || \ + [ "$(/usr/local/bin/sonic-cfggen -d -v BUFFER_QUEUE)" ]; then + echo "Database has QoS settings, skip loading defaults" + elif [ -f "$BUFFER_CONFIG" ] && [ -f "$QOS_CONFIG" ]; then + /usr/local/bin/sonic-cfggen -d -t $BUFFER_CONFIG >/tmp/buffers.json + /usr/local/bin/sonic-cfggen -d -t $QOS_CONFIG -y /etc/sonic/sonic_version.yml >/tmp/qos.json + /usr/local/bin/sonic-cfggen -j /tmp/buffers.json --write-to-db + /usr/local/bin/sonic-cfggen -j /tmp/qos.json --write-to-db + else + echo "File not found (${BUFFER_CONFIG} and/or ${QOS_CONFIG})" + fi +else + echo "Skip QoS config" +fi diff --git a/platform/innovium/docker-syncd-invm/start.sh b/platform/innovium/docker-syncd-invm/start.sh new file mode 100755 index 000000000000..32bdb12ebfc0 --- /dev/null +++ b/platform/innovium/docker-syncd-invm/start.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +if [ -f /usr/bin/ivm_start.sh ]; +then + /usr/bin/ivm_start.sh +fi From f51e5bba1fc40fd06da76d3c0a7535432fbd6605 Mon Sep 17 00:00:00 2001 From: lixiaoyuner <35456895+lixiaoyuner@users.noreply.github.com> Date: Fri, 31 Mar 2023 02:41:02 +0800 Subject: [PATCH 32/59] Refactor the logic of tagging kube container as local latest (#14367) Why I did it We found a bug when pilot, the tag function doesn't remove the ACR domain when do tag, it makes the latest tag not work. And in the original tag function, it calls os.system and os.popen which are not recommend, need to refactor. How I did it Do a split("/") when get image_rep to fix the acr domain bug Refactor the tag function code and add test cases How to verify it Check whether container images are tagged as latest when in kube mode. --- src/sonic-ctrmgrd/ctrmgr/ctrmgrd.py | 93 ++++++--------- src/sonic-ctrmgrd/ctrmgr/kube_commands.py | 69 +++++++++++ .../ctrmgr/remote_ctr.config.json | 1 + src/sonic-ctrmgrd/tests/common_test.py | 11 +- src/sonic-ctrmgrd/tests/ctrmgrd_test.py | 9 -- src/sonic-ctrmgrd/tests/kube_commands_test.py | 107 ++++++++++++++++++ 6 files changed, 220 insertions(+), 70 deletions(-) diff --git a/src/sonic-ctrmgrd/ctrmgr/ctrmgrd.py b/src/sonic-ctrmgrd/ctrmgr/ctrmgrd.py index 84c23f9f0eba..1dd329005948 100755 --- a/src/sonic-ctrmgrd/ctrmgr/ctrmgrd.py +++ b/src/sonic-ctrmgrd/ctrmgr/ctrmgrd.py @@ -54,6 +54,16 @@ KUBE_LABEL_TABLE = "KUBE_LABELS" KUBE_LABEL_SET_KEY = "SET" +MODE_KUBE = "kube" +MODE_LOCAL = "local" +OWNER_KUBE = "kube" +OWNER_LOCAL = "local" +OWNER_NONE = "none" +REMOTE_READY = "ready" +REMOTE_PENDING = "pending" +REMOTE_STOPPED = "stopped" +REMOTE_NONE = "none" + remote_connected = False dflt_cfg_ser = { @@ -89,6 +99,7 @@ JOIN_RETRY = "retry_join_interval_seconds" LABEL_RETRY = "retry_labels_update_seconds" TAG_IMAGE_LATEST = "tag_latest_image_on_wait_seconds" +TAG_RETRY = "retry_tag_latest_seconds" USE_K8S_PROXY = "use_k8s_as_http_proxy" remote_ctr_config = { @@ -96,6 +107,7 @@ JOIN_RETRY: 10, LABEL_RETRY: 2, TAG_IMAGE_LATEST: 30, + TAG_RETRY: 5, USE_K8S_PROXY: "" } @@ -151,9 +163,6 @@ def init(): with open(SONIC_CTR_CONFIG, "r") as s: d = json.load(s) remote_ctr_config.update(d) - if UNIT_TESTING: - remote_ctr_config[TAG_IMAGE_LATEST] = 0 - class MainServer: """ Implements main io-loop of the application @@ -437,55 +446,6 @@ def do_join(self, ip, port, insecure): log_debug("kube_join_master failed retry after {} seconds @{}". format(remote_ctr_config[JOIN_RETRY], self.start_time)) - -def tag_latest_image(server, feat, docker_id, image_ver): - res = 1 - if not UNIT_TESTING: - status = os.system("docker ps |grep {} >/dev/null".format(docker_id)) - if status: - syslog.syslog(syslog.LOG_ERR, - "Feature {}:{} is not stable".format(feat, image_ver)) - else: - image_item = os.popen("docker inspect {} |jq -r .[].Image".format(docker_id)).read().strip() - if image_item: - image_id = image_item.split(":")[1][:12] - image_info = os.popen("docker images |grep {}".format(image_id)).read().split() - if image_info: - image_rep = image_info[0] - res = os.system("docker tag {} {}:latest".format(image_id, image_rep)) - if res != 0: - syslog.syslog(syslog.LOG_ERR, - "Failed to tag {}:{} to latest".format(image_rep, image_ver)) - else: - syslog.syslog(syslog.LOG_INFO, - "Successfully tag {}:{} to latest".format(image_rep, image_ver)) - feat_status = os.popen("docker inspect {} |jq -r .[].State.Running".format(feat)).read().strip() - if feat_status: - if feat_status == 'true': - os.system("docker stop {}".format(feat)) - syslog.syslog(syslog.LOG_ERR, - "{} should not run, stop it".format(feat)) - os.system("docker rm {}".format(feat)) - syslog.syslog(syslog.LOG_INFO, - "Delete previous {} container".format(feat)) - else: - syslog.syslog(syslog.LOG_ERR, - "Failed to docker images |grep {} to get image repo".format(image_id)) - else: - syslog.syslog(syslog.LOG_ERR, - "Failed to inspect container:{} to get image id".format(docker_id)) - else: - server.mod_db_entry(STATE_DB_NAME, - FEATURE_TABLE, feat, {"tag_latest": "true"}) - res = 0 - if res: - log_debug("failed to tag {}:{} to latest".format(feat, image_ver)) - else: - log_debug("successfully tag {}:{} to latest".format(feat, image_ver)) - - return res - - # # Feature changes # @@ -512,7 +472,9 @@ def handle_update(self, feat, set_owner, ct_owner, remote_state): # There after only called upon changes in either that requires action # if not is_systemd_active(feat): - # Nothing todo, if system state is down + # Restart the service manually when kube upgrade happens to decrease the down time + if set_owner == MODE_KUBE and ct_owner == OWNER_NONE and remote_state == REMOTE_STOPPED: + restart_systemd_service(self.server, feat, OWNER_KUBE) return label_add = set_owner == "kube" @@ -587,8 +549,7 @@ def on_state_update(self, key, op, data): # Tag latest start_time = datetime.datetime.now() + datetime.timedelta( seconds=remote_ctr_config[TAG_IMAGE_LATEST]) - self.server.register_timer(start_time, tag_latest_image, ( - self.server, + self.server.register_timer(start_time, self.do_tag_latest, ( key, self.st_data[key][ST_FEAT_CTR_ID], self.st_data[key][ST_FEAT_CTR_VER])) @@ -596,10 +557,13 @@ def on_state_update(self, key, op, data): log_debug("try to tag latest label after {} seconds @{}".format( remote_ctr_config[TAG_IMAGE_LATEST], start_time)) - if (not init) and ( - (old_remote_state == remote_state) or (remote_state != "pending")): - # no change or nothing to do. - return + if (not init): + if (old_remote_state == remote_state): + # if no remote state change, do nothing. + return + if (remote_state not in (REMOTE_PENDING, REMOTE_STOPPED)): + # if remote state not in pending or stopped, do nothing. + return if key in self.cfg_data: log_debug("{} init={} old_remote_state={} remote_state={}".format(key, init, old_remote_state, remote_state)) @@ -607,7 +571,18 @@ def on_state_update(self, key, op, data): self.st_data[key][ST_FEAT_OWNER], remote_state) return + + def do_tag_latest(self, feat, docker_id, image_ver): + ret = kube_commands.tag_latest(feat, docker_id, image_ver) + if ret != 0: + # Tag latest failed. Retry after an interval + self.start_time = datetime.datetime.now() + self.start_time += datetime.timedelta( + seconds=remote_ctr_config[TAG_RETRY]) + self.server.register_timer(self.start_time, self.do_tag_latest, (feat, docker_id, image_ver)) + log_debug("Tag latest as local failed retry after {} seconds @{}". + format(remote_ctr_config[TAG_RETRY], self.start_time)) # # Label re-sync diff --git a/src/sonic-ctrmgrd/ctrmgr/kube_commands.py b/src/sonic-ctrmgrd/ctrmgr/kube_commands.py index 783f122ec914..6576f2580079 100755 --- a/src/sonic-ctrmgrd/ctrmgr/kube_commands.py +++ b/src/sonic-ctrmgrd/ctrmgr/kube_commands.py @@ -412,7 +412,76 @@ def kube_reset_master(force): return (ret, err) +def _do_tag(docker_id, image_ver): + err = "" + out = "" + ret = 1 + status, _, err = _run_command("docker ps |grep {}".format(docker_id)) + if status == 0: + _, image_item, err = _run_command("docker inspect {} |jq -r .[].Image".format(docker_id)) + if image_item: + image_id = image_item.split(":")[1][:12] + _, image_info, err = _run_command("docker images |grep {}".format(image_id)) + if image_info: + # Only need the docker repo name without acr domain + image_rep = image_info.split()[0].split("/")[-1] + tag_res, _, err = _run_command("docker tag {} {}:latest".format(image_id, image_rep)) + if tag_res == 0: + out = "docker tag {} {}:latest successfully".format(image_id, image_rep) + ret = 0 + else: + err = "Failed to tag {}:{} to latest. Err: {}".format(image_rep, image_ver, err) + else: + err = "Failed to docker images |grep {} to get image repo. Err: {}".format(image_id, err) + else: + err = "Failed to inspect container:{} to get image id. Err: {}".format(docker_id, err) + elif err: + err = "Error happens when execute docker ps |grep {}. Err: {}".format(docker_id, err) + else: + out = "New version {} is not running.".format(image_ver) + ret = -1 + + return (ret, out, err) + +def _remove_container(feat): + err = "" + out = "" + ret = 0 + _, feat_status, err = _run_command("docker inspect {} |jq -r .[].State.Running".format(feat)) + if feat_status: + if feat_status == 'true': + err = "Feature {} container is running, it's unexpected".format(feat) + ret = 1 + else: + rm_res, _, err = _run_command("docker rm {}".format(feat)) + if rm_res == 0: + out = "Remove origin local {} container successfully".format(feat) + else: + err = "Failed to docker rm {}. Err: {}".format(feat, err) + ret = 1 + elif err.startswith("Error: No such object"): + out = "Origin local {} container has been removed before".format(feat) + err = "" + else: + err = "Failed to docker inspect {} |jq -r .[].State.Running. Err: {}".format(feat, err) + ret = 1 + + return (ret, out, err) +def tag_latest(feat, docker_id, image_ver): + ret, out, err = _do_tag(docker_id, image_ver) + if ret == 0: + log_debug(out) + ret, out, err = _remove_container(feat) + if ret == 0: + log_debug(out) + else: + log_error(err) + elif ret == -1: + ret = 0 + else: + log_error(err) + return ret def main(): syslog.openlog("kube_commands") diff --git a/src/sonic-ctrmgrd/ctrmgr/remote_ctr.config.json b/src/sonic-ctrmgrd/ctrmgr/remote_ctr.config.json index 0b91fde36473..b6d26334865b 100644 --- a/src/sonic-ctrmgrd/ctrmgr/remote_ctr.config.json +++ b/src/sonic-ctrmgrd/ctrmgr/remote_ctr.config.json @@ -4,6 +4,7 @@ "retry_labels_update_seconds": 5, "revert_to_local_on_wait_seconds": 60, "tag_latest_image_on_wait_seconds": 600, + "retry_tag_latest_seconds": 30, "use_k8s_as_http_proxy": "n" } diff --git a/src/sonic-ctrmgrd/tests/common_test.py b/src/sonic-ctrmgrd/tests/common_test.py index 9283e3ad258e..59f774596a4e 100755 --- a/src/sonic-ctrmgrd/tests/common_test.py +++ b/src/sonic-ctrmgrd/tests/common_test.py @@ -58,6 +58,7 @@ PROC_THROW = "proc_throw" PROC_OUT = "subproc_output" PROC_ERR = "subproc_error" +PROC_CODE = "subproc_code" PROC_KILLED = "procs_killed" # container_start test cases @@ -605,6 +606,7 @@ def communicate(self, timeout): out_lst = current_test_data.get(PROC_OUT, None) err_lst = current_test_data.get(PROC_ERR, None) + code_lst = current_test_data.get(PROC_CODE, None) if out_lst: assert (len(out_lst) > self.index) out = out_lst[self.index] @@ -615,7 +617,11 @@ def communicate(self, timeout): err = err_lst[self.index] else: err = "" - self.returncode = 0 if not err else -1 + if code_lst: + assert (len(code_lst) > self.index) + self.returncode = code_lst[self.index] + else: + self.returncode = 0 if not err else -1 return (out, err) def kill(self): @@ -673,7 +679,8 @@ def create_remote_ctr_config_json(): "join_latency_on_boot_seconds": 2,\n\ "retry_join_interval_seconds": 0,\n\ "retry_labels_update_seconds": 0,\n\ - "revert_to_local_on_wait_seconds": 5\n\ + "revert_to_local_on_wait_seconds": 5,\n\ + "tag_latest_image_on_wait_seconds": 0\n\ }\n' fname = "/tmp/remote_ctr.config.json" diff --git a/src/sonic-ctrmgrd/tests/ctrmgrd_test.py b/src/sonic-ctrmgrd/tests/ctrmgrd_test.py index 842b935396d1..0a298dd60308 100755 --- a/src/sonic-ctrmgrd/tests/ctrmgrd_test.py +++ b/src/sonic-ctrmgrd/tests/ctrmgrd_test.py @@ -311,15 +311,6 @@ } } } - }, - common_test.POST: { - common_test.STATE_DB_NO: { - common_test.FEATURE_TABLE: { - "snmp": { - "tag_latest": "true" - } - } - } } } } diff --git a/src/sonic-ctrmgrd/tests/kube_commands_test.py b/src/sonic-ctrmgrd/tests/kube_commands_test.py index 60da7fd2c073..9b4dd6842bb8 100755 --- a/src/sonic-ctrmgrd/tests/kube_commands_test.py +++ b/src/sonic-ctrmgrd/tests/kube_commands_test.py @@ -213,6 +213,102 @@ } } +tag_latest_test_data = { + 0: { + common_test.DESCR: "Tag latest successfuly and remove origin local container", + common_test.RETVAL: 0, + common_test.ARGS: ["snmp", "123456", "v1"], + common_test.PROC_CMD: [ + "docker ps |grep 123456", + "docker inspect 123456 |jq -r .[].Image", + "docker images |grep 5425bcbd23c5", + "docker tag 5425bcbd23c5 snmp:latest", + "docker inspect snmp |jq -r .[].State.Running", + "docker rm snmp" + ], + common_test.PROC_OUT: [ + "", + "sha256:5425bcbd23c54270d9de028c09634f8e9a014e9351387160c133ccf3a53ab3dc", + "acr.io/snmp v1 5425bcbd23c5", + "", + "false", + "" + ] + }, + 1: { + common_test.DESCR: "Tag latest successfuly and origin local container has been removed before", + common_test.RETVAL: 0, + common_test.ARGS: ["snmp", "123456", "v1"], + common_test.PROC_CMD: [ + "docker ps |grep 123456", + "docker inspect 123456 |jq -r .[].Image", + "docker images |grep 5425bcbd23c5", + "docker tag 5425bcbd23c5 snmp:latest", + "docker inspect snmp |jq -r .[].State.Running", + "docker rm snmp" + ], + common_test.PROC_OUT: [ + "", + "sha256:5425bcbd23c54270d9de028c09634f8e9a014e9351387160c133ccf3a53ab3dc", + "acr.io/snmp v1 5425bcbd23c5", + "", + "", + "" + ], + common_test.PROC_ERR: [ + "", + "", + "", + "", + "Error: No such object", + "" + ] + }, + 2: { + common_test.DESCR: "Tag a unstable container", + common_test.RETVAL: 0, + common_test.ARGS: ["snmp", "123456", "v1"], + common_test.PROC_CMD: [ + "docker ps |grep 123456" + ], + common_test.PROC_CODE: [ + 1 + ] + }, + 3: { + common_test.DESCR: "Docker error", + common_test.RETVAL: 1, + common_test.ARGS: ["snmp", "123456", "v1"], + common_test.PROC_CMD: [ + "docker ps |grep 123456" + ], + common_test.PROC_ERR: [ + "err" + ] + }, + 4: { + common_test.DESCR: "Find local container is still running", + common_test.RETVAL: 1, + common_test.ARGS: ["snmp", "123456", "v1"], + common_test.PROC_CMD: [ + "docker ps |grep 123456", + "docker inspect 123456 |jq -r .[].Image", + "docker images |grep 5425bcbd23c5", + "docker tag 5425bcbd23c5 snmp:latest", + "docker inspect snmp |jq -r .[].State.Running", + "docker rm snmp" + ], + common_test.PROC_OUT: [ + "", + "sha256:5425bcbd23c54270d9de028c09634f8e9a014e9351387160c133ccf3a53ab3dc", + "acr.io/snmp v1 5425bcbd23c5", + "", + "true", + "" + ] + } +} + class TestKubeCommands(object): def init(self): @@ -360,3 +456,14 @@ def test_reset(self, mock_subproc): ct_data[common_test.ARGS][0]) if common_test.RETVAL in ct_data: assert ret == ct_data[common_test.RETVAL] + + @patch("kube_commands.subprocess.Popen") + def test_tag_latest(self, mock_subproc): + common_test.set_kube_mock(mock_subproc) + + for (i, ct_data) in tag_latest_test_data.items(): + common_test.do_start_test("tag:latest", i, ct_data) + + ret = kube_commands.tag_latest(*ct_data[common_test.ARGS]) + if common_test.RETVAL in ct_data: + assert ret == ct_data[common_test.RETVAL] From 896b292589c356117914d4f68f5fc5eb4f5ef57a Mon Sep 17 00:00:00 2001 From: andywongarista <78833093+andywongarista@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:50:40 -0700 Subject: [PATCH 33/59] [Arista] Update platform library submodules (#14450) implement chassis platform API reboot fix rpc powercycle on linecard fix psu/fan LED logic in arista daemon remove psu LED for PikeZ --- platform/barefoot/sonic-platform-modules-arista | 2 +- platform/broadcom/sonic-platform-modules-arista | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-arista b/platform/barefoot/sonic-platform-modules-arista index 99378f0b5b0f..c9888bb086c4 160000 --- a/platform/barefoot/sonic-platform-modules-arista +++ b/platform/barefoot/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 99378f0b5b0f28790d91bc317a0fe21e3a2cf6c9 +Subproject commit c9888bb086c4c528b8ae41a0e2089c57204742b6 diff --git a/platform/broadcom/sonic-platform-modules-arista b/platform/broadcom/sonic-platform-modules-arista index 99378f0b5b0f..c9888bb086c4 160000 --- a/platform/broadcom/sonic-platform-modules-arista +++ b/platform/broadcom/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 99378f0b5b0f28790d91bc317a0fe21e3a2cf6c9 +Subproject commit c9888bb086c4c528b8ae41a0e2089c57204742b6 From 54d6ea7c636732f45cd46652e2d4c8c05d6c54d7 Mon Sep 17 00:00:00 2001 From: "Marty Y. Lok" <76118573+mlok-nokia@users.noreply.github.com> Date: Thu, 30 Mar 2023 14:53:07 -0400 Subject: [PATCH 34/59] [marvell-armhf][uboot-setting] Fix the print menu for marvell-armhf print menu on Nokia-7215 (#13933) Why I did it After sonic-install install a new image, print_menu is set echo without any data. No image info between Hit any key to stop autoboot: 0 and Start USB Board configuration detected: Net: | port | Interface | PHY address | |--------|-----------|--------------| No ethernet found. Hit any key to stop autoboot: 0 (Re)start USB... USB0: Port (usbActive) : 0 Interface (usbType = 2) : USB EHCI 1.00 scanning bus 0 for devices... 3 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found How I did it The fw_setenv print_menu is missing the double quotes. That causes the value is truncated. Using double quotes to in the environment setting. How to verify it Install new image with this fix. And reboot the system. The following section should be shown: Signed-off-by: mlok --- platform/marvell-armhf/platform.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/marvell-armhf/platform.conf b/platform/marvell-armhf/platform.conf index 9e221992c502..0113c6a05ac0 100644 --- a/platform/marvell-armhf/platform.conf +++ b/platform/marvell-armhf/platform.conf @@ -175,7 +175,7 @@ prepare_boot_menu() { BOOT3='echo " > Boot3: ONIE - run onie_nand_boot";echo;' fi BORDER='echo "---------------------------------------------------";echo;' - fw_setenv ${FW_ARG} print_menu $BORDER $BOOT1 $BOOT2 $BOOT3 $BORDER > /dev/null + fw_setenv ${FW_ARG} print_menu "$BORDER $BOOT1 $BOOT2 $BOOT3 $BORDER" > /dev/null fw_setenv ${FW_ARG} linuxargs "net.ifnames=0 loopfstype=squashfs loop=$image_dir/$FILESYSTEM_SQUASHFS systemd.unified_cgroup_hierarchy=0 varlog_size=$VAR_LOG_SIZE loglevel=4 ${extra_cmdline_linux}" > /dev/null fw_setenv ${FW_ARG} linuxargs_old "net.ifnames=0 loopfstype=squashfs loop=$image_dir_old/$FILESYSTEM_SQUASHFS systemd.unified_cgroup_hierarchy=0 varlog_size=$VAR_LOG_SIZE loglevel=4" > /dev/null From 13ce540b03d40a22436c1fa2b182936b34cf5987 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sat, 1 Apr 2023 16:16:17 +0800 Subject: [PATCH 35/59] [submodule] Update submodule to the latest HEAD automatically (#14244) --- src/linkmgrd | 2 +- src/sonic-host-services | 2 +- src/sonic-mgmt-common | 2 +- src/sonic-platform-common | 2 +- src/sonic-platform-daemons | 2 +- src/sonic-sairedis | 2 +- src/sonic-swss | 2 +- src/sonic-swss-common | 2 +- src/sonic-utilities | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/linkmgrd b/src/linkmgrd index a062c19c310d..4945d49dc0a3 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit a062c19c310d1203b27b445902bc98b8ce5b651f +Subproject commit 4945d49dc0a31645c2b037762d20702ae63758cc diff --git a/src/sonic-host-services b/src/sonic-host-services index 66778525e75d..2fdb64b49f95 160000 --- a/src/sonic-host-services +++ b/src/sonic-host-services @@ -1 +1 @@ -Subproject commit 66778525e75d9badeb77812c6fce39648221fabc +Subproject commit 2fdb64b49f9597d39d09a230bc57b02e735882aa diff --git a/src/sonic-mgmt-common b/src/sonic-mgmt-common index 68e03410b936..22f82b4f83d7 160000 --- a/src/sonic-mgmt-common +++ b/src/sonic-mgmt-common @@ -1 +1 @@ -Subproject commit 68e03410b936e814034795be85a78e1991d329f3 +Subproject commit 22f82b4f83d7db6549283a77aea745755421605f diff --git a/src/sonic-platform-common b/src/sonic-platform-common index bbaa678241c6..81636a53208d 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit bbaa678241c6ef3c6269bb138b786ae67a69a1c1 +Subproject commit 81636a53208d51d758ae00f7adacdc1a4dfc5ac5 diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index e815bdf95e37..3d9cca6206b6 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit e815bdf95e3753d38c92310c9008bd6ee85fa968 +Subproject commit 3d9cca6206b6055d60bcd5aa02892bea7e808a57 diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 92c86676375a..60fa682fcce6 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 92c86676375aaf00cde13fafb658dbfa00cbbcd6 +Subproject commit 60fa682fcce68ef9100bb161a05b19cb5bed0c82 diff --git a/src/sonic-swss b/src/sonic-swss index c5fa616bde68..0949cf8ad636 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit c5fa616bde68d39e24445add0d5350b09a21bd92 +Subproject commit 0949cf8ad636776cf87a350049933a2a0411a415 diff --git a/src/sonic-swss-common b/src/sonic-swss-common index a50f74a251c2..c3b2c71ea46e 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit a50f74a251c2d67ee7655dcde9ee3823aff4ef44 +Subproject commit c3b2c71ea46e3e84e2e0337c5726ec0b2b90d2a1 diff --git a/src/sonic-utilities b/src/sonic-utilities index 832ef9c4c50e..e6f9f46413dc 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 832ef9c4c50e8cd3c0c745b34dac39280ada319b +Subproject commit e6f9f46413dc1dfc9da778984d81ff8ee8234194 From 66d3586fd4559c54e36dda195f15f6401a7e73b7 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sat, 1 Apr 2023 18:45:34 +0800 Subject: [PATCH 36/59] [ci/build]: Upgrade SONiC package versions (#14487) --- .../versions-deb-bullseye | 5 ++-- .../versions-deb-bullseye-armhf | 1 - .../versions-py3-all-armhf | 1 + files/build/versions/default/versions-git | 6 ++--- files/build/versions/default/versions-mirror | 24 +++++++++---------- .../versions-py3 | 2 +- .../docker-config-engine-buster/versions-py3 | 2 +- .../dockers/docker-ptf/versions-deb-buster | 12 ++++++---- .../dockers/sonic-slave-bullseye/versions-py3 | 4 ++-- .../sonic-slave-buster/versions-deb-buster | 18 +++++++------- .../dockers/sonic-slave-buster/versions-py3 | 4 ++-- 11 files changed, 41 insertions(+), 38 deletions(-) diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index ab539ea0fecf..b636f54033a4 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -30,7 +30,7 @@ libteam-utils==1.30-1 libteam5==1.30-1 libteamdctl0==1.30-1 libthrift-0.11.0==0.11.0-4 -libthrift-dev==0.14.1 +libthrift-dev==0.11.0-4 libthrift0==0.14.1 libyang==1.0.73 libyang-cpp==1.0.73 @@ -40,7 +40,6 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 -mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 @@ -70,7 +69,7 @@ sxd-libs==1.mlnx.4.5.4206 sxd-libs-dev==1.mlnx.4.5.4206 syncd==1.0.0 syncd-vs==1.0.0 -thrift-compiler==0.14.1 +thrift-compiler==0.11.0-4 wjh-libs==1.mlnx.4.5.4206 wjh-libs-dev==1.mlnx.4.5.4206 wpasupplicant==2:2.9.0-14 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf index e593594e45da..ea31993a2e6b 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -1,4 +1,3 @@ libnl-3-200==3.5.0-1 libnl-route-3-200==3.5.0-1 linux-headers-5.10.0-18-2-armmp==5.10.140-1 -mrvllibsai==1.10.2-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf index eea883fd84b6..073a05050656 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -2,3 +2,4 @@ bitarray==1.5.3 click==7.0 redis==3.5.3 requests==2.28.2 +zipp==1.2.0 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index 1f2427b1cf17..dd2dee01bcf8 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==ae46c3cecda20def1a9005e3893bfb89efca736e +https://chromium.googlesource.com/chromium/tools/depot_tools.git==401f0f6e433c9143bef1ac901f230f82e5f7c180 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 https://github.com/flashrom/flashrom.git==73e47091103891f2e3c12c5c51840faf9b57e436 -https://github.com/FreeRADIUS/freeradius-server.git==11dd181ec1dcfad8ce3d34f8ed0406a056a03880 +https://github.com/FreeRADIUS/freeradius-server.git==85681dcb9ce45021fab6ac5a092e36f26821c3e4 https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,7 +14,7 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==ad7cd7cf586339ebe5cb17ea3c1f2c0f488454ad +https://github.com/sflow/host-sflow==65be65ce6ac1d00441c4d08fceb0ba3681c8b59b https://github.com/sflow/sflowtool==4ce1223bb4c2cd0cbb1dd688dc0914561fcbb6c4 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index 86273e4e48b2..cd45b70a4269 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230328T000218Z -debian-security==20230328T000222Z -download.docker.com_linux_debian_dists_bullseye==2023-03-28T10:34:58Z -download.docker.com_linux_debian_dists_buster==2023-03-28T10:34:59Z +debian==20230331T000125Z +debian-security==20230331T000605Z +download.docker.com_linux_debian_dists_bullseye==2023-03-31T22:52:46Z +download.docker.com_linux_debian_dists_buster==2023-03-31T22:52:46Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230328T000222Z_dists_bullseye-security==2023-03-27T22:32:27Z -packages.trafficmanager.net_snapshot_debian-security_20230328T000222Z_dists_buster_updates==2023-03-27T22:32:27Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye-backports==2023-03-27T20:21:20Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_bullseye-updates==2023-03-27T20:21:20Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster-backports==2023-03-27T20:21:20Z -packages.trafficmanager.net_snapshot_debian_20230328T000218Z_dists_buster-updates==2023-03-27T20:21:20Z +packages.trafficmanager.net_snapshot_debian-security_20230331T000605Z_dists_bullseye-security==2023-03-30T22:23:38Z +packages.trafficmanager.net_snapshot_debian-security_20230331T000605Z_dists_buster_updates==2023-03-30T22:23:38Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye-backports==2023-03-30T20:28:15Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye-updates==2023-03-30T20:28:15Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster-backports==2023-03-30T20:28:15Z +packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster-updates==2023-03-30T20:28:15Z diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 index 73bbecabb1e2..c58de22390f0 100644 --- a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 @@ -9,7 +9,7 @@ netaddr==0.8.0 pyang==2.5.3 pyangbind==0.8.1 pyyaml==5.4.1 -redis==4.5.3 +redis==4.5.4 redis-dump-load==1.1 regex==2023.3.23 six==1.16.0 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 index 10d530dab553..dca80bc48058 100644 --- a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 @@ -10,7 +10,7 @@ netaddr==0.8.0 pyang==2.5.3 pyangbind==0.8.1 pyyaml==5.4.1 -redis==4.5.3 +redis==4.5.4 redis-dump-load==1.1 regex==2022.10.31 six==1.16.0 diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster index 5169b8cda55b..088eacd0eb5b 100644 --- a/files/build/versions/dockers/docker-ptf/versions-deb-buster +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -274,13 +274,13 @@ libnl-genl-3-200==3.4.0-1 libnl-nf-3-200==3.4.0-1 libnl-route-3-200==3.4.0-1 libnpth0==1.6-1 -libnss-systemd==241-7~deb10u8 +libnss-systemd==241-7~deb10u9 libogg0==1.3.2-1+b1 libopenjp2-7==2.3.0-2+deb10u2 libopts25==1:5.18.12-4 libopus0==1.3-1 liborc-0.4-0==1:0.4.28-3.1 -libpam-systemd==241-7~deb10u8 +libpam-systemd==241-7~deb10u9 libpango-1.0-0==1.42.4-8~deb10u1 libpangocairo-1.0-0==1.42.4-8~deb10u1 libpangoft2-1.0-0==1.42.4-8~deb10u1 @@ -357,6 +357,7 @@ libssl-dev==1.1.1n-0+deb10u4 libssl1.1==1.1.1n-0+deb10u4 libstdc++-8-dev==8.3.0-6 libsynctex2==2018.20181218.49446-1 +libsystemd0==241-7~deb10u9 libtacacs+1==4.0.4.27a-3 libtcl8.6==8.6.9+dfsg-2 libteam-utils==1.28-1 @@ -378,7 +379,8 @@ libtk8.6==8.6.9-2 libtry-tiny-perl==0.30-1 libtsan0==8.3.0-6 libubsan1==8.3.0-6 -libunbound8==1.9.0-2+deb10u2 +libudev1==241-7~deb10u9 +libunbound8==1.9.0-2+deb10u3 liburi-perl==1.76-1 libutempter0==1.1.6-3 libuv1==1.24.1-1+deb10u1 @@ -561,8 +563,8 @@ rsyslog==8.1901.0-1+deb10u2 sensible-utils==0.0.12 shared-mime-info==1.10-1 sntp==1:4.2.8p12+dfsg-4 -systemd==241-7~deb10u8 -systemd-sysv==241-7~deb10u8 +systemd==241-7~deb10u9 +systemd-sysv==241-7~deb10u9 t1utils==1.41-3 tacacs+==4.0.4.27a-3 tcpdump==4.9.3-1~deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 index fabf4771e0a6..41c02a2b905c 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 @@ -66,7 +66,7 @@ pyangbind==0.8.1 pyasn1==0.4.8 pyasn1-modules==0.2.1 pycurl==7.43.0.6 -pyfakefs==5.1.0 +pyfakefs==5.2.0 pygments==2.7.1 pygobject==3.38.0 pyhamcrest==1.9.0 @@ -84,7 +84,7 @@ python-magic==0.4.20 pytz==2021.1 pyxdg==0.27 pyyaml==5.4.1 -redis==4.5.3 +redis==4.5.4 regex==2023.3.23 requests==2.25.1 roman==2.0.0 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index 75a29b904310..f2e2a9235892 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -48,7 +48,7 @@ cmake==3.13.4-1 cmake-data==3.13.4-1 cmocka-doc==1.1.3-1 comerr-dev==2.1-1.44.5-1+deb10u3 -containerd.io==1.6.19-1 +containerd.io==1.6.20-1 cowbuilder==0.88 cowdancer==0.88 cpio==2.12+dfsg-9 @@ -841,7 +841,7 @@ libnorm-dev==1.5.8+dfsg2-1 libnorm1==1.5.8+dfsg2-1 libnpth0==1.6-1 libnspr4==2:4.20-1 -libnss-systemd==241-7~deb10u8 +libnss-systemd==241-7~deb10u9 libnss3==2:3.42.1-1+deb10u6 libnuma-dev==2.0.12-1 libnuma1==2.0.12-1 @@ -878,7 +878,7 @@ libpackage-stash-perl==0.38-1 libpackage-stash-xs-perl==0.29-1 libpackagekit-glib2-18==1.1.12-5 libpadwalker-perl==2.3-1+b1 -libpam-systemd==241-7~deb10u8 +libpam-systemd==241-7~deb10u9 libpam0g-dev==1.3.1-5 libpango-1.0-0==1.42.4-8~deb10u1 libpango1.0-dev==1.42.4-8~deb10u1 @@ -1114,7 +1114,8 @@ libswresample3==7:4.1.10-0+deb10u1 libswscale5==7:4.1.10-0+deb10u1 libsynctex2==2018.20181218.49446-1 libsys-hostname-long-perl==1.5-1 -libsystemd-dev==241-7~deb10u8 +libsystemd-dev==241-7~deb10u9 +libsystemd0==241-7~deb10u9 libtag1v5==1.11.1+dfsg.1-0.3+deb10u1 libtag1v5-vanilla==1.11.1+dfsg.1-0.3+deb10u1 libtask-weaken-perl==1.06-1 @@ -1155,8 +1156,9 @@ libtype-tiny-xs-perl==0.014-1+b1 libtypes-serialiser-perl==1.0-1 libubsan1==8.3.0-6 libuchardet0==0.0.6-3 -libudev-dev==241-7~deb10u8 -libunbound8==1.9.0-2+deb10u2 +libudev-dev==241-7~deb10u9 +libudev1==241-7~deb10u9 +libunbound8==1.9.0-2+deb10u3 libunicode-utf8-perl==0.62-1 libunwind-dev==1.2.1-10~deb10u1 libunwind8==1.2.1-10~deb10u1 @@ -1704,8 +1706,8 @@ strace==4.26-0.2 sudo==1.8.27-1+deb10u5 swig==3.0.12-2 swig3.0==3.0.12-2 -systemd==241-7~deb10u8 -systemd-sysv==241-7~deb10u8 +systemd==241-7~deb10u9 +systemd-sysv==241-7~deb10u9 t1utils==1.41-3 tcl==8.6.9+1 tcl8.6==8.6.9+dfsg-2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 index 25eaf840d2bf..084a0a20f1bc 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -49,7 +49,7 @@ pyang==2.4.0 pyangbind==0.8.1 pycrypto==2.6.1 pycurl==7.43.0.2 -pyfakefs==5.1.0 +pyfakefs==5.2.0 pygments==2.3.1 pygobject==3.30.4 pympler==0.8 @@ -64,7 +64,7 @@ python-magic==0.4.16 pytz==2019.1 pyxdg==0.25 pyyaml==5.4.1 -redis==4.5.3 +redis==4.5.4 regex==2022.10.31 requests==2.21.0 roman==2.0.0 From 67abcff944a274133411c8b91cca37044ca296be Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Sun, 2 Apr 2023 23:02:33 +0200 Subject: [PATCH 37/59] [nat] Switch to bullseye (#14495) Change references to use bullseye instead of buster Why I did it Almost all daemons in 202211 and master uses bullseye, and NAT seems easy to migrate. How I did it Replaced the references, built with 202211 branch. How to verify it Not sure, it builds and tests pass as far as I can tell but I don't use the feature myself. Signed-off-by: Christian Svensson --- dockers/docker-nat/Dockerfile.j2 | 2 +- rules/docker-nat.mk | 10 +++++----- rules/iptables.mk | 8 ++++---- src/iptables/Makefile | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dockers/docker-nat/Dockerfile.j2 b/dockers/docker-nat/Dockerfile.j2 index 0c0e6089a8d3..23adcf3afa33 100644 --- a/dockers/docker-nat/Dockerfile.j2 +++ b/dockers/docker-nat/Dockerfile.j2 @@ -1,5 +1,5 @@ {% from "dockers/dockerfile-macros.j2" import install_debian_packages, copy_files %} -FROM docker-swss-layer-buster-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} +FROM docker-swss-layer-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} ARG docker_container_name diff --git a/rules/docker-nat.mk b/rules/docker-nat.mk index 6e73ac9aec4b..3d2f2b011968 100644 --- a/rules/docker-nat.mk +++ b/rules/docker-nat.mk @@ -7,11 +7,11 @@ DOCKER_NAT_DBG = $(DOCKER_NAT_STEM)-$(DBG_IMAGE_MARK).gz $(DOCKER_NAT)_PATH = $(DOCKERS_PATH)/$(DOCKER_NAT_STEM) $(DOCKER_NAT)_DEPENDS += $(SWSS) $(IPTABLESIP4TC) $(IPTABLESIP6TC) $(IPTABLESIPTC) $(IPXTABLES12) $(IPTABLES) -$(DOCKER_NAT)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_DEPENDS) +$(DOCKER_NAT)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BULLSEYE)_DBG_DEPENDS) $(DOCKER_NAT)_DBG_DEPENDS += $(SWSS_DBG) $(LIBSWSSCOMMON_DBG) -$(DOCKER_NAT)_DBG_IMAGE_PACKAGES = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_IMAGE_PACKAGES) +$(DOCKER_NAT)_DBG_IMAGE_PACKAGES = $($(DOCKER_SWSS_LAYER_BULLSEYE)_DBG_IMAGE_PACKAGES) -$(DOCKER_NAT)_LOAD_DOCKERS += $(DOCKER_SWSS_LAYER_BUSTER) +$(DOCKER_NAT)_LOAD_DOCKERS += $(DOCKER_SWSS_LAYER_BULLSEYE) $(DOCKER_NAT)_VERSION = 1.0.0 $(DOCKER_NAT)_PACKAGE_NAME = nat @@ -37,5 +37,5 @@ $(DOCKER_NAT)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_NAT)_BASE_IMAGE_FILES += natctl:/usr/bin/natctl -SONIC_BUSTER_DOCKERS += $(DOCKER_NAT) -SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_NAT_DBG) +SONIC_BULLSEYE_DOCKERS += $(DOCKER_NAT) +SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_NAT_DBG) diff --git a/rules/iptables.mk b/rules/iptables.mk index fcdcc3434e08..f8515f894969 100644 --- a/rules/iptables.mk +++ b/rules/iptables.mk @@ -1,17 +1,17 @@ # iptables package -IPTABLES_VERSION = 1.8.2 -IPTABLES_VERSION_SUFFIX = 4 +IPTABLES_VERSION = 1.8.7 +IPTABLES_VERSION_SUFFIX = 1 IPTABLES_VERSION_FULL = $(IPTABLES_VERSION)-$(IPTABLES_VERSION_SUFFIX) IPTABLES = iptables_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(IPTABLES)_SRC_PATH = $(SRC_PATH)/iptables SONIC_MAKE_DEBS += $(IPTABLES) -IPTABLESIP4TC = libip4tc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb +IPTABLESIP4TC = libip4tc2_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(IPTABLES),$(IPTABLESIP4TC))) -IPTABLESIP6TC = libip6tc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb +IPTABLESIP6TC = libip6tc2_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(IPTABLES),$(IPTABLESIP6TC))) IPTABLESIPTC = libiptc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb diff --git a/src/iptables/Makefile b/src/iptables/Makefile index 07a8fea2265a..a048ea5a9535 100644 --- a/src/iptables/Makefile +++ b/src/iptables/Makefile @@ -3,8 +3,8 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = $(IPTABLES) -DERIVED_TARGETS = libip4tc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ - libip6tc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ +DERIVED_TARGETS = libip4tc2_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libip6tc2_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libiptc0_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libxtables12_$(IPTABLES_VERSION_FULL)_$(CONFIGURED_ARCH).deb From 884dfa5427943435f85ebb6e85e5a79cd777db4c Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:34:35 +0800 Subject: [PATCH 38/59] [ci/build]: Upgrade SONiC package versions (#14498) --- .../versions-deb-bullseye | 1 + .../versions-deb-bullseye-armhf | 1 + .../versions-py3-all-armhf | 1 - .../versions-deb-buster | 1 - files/build/versions/default/versions-git | 4 +-- files/build/versions/default/versions-mirror | 20 +++++------ files/build/versions/default/versions-web | 6 ++-- .../dockers/docker-nat/versions-deb-bullseye | 36 +++++++++++++++++++ .../dockers/docker-nat/versions-deb-buster | 28 --------------- 9 files changed, 53 insertions(+), 45 deletions(-) create mode 100644 files/build/versions/dockers/docker-nat/versions-deb-bullseye delete mode 100644 files/build/versions/dockers/docker-nat/versions-deb-buster diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index b636f54033a4..129678eea319 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -40,6 +40,7 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf index ea31993a2e6b..e593594e45da 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -1,3 +1,4 @@ libnl-3-200==3.5.0-1 libnl-route-3-200==3.5.0-1 linux-headers-5.10.0-18-2-armmp==5.10.140-1 +mrvllibsai==1.10.2-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf index 073a05050656..eea883fd84b6 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -2,4 +2,3 @@ bitarray==1.5.3 click==7.0 redis==3.5.3 requests==2.28.2 -zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster index e97c243af002..e4fb59e8acf6 100644 --- a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster @@ -29,5 +29,4 @@ python3-yang==1.0.73 sonic-mgmt-common==1.0.0 sonic-mgmt-common-codegen==1.0.0 sonic-mgmt-framework==1.0-01 -swss==1.0.0 thrift-compiler==0.11.0-4 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index dd2dee01bcf8..e9dbe6933fc4 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -4,8 +4,8 @@ https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==73e47091103891f2e3c12c5c51840faf9b57e436 -https://github.com/FreeRADIUS/freeradius-server.git==85681dcb9ce45021fab6ac5a092e36f26821c3e4 +https://github.com/flashrom/flashrom.git==3ed016f08faa011736443f3b39bf68187d974781 +https://github.com/FreeRADIUS/freeradius-server.git==0ea1d92947f40d5e446c582ba32bdfe03550232d https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index cd45b70a4269..e20e885c6d47 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230331T000125Z -debian-security==20230331T000605Z +debian==20230402T000158Z +debian-security==20230402T000159Z download.docker.com_linux_debian_dists_bullseye==2023-03-31T22:52:46Z download.docker.com_linux_debian_dists_buster==2023-03-31T22:52:46Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230331T000605Z_dists_bullseye-security==2023-03-30T22:23:38Z -packages.trafficmanager.net_snapshot_debian-security_20230331T000605Z_dists_buster_updates==2023-03-30T22:23:38Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye-backports==2023-03-30T20:28:15Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_bullseye-updates==2023-03-30T20:28:15Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster-backports==2023-03-30T20:28:15Z -packages.trafficmanager.net_snapshot_debian_20230331T000125Z_dists_buster-updates==2023-03-30T20:28:15Z +packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_bullseye-security==2023-04-01T15:23:02Z +packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_buster_updates==2023-04-01T15:23:02Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-backports==2023-04-01T20:14:08Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-updates==2023-04-01T20:14:08Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-backports==2023-04-01T20:14:08Z +packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-updates==2023-04-01T20:14:08Z diff --git a/files/build/versions/default/versions-web b/files/build/versions/default/versions-web index e120df6ca17d..de00e78bbb5e 100644 --- a/files/build/versions/default/versions-web +++ b/files/build/versions/default/versions-web @@ -1,9 +1,9 @@ http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4.debian.tar.xz==9a85eed17658cdbf9287606da64143e5 http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4.dsc==0038ddbc885bea2b1bcf367b1806bfbf http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0.orig.tar.xz==f36f0a0612f7fd565680e918d692900d -http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.debian.tar.xz==c27e499611c48ba307792518d29cdcc7 -http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.dsc==d9572a9f48c88293341681601a7b18c5 -http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2.orig.tar.bz2==944558e88ddcc3b9b0d9550070fa3599 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.7-1.debian.tar.xz==bacfd4f463240af61c4a50298e5f7560 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.7-1.dsc==c7b1880f0d2e7a9306007969f3b541ee +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.7.orig.tar.bz2==602ba7e937c72fbb7b1c2b71c3b0004b http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.debian.tar.xz==8c3640097a1b4cc59e927badbd45b3f0 http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.dsc==1af0a028a9655235ec3372332f94a19c http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1.orig.tar.gz==dbcba5108f659278200218ac0847ce3f diff --git a/files/build/versions/dockers/docker-nat/versions-deb-bullseye b/files/build/versions/dockers/docker-nat/versions-deb-bullseye new file mode 100644 index 000000000000..bdce4fce5990 --- /dev/null +++ b/files/build/versions/dockers/docker-nat/versions-deb-bullseye @@ -0,0 +1,36 @@ +bridge-utils==1.7-1 +conntrack==1:1.4.6-2 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +iptables==1.8.7-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libip4tc2==1.8.7-1 +libip6tc2==1.8.7-1 +libipt2==2.0.3-1 +libiptc0==1.8.7-1 +libmpfr6==4.1.0-3 +libnetfilter-conntrack3==1.0.8-3 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.9-1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbgsym==1.0.0 +libunwind8==1.3.2-2 +netbase==6.3 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-nat/versions-deb-buster b/files/build/versions/dockers/docker-nat/versions-deb-buster deleted file mode 100644 index c8f6289c9793..000000000000 --- a/files/build/versions/dockers/docker-nat/versions-deb-buster +++ /dev/null @@ -1,28 +0,0 @@ -bridge-utils==1.6-2 -conntrack==1:1.4.5-2 -gdb==8.2.1-2+b3 -gdbserver==8.2.1-2+b3 -iptables==1.8.2-4 -libbabeltrace1==1.5.6-2+deb10u1 -libbsd0==0.9.1-2+deb10u1 -libdw1==0.176-1.1 -libedit2==3.1-20181209-1 -libglib2.0-0==2.58.3-2+deb10u4 -libgpm2==1.20.7-5 -libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 -libip4tc0==1.8.2-4 -libip6tc0==1.8.2-4 -libipt2==2.0-2 -libiptc0==1.8.2-4 -libnetfilter-conntrack3==1.0.7-1 -libnfnetlink0==1.0.1-3+b1 -libnftnl11==1.1.2-2 -libpopt0==1.16-12 -libswsscommon-dbgsym==1.0.0 -libunwind8==1.2.1-10~deb10u1 -openssh-client==1:7.9p1-10+deb10u2 -sshpass==1.06-1 -strace==4.26-0.2 -swss-dbg==1.0.0 -vim==2:8.1.0875-5+deb10u4 -vim-runtime==2:8.1.0875-5+deb10u4 From bce824723c0d2c5d9cb7ae34bb830bb632d43c83 Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Mon, 3 Apr 2023 18:49:35 +0200 Subject: [PATCH 39/59] [sflow] Switch to bullseye (#14494) Change references to use bullseye instead of buster Why I did it Almost all daemons in 202211 and master uses bullseye, and sflow was easy to migrate. How I did it Replaced the references, built and tested in 202211. How to verify it Build with the changes, enable sflow: admin@sonic:~$ sudo config sflow collector add test 1.2.3.4 admin@sonic:~$ sudo config sflow collector enable tcpdump on 1.2.3.4 and see that UDP sFlow are being sent. Signed-off-by: Christian Svensson --- dockers/docker-sflow/Dockerfile.j2 | 4 ++-- rules/docker-sflow.mk | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dockers/docker-sflow/Dockerfile.j2 b/dockers/docker-sflow/Dockerfile.j2 index 162c4eee961a..7399be80eed2 100644 --- a/dockers/docker-sflow/Dockerfile.j2 +++ b/dockers/docker-sflow/Dockerfile.j2 @@ -1,5 +1,5 @@ {% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %} -FROM docker-swss-layer-buster-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} +FROM docker-swss-layer-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} ARG docker_container_name @@ -9,7 +9,7 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -f -y \ dmidecode \ - libmnl0=1.0.4-2 + libmnl0=1.0.4-3 {% if docker_sflow_debs.strip() -%} # Copy locally-built Debian package dependencies diff --git a/rules/docker-sflow.mk b/rules/docker-sflow.mk index 22a9e538e1bd..285264dcb0b1 100644 --- a/rules/docker-sflow.mk +++ b/rules/docker-sflow.mk @@ -7,11 +7,11 @@ DOCKER_SFLOW_DBG = $(DOCKER_SFLOW_STEM)-$(DBG_IMAGE_MARK).gz $(DOCKER_SFLOW)_PATH = $(DOCKERS_PATH)/$(DOCKER_SFLOW_STEM) $(DOCKER_SFLOW)_DEPENDS += $(SWSS) $(HSFLOWD) $(SFLOWTOOL) $(PSAMPLE) -$(DOCKER_SFLOW)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_DEPENDS) +$(DOCKER_SFLOW)_DBG_DEPENDS = $($(DOCKER_SWSS_LAYER_BULLSEYE)_DBG_DEPENDS) $(DOCKER_TEAMD)_DBG_DEPENDS += $(SWSS_DBG) $(LIBSWSSCOMMON_DBG) -$(DOCKER_SFLOW)_DBG_IMAGE_PACKAGES = $($(DOCKER_SWSS_LAYER_BUSTER)_DBG_IMAGE_PACKAGES) +$(DOCKER_SFLOW)_DBG_IMAGE_PACKAGES = $($(DOCKER_SWSS_LAYER_BULLSEYE)_DBG_IMAGE_PACKAGES) -$(DOCKER_SFLOW)_LOAD_DOCKERS += $(DOCKER_SWSS_LAYER_BUSTER) +$(DOCKER_SFLOW)_LOAD_DOCKERS += $(DOCKER_SWSS_LAYER_BULLSEYE) $(DOCKER_SFLOW)_VERSION = 1.0.0 $(DOCKER_SFLOW)_PACKAGE_NAME = sflow @@ -37,5 +37,5 @@ $(DOCKER_SFLOW)_BASE_IMAGE_FILES += psample:/usr/bin/psample $(DOCKER_SFLOW)_BASE_IMAGE_FILES += sflowtool:/usr/bin/sflowtool $(DOCKER_SFLOW)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) -SONIC_BUSTER_DOCKERS += $(DOCKER_SFLOW) -SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SFLOW_DBG) +SONIC_BULLSEYE_DOCKERS += $(DOCKER_SFLOW) +SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_SFLOW_DBG) From 59d40ea09f957d4ef32bcfac8b02ea9f471c597b Mon Sep 17 00:00:00 2001 From: Yagami-Jiang <119273528+Yagami-Jiang@users.noreply.github.com> Date: Tue, 4 Apr 2023 14:07:04 +0800 Subject: [PATCH 40/59] Update pddf_switch_svc.py --- .../silverstone-v2/utils/pddf_switch_svc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/utils/pddf_switch_svc.py index 15310ee05780..558942a63a75 100755 --- a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/utils/pddf_switch_svc.py @@ -77,7 +77,7 @@ def stop_platform_pddf(): return True def main(): - pass + print("OK") if __name__ == "__main__": main() From 8fc8578c4d0db0fb176884484596207bfe83e0f1 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 4 Apr 2023 14:55:27 +0800 Subject: [PATCH 41/59] [submodule] Update submodule to the latest HEAD automatically (#14491) --- src/linkmgrd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linkmgrd b/src/linkmgrd index 4945d49dc0a3..7c56dc83be78 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit 4945d49dc0a31645c2b037762d20702ae63758cc +Subproject commit 7c56dc83be7847ee2967e04159a6dfa981e1a5b9 From e6ec5010053f46347a53187eace51835a3d80304 Mon Sep 17 00:00:00 2001 From: Yagami-Jiang <119273528+Yagami-Jiang@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:04:10 +0800 Subject: [PATCH 42/59] Update chassis.py --- .../silverstone-v2/pddf/sonic_platform/chassis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py index 4738bf88219e..bc214de3809a 100644 --- a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py @@ -109,7 +109,7 @@ def get_reboot_cause(self): status, hw_reboot_cause = self.helper.ipmi_raw(GET_REBOOT_CAUSE) prev_reboot_cause = { - '11': (self.REBOOT_CAUSE_POWER_LOSS, "The last reset is Power on reset"), + 'plugins': (self.REBOOT_CAUSE_POWER_LOSS, "The last reset is Power on reset"), '22': (self.REBOOT_CAUSE_HARDWARE_OTHER, "The last reset is soft-set CPU warm reset"), '33': (self.REBOOT_CAUSE_NON_HARDWARE, "The last reset is CPU cold reset"), '44': (self.REBOOT_CAUSE_NON_HARDWARE, "The last reset is CPU warm reset"), From c4435e833b0c850684161ca255a8e0f5c484a0ef Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Tue, 4 Apr 2023 22:49:47 +0530 Subject: [PATCH 43/59] [DellEMC] S6100 - Adding logger to fetch SSD FW Upgrade status (#14247) Adding logger to fetch SSD FW Upgrade status --- .../s6100/scripts/s6100_ssd_upgrade_status.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh index b06de8184ca0..4a750b78a5ff 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh @@ -23,25 +23,32 @@ SMART_CMD=`smartctl -a /dev/sda` SSD_FW_VERSION=$(echo "$iSMART_CMD" | grep "FW Version" | awk '{print $NF}') SSD_FW_VERSION=${SSD_FW_VERSION,,} SSD_MODEL=$(echo "$iSMART_CMD" | grep "Model" | awk '{print $NF}') +logger -p user.crit -t DELL_S6100_SSD_MON "SSD Model = $SSD_MODEL ; FWVERSION = $SSD_FW_VERSION" if [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then if [ $SSD_MODEL == "3IE" ] && [ $SSD_FW_VERSION == "s141002c" ]; then # If SSD Firmware is not upgraded + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is running older firmware. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." exit 0 fi if [ $SSD_FW_VERSION == "s16425c1" ] || [ $SSD_FW_VERSION == "s16425cq" ]; then # If SSD Firmware is not upgraded + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is running older firmware. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." exit 0 fi fi echo "$0 `date` SSD FW upgrade logs post reboot." >> $SSD_UPGRADE_LOG +logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgrade logs post reboot." SSD_UPGRADE_STATUS1=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --get --offset 212` SSD_UPGRADE_STATUS1=$(echo "$SSD_UPGRADE_STATUS1" | awk '{print $NF}') SSD_UPGRADE_STATUS2=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --get --offset 212` SSD_UPGRADE_STATUS2=$(echo "$SSD_UPGRADE_STATUS2" | awk '{print $NF}') +logger -p user.crit -t DELL_S6100_SSD_MON "SSD Status REG1 = $SSD_UPGRADE_STATUS1 ; REG2 = $SSD_UPGRADE_STATUS2" if [ $SSD_UPGRADE_STATUS1 == "2" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* @@ -71,11 +78,14 @@ elif [ $SSD_FW_VERSION == "s210506g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; the rm -rf $SSD_FW_UPGRADE/GPIO7_* touch $SSD_FW_UPGRADE/GPIO7_high systemctl start --no-block s6100-ssd-monitor.timer + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded already." if [ $SSD_UPGRADE_STATUS1 == "0" ]; then if [ $SSD_MODEL == "3IE" ];then echo "$0 `date` SSD FW upgraded from S141002C to S210506G in first mp_64." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded from S141002C to S210506G" else echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded from S16425c1 to S16425cG" fi elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "1" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* @@ -93,6 +103,7 @@ else touch $SSD_FW_UPGRADE/GPIO7_pending_upgrade echo "$0 `date` SSD upgrade didn’t happen." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "No SSD upgrade attempted." elif [ $SSD_UPGRADE_STATUS1 == "1" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* From d3f3ac6411dbdec5174b3f20228f0648e7a32ef8 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 4 Apr 2023 16:23:00 -0700 Subject: [PATCH 44/59] Delay mux/sflow/snmp timer after interface-config service (#14506) Why I did it All these 3 services started after swss service, which used to start after interface-config service. But #13084 remove the time constraints for swss. After that, these 3 services has the chance of start earlier when the inteface-config service is restarting the networking service, which could cause db connect request to fail. How I did it Delay mux/sflow/snmp timer after the interface-config service. How to verify it PR test. Config reload can repro the issue in 1-3 retries. With this change. config reload run 30+ iterations without hitting the issue. Signed-off-by: Ying Xie --- files/build_templates/mux.service.j2 | 2 +- files/build_templates/sflow.service.j2 | 2 +- files/build_templates/snmp.timer | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/files/build_templates/mux.service.j2 b/files/build_templates/mux.service.j2 index ee1f8ce75389..dbb65ac9eb2b 100644 --- a/files/build_templates/mux.service.j2 +++ b/files/build_templates/mux.service.j2 @@ -1,7 +1,7 @@ [Unit] Description=MUX Cable Container Requires=database.service updategraph.service swss.service -After=swss.service +After=swss.service interfaces-config.service BindsTo=sonic.target After=sonic.target StartLimitIntervalSec=1200 diff --git a/files/build_templates/sflow.service.j2 b/files/build_templates/sflow.service.j2 index 9a734742ed0e..fd366fa9d6d9 100644 --- a/files/build_templates/sflow.service.j2 +++ b/files/build_templates/sflow.service.j2 @@ -1,7 +1,7 @@ [Unit] Description=sFlow container Requisite=swss.service -After=swss.service syncd.service hostcfgd.service +After=swss.service syncd.service hostcfgd.service interfaces-config.service BindsTo=sonic.target After=sonic.target Before=ntp-config.service diff --git a/files/build_templates/snmp.timer b/files/build_templates/snmp.timer index 0d17391a73f6..bcbe4963adc4 100644 --- a/files/build_templates/snmp.timer +++ b/files/build_templates/snmp.timer @@ -1,7 +1,7 @@ [Unit] Description=Delays snmp container until SONiC has started PartOf=snmp.service -After=swss.service +After=swss.service interfaces-config.service [Timer] OnUnitActiveSec=0 sec From 41c46aedf64c0e00511b84e4f11428bc221ed13f Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 5 Apr 2023 18:36:57 +0800 Subject: [PATCH 45/59] [ci/build]: Upgrade SONiC package versions (#14528) --- .../versions-deb-bullseye | 1 - .../versions-deb-buster | 5 ---- files/build/versions/default/versions-git | 6 ++-- files/build/versions/default/versions-mirror | 24 +++++++-------- .../dockers/docker-ptf/versions-deb-buster | 4 +-- .../docker-sflow/versions-deb-bullseye | 30 +++++++++++++++++++ .../dockers/docker-sflow/versions-deb-buster | 22 -------------- .../versions-deb-bullseye | 2 +- .../sonic-slave-buster/versions-deb-buster | 8 ++--- 9 files changed, 52 insertions(+), 50 deletions(-) create mode 100644 files/build/versions/dockers/docker-sflow/versions-deb-bullseye delete mode 100644 files/build/versions/dockers/docker-sflow/versions-deb-buster diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index 129678eea319..b636f54033a4 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -40,7 +40,6 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 -mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster index e4fb59e8acf6..850c2bfc402e 100644 --- a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster @@ -7,15 +7,10 @@ libnl-nf-3-dev==3.5.0-1 libsaimetadata==1.0.0 libsaimetadata-dev==1.0.0 libsairedis==1.0.0 -libsairedis-dev==1.0.0 libsaivs==1.0.0 libsaivs-dev==1.0.0 libswsscommon==1.0.0 libswsscommon-dev==1.0.0 -libteam-dev==1.30-1 -libteam-utils==1.30-1 -libteam5==1.30-1 -libteamdctl0==1.30-1 libthrift-0.11.0==0.11.0-4 libthrift-dev==0.11.0-4 libthrift0==0.14.1 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index e9dbe6933fc4..7ec661ed98e0 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==401f0f6e433c9143bef1ac901f230f82e5f7c180 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==61ebd177abdc56bd373fc05c0101e2e506f9d758 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 https://github.com/flashrom/flashrom.git==3ed016f08faa011736443f3b39bf68187d974781 -https://github.com/FreeRADIUS/freeradius-server.git==0ea1d92947f40d5e446c582ba32bdfe03550232d +https://github.com/FreeRADIUS/freeradius-server.git==35fac8b271348a2e6ba24fe36e63a916f149ad9c https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,7 +14,7 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==65be65ce6ac1d00441c4d08fceb0ba3681c8b59b +https://github.com/sflow/host-sflow==ae3d577fc497388d1dd75987fe131c1ad02c01d6 https://github.com/sflow/sflowtool==4ce1223bb4c2cd0cbb1dd688dc0914561fcbb6c4 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index e20e885c6d47..3dac370628c3 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230402T000158Z -debian-security==20230402T000159Z -download.docker.com_linux_debian_dists_bullseye==2023-03-31T22:52:46Z -download.docker.com_linux_debian_dists_buster==2023-03-31T22:52:46Z +debian==20230404T000134Z +debian-security==20230405T000526Z +download.docker.com_linux_debian_dists_bullseye==2023-04-04T23:38:54Z +download.docker.com_linux_debian_dists_buster==2023-04-04T23:38:54Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_bullseye-security==2023-04-01T15:23:02Z -packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_buster_updates==2023-04-01T15:23:02Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-backports==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-updates==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-backports==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-updates==2023-04-01T20:14:08Z +packages.trafficmanager.net_snapshot_debian-security_20230405T000526Z_dists_bullseye-security==2023-04-04T23:52:40Z +packages.trafficmanager.net_snapshot_debian-security_20230405T000526Z_dists_buster_updates==2023-04-04T23:52:40Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye-backports==2023-04-03T20:15:17Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye-updates==2023-04-03T20:15:16Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster-backports==2023-04-03T20:15:17Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster-updates==2023-04-03T20:15:17Z diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster index 088eacd0eb5b..e7765a68d8a4 100644 --- a/files/build/versions/dockers/docker-ptf/versions-deb-buster +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -180,8 +180,8 @@ libgnutls30==3.6.7-4+deb10u10 libgomp1==8.3.0-6 libgpm2==1.20.7-5 libgraphite2-3==1.3.13-7 -libgs9==9.27~dfsg-2+deb10u6 -libgs9-common==9.27~dfsg-2+deb10u6 +libgs9==9.27~dfsg-2+deb10u7 +libgs9-common==9.27~dfsg-2+deb10u7 libgssapi-krb5-2==1.17-3+deb10u5 libgstreamer-plugins-base1.0-0==1.14.4-2+deb10u1 libgstreamer1.0-0==1.14.4-1 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-bullseye b/files/build/versions/dockers/docker-sflow/versions-deb-bullseye new file mode 100644 index 000000000000..182fc765a007 --- /dev/null +++ b/files/build/versions/dockers/docker-sflow/versions-deb-bullseye @@ -0,0 +1,30 @@ +dmidecode==3.3-2 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +hsflowd==2.0.35-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbgsym==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +psample==1.1-1 +sflowtool==5.04 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-buster b/files/build/versions/dockers/docker-sflow/versions-deb-buster deleted file mode 100644 index da149bd692e3..000000000000 --- a/files/build/versions/dockers/docker-sflow/versions-deb-buster +++ /dev/null @@ -1,22 +0,0 @@ -dmidecode==3.2-1 -gdb==8.2.1-2+b3 -gdbserver==8.2.1-2+b3 -hsflowd==2.0.35-1 -libbabeltrace1==1.5.6-2+deb10u1 -libbsd0==0.9.1-2+deb10u1 -libdw1==0.176-1.1 -libedit2==3.1-20181209-1 -libglib2.0-0==2.58.3-2+deb10u4 -libgpm2==1.20.7-5 -libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 -libipt2==2.0-2 -libpopt0==1.16-12 -libswsscommon-dbgsym==1.0.0 -libunwind8==1.2.1-10~deb10u1 -openssh-client==1:7.9p1-10+deb10u2 -psample==1.1-1 -sflowtool==5.04 -sshpass==1.06-1 -strace==4.26-0.2 -vim==2:8.1.0875-5+deb10u4 -vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye index ecabbf7de5c0..db1108f2876a 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -95,7 +95,7 @@ docbook-utils==0.6.14-3.4 docbook-xml==4.5-9 docker-ce==5:20.10.14~3-0~debian-bullseye docker-ce-cli==5:20.10.14~3-0~debian-bullseye -docker-ce-rootless-extras==5:23.0.2-1~debian.11~bullseye +docker-ce-rootless-extras==5:23.0.3-1~debian.11~bullseye docker-scan-plugin==0.23.0~debian-bullseye docutils-common==0.16+dfsg-4 dosfstools==4.2-1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index f2e2a9235892..a51ddc9e0514 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -93,7 +93,7 @@ docbook-utils==0.6.14-3.3 docbook-xml==4.5-8 docker-ce==5:20.10.21~3-0~debian-buster docker-ce-cli==5:20.10.21~3-0~debian-buster -docker-ce-rootless-extras==5:23.0.2-1~debian.10~buster +docker-ce-rootless-extras==5:23.0.3-1~debian.10~buster docker-scan-plugin==0.23.0~debian-buster docutils-common==0.14+dfsg-4 docutils-doc==0.14+dfsg-4 @@ -144,7 +144,7 @@ gettext==0.19.8.1-9 gettext-base==0.19.8.1-9 gfortran==4:8.3.0-1 gfortran-8==8.3.0-6 -ghostscript==9.27~dfsg-2+deb10u6 +ghostscript==9.27~dfsg-2+deb10u7 gir1.2-atk-1.0==2.30.0-2 gir1.2-atspi-2.0==2.30.0-7 gir1.2-freedesktop==1.58.3-2 @@ -588,8 +588,8 @@ libgraphite2-3==1.3.13-7 libgraphite2-dev==1.3.13-7 libgrpc++1==1.16.1-1 libgrpc6==1.16.1-1 -libgs9==9.27~dfsg-2+deb10u6 -libgs9-common==9.27~dfsg-2+deb10u6 +libgs9==9.27~dfsg-2+deb10u7 +libgs9-common==9.27~dfsg-2+deb10u7 libgsm1==1.0.18-2 libgssapi-krb5-2==1.17-3+deb10u5 libgssrpc4==1.17-3+deb10u5 From e17e4fc4c0b835de99a185df889550b035179a99 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Wed, 5 Apr 2023 21:34:31 -0700 Subject: [PATCH 46/59] [S6100] Improve S6100 serial-getty monitor, wait and re-check when getty not running to avoid false alert. (#14402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [S6100] Improve S6100 serial-getty monitor, wait and re-check when getty not running to avoid false alert. #### Why I did it On S6100, the serial-getty service some time can't auto-restart by systemd. So there is a monit unit to check serial-getty service status and restart it. However, this monit will report false alert, because in most case when serial-getty not running, systemd can restart it successfully. To avoid the false alert, improve the monitor to wait and re-check. Steps to reproduce this issue: 1. User login to device via console, and keep the connection. 2. User login to device via SSH, check the serial-getty@ttyS1.service service, it's running. 3. Run 'monit reload' from SSH connection. 4. Check syslog 1 minutes later, there will be false alert: ' 'serial-getty' process is not running' #### How I did it Add check-getty.sh script to recheck again later when getty service not running. And update monit unit to check serial-getty service status with this script to avoid false alert. #### How to verify it Pass all UT. Manually check fixed code work correctly: ``` admin@***:~$ sudo systemctl stop  serial-getty@ttyS1.service admin@***:~$ sudo /usr/local/bin/check-getty.sh  admin@***:~$ echo $? 1 admin@***:~$ sudo systemctl status serial-getty@ttyS1.service ● serial-getty@ttyS1.service - Serial Getty on ttyS1      Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled-runtime; vendor preset: enabled)      Active: inactive (dead) since Tue 2023-03-28 07:15:21 UTC; 1min 13s ago admin@***:~$ sudo /usr/local/bin/check-getty.sh  admin@***:~$ echo $? 0 admin@***:~$ sudo systemctl status serial-getty@ttyS1.service ● serial-getty@ttyS1.service - Serial Getty on ttyS1      Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled-runtime; vendor preset: enabled) ``` syslog: ``` Mar 28 07:10:37.597458 *** INFO systemd[1]: serial-getty@ttyS1.service: Succeeded. Mar 28 07:12:43.010550 *** ERR monit[593]: 'serial-getty' status failed (1) -- no output Mar 28 07:12:43.010744 *** INFO monit[593]: 'serial-getty' trying to restart Mar 28 07:12:43.010846 *** INFO monit[593]: 'serial-getty' stop: '/bin/systemctl stop serial-getty@ttyS1.service' Mar 28 07:12:43.132172 *** INFO monit[593]: 'serial-getty' start: '/bin/systemctl start serial-getty@ttyS1.service' Mar 28 07:13:43.286276 *** INFO monit[593]: 'serial-getty' status succeeded (0) -- no output ``` #### Description for the changelog [S6100] Improve S6100 serial-getty monitor. #### Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU. --- .../debian/platform-modules-s6100.install | 1 + .../s6100/scripts/check-getty.sh | 17 +++++++++++++++++ .../s6100/scripts/s6100_serial_getty_monitor | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 22378cf0eb8b..ab20e29e188d 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -35,6 +35,7 @@ s6100/systemd/s6100-ssd-upgrade-status.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-platform-startup.service etc/systemd/system s6100/scripts/s6100_serial_getty_monitor etc/monit/conf.d +s6100/scripts/check-getty.sh usr/local/bin common/fw-updater usr/local/bin common/onie_mode_set usr/local/bin common/onie_version usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh new file mode 100755 index 000000000000..9c6412eddf0b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +RETRY=0 +while [ $RETRY -lt 5 ]; do + let RETRY=$RETRY+1 + + /bin/systemctl --quiet is-active serial-getty@ttyS1.service + status=$? + if [ $status == 0 ]; then + exit 0 + fi + + # when serial-getty not running, recheck later, beause systemd will restart serial-getty automatically. + sleep 1 +done + +exit 1 \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor index 1b5d0c90db37..f57ae3679016 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor @@ -1,4 +1,5 @@ #Dell S6100 serial getty monitor -check process serial-getty matching "ttyS" +check program serial-getty with path /usr/local/bin/check-getty.sh start program = "/bin/systemctl start serial-getty@ttyS1.service" stop program = "/bin/systemctl stop serial-getty@ttyS1.service" +if status != 0 then restart \ No newline at end of file From 142282ac338d248aa39ace0e1bbb1cfba2b69363 Mon Sep 17 00:00:00 2001 From: Yagami-Jiang <119273528+Yagami-Jiang@users.noreply.github.com> Date: Thu, 6 Apr 2023 16:34:19 +0800 Subject: [PATCH 47/59] Update chassis.py --- .../silverstone-v2/pddf/sonic_platform/chassis.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py index bc214de3809a..f4d77c68cfd4 100644 --- a/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-cel/silverstone-v2/pddf/sonic_platform/chassis.py @@ -18,6 +18,7 @@ HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" REBOOT_CAUSE_FILE = "reboot-cause.txt" +WATCHDOG_TIMELEFT_PATH = "/sys/class/watchdog/watchdog0/timeleft" GET_REBOOT_CAUSE = "0x3a 0x64 0x00 0x01 0x06" Sensor_List_Info = "/tmp/sensor_info.log" @@ -106,10 +107,13 @@ def get_reboot_cause(self): """ reboot_cause_path = (HOST_REBOOT_CAUSE_PATH + REBOOT_CAUSE_FILE) sw_reboot_cause = self.helper.read_txt_file(reboot_cause_path) or "Unknown" + status_wat, val = self.helper.run_command("cat %s" % WATCHDOG_TIMELEFT_PATH) status, hw_reboot_cause = self.helper.ipmi_raw(GET_REBOOT_CAUSE) + if float(val) <= 1 and float(hw_reboot_cause) == 44: + hw_reboot_cause = "66" prev_reboot_cause = { - 'plugins': (self.REBOOT_CAUSE_POWER_LOSS, "The last reset is Power on reset"), + '11': (self.REBOOT_CAUSE_POWER_LOSS, "The last reset is Power on reset"), '22': (self.REBOOT_CAUSE_HARDWARE_OTHER, "The last reset is soft-set CPU warm reset"), '33': (self.REBOOT_CAUSE_NON_HARDWARE, "The last reset is CPU cold reset"), '44': (self.REBOOT_CAUSE_NON_HARDWARE, "The last reset is CPU warm reset"), From 9b769244d58bdc76a4074e2ddd7e64901323673f Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Thu, 6 Apr 2023 16:42:59 +0800 Subject: [PATCH 48/59] [Build] Fix the SLAVE_DRI not defined issue in the slave container issue (#14297) Why I did it It is to fix the issue #13773 It only has impact on the build triggered manually inside of the slave container. Developers can go to the slave container do a build, it will print a skippable error message complaining the variable not found. How I did it Add the default value for variable SLAVE_DRI. How to verify it --- slave.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/slave.mk b/slave.mk index 1d5c3dde7846..94254d3e2808 100644 --- a/slave.mk +++ b/slave.mk @@ -45,6 +45,7 @@ DBG_IMAGE_MARK = dbg DBG_SRC_ARCHIVE_FILE = $(TARGET_PATH)/sonic_src.tar.gz BUILD_WORKDIR = /sonic DPKG_ADMINDIR_PATH = $(BUILD_WORKDIR)/dpkg +SLAVE_DIR ?= sonic-slave-$(BLDENV) CONFIGURED_PLATFORM := $(shell [ -f .platform ] && cat .platform || echo generic) PLATFORM_PATH = platform/$(CONFIGURED_PLATFORM) From 6f5425137512912283d941f3b311655597818a87 Mon Sep 17 00:00:00 2001 From: snider-nokia <76123698+snider-nokia@users.noreply.github.com> Date: Thu, 6 Apr 2023 11:04:45 -0400 Subject: [PATCH 49/59] [armhf][Nokia-7215]Add SFP refactor support for Nokia-7215 platform (#14396) --- .../armhf-nokia_ixs7215_52x-r0/platform.json | 8 +- .../7215/sonic_platform/sfp.py | 958 ++---------------- 2 files changed, 97 insertions(+), 869 deletions(-) diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json index 4f4585b1e4de..2e4cae1219e3 100644 --- a/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json @@ -267,16 +267,16 @@ "name": "Ethernet47" }, { - "name": "Ethernet48" + "name": "SFP48" }, { - "name": "Ethernet49" + "name": "SFP49" }, { - "name": "Ethernet50" + "name": "SFP50" }, { - "name": "Ethernet51" + "name": "SFP51" } ] }, diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index 7babb45d40ae..e05908386d39 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -1,20 +1,22 @@ -############################################################################# -# Nokia +# Name: sfp.py, version: 1.0 +# +# Description: Module contains the definitions of SFP related APIs +# for Nokia IXR 7250 platform. +# +# Copyright (c) 2023, Nokia +# All rights reserved. # -############################################################################# - -import subprocess try: - from sonic_platform_base.sfp_base import SfpBase - from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId - from sonic_platform_base.sonic_sfp.sff8472 import sff8472Dom - from sonic_platform_base.sonic_sfp.sfputilhelper import SfpUtilHelper - from sonic_py_common import logger - from sonic_py_common.general import getstatusoutput_noshell + from sonic_platform_base.sonic_xcvr.sfp_optoe_base import SfpOptoeBase + from sonic_py_common.logger import Logger + from sonic_py_common import device_info + except ImportError as e: raise ImportError(str(e) + "- required module not found") +import subprocess as cmd + smbus_present = 1 try: @@ -22,77 +24,6 @@ except ImportError as e: smbus_present = 0 - -INFO_OFFSET = 128 -DOM_OFFSET = 0 - -# definitions of the offset and width for values in XCVR info eeprom -XCVR_INTFACE_BULK_OFFSET = 0 - -XCVR_INTFACE_BULK_WIDTH_SFP = 21 -XCVR_TYPE_OFFSET = 0 -XCVR_TYPE_WIDTH = 1 -XCVR_EXT_TYPE_OFFSET = 1 -XCVR_EXT_TYPE_WIDTH = 1 -XCVR_CONNECTOR_OFFSET = 2 -XCVR_CONNECTOR_WIDTH = 1 -XCVR_COMPLIANCE_CODE_OFFSET = 3 -XCVR_COMPLIANCE_CODE_WIDTH = 8 -XCVR_ENCODING_OFFSET = 11 -XCVR_ENCODING_WIDTH = 1 -XCVR_NBR_OFFSET = 12 -XCVR_NBR_WIDTH = 1 -XCVR_EXT_RATE_SEL_OFFSET = 13 -XCVR_EXT_RATE_SEL_WIDTH = 1 -XCVR_CABLE_LENGTH_OFFSET = 14 - -XCVR_CABLE_LENGTH_WIDTH_SFP = 6 -XCVR_VENDOR_NAME_OFFSET = 20 -XCVR_VENDOR_NAME_WIDTH = 16 -XCVR_VENDOR_OUI_OFFSET = 37 -XCVR_VENDOR_OUI_WIDTH = 3 -XCVR_VENDOR_PN_OFFSET = 40 -XCVR_VENDOR_PN_WIDTH = 16 -XCVR_HW_REV_OFFSET = 56 - -XCVR_HW_REV_WIDTH_SFP = 4 -XCVR_VENDOR_SN_OFFSET = 68 -XCVR_VENDOR_SN_WIDTH = 16 -XCVR_VENDOR_DATE_OFFSET = 84 -XCVR_VENDOR_DATE_WIDTH = 8 -XCVR_DOM_CAPABILITY_OFFSET = 92 -XCVR_DOM_CAPABILITY_WIDTH = 2 -XCVR_INTERFACE_DATA_START = 0 -XCVR_INTERFACE_DATA_SIZE = 92 - -SFP_DOM_BULK_DATA_START = 96 -SFP_DOM_BULK_DATA_SIZE = 10 - -SFP_MODULE_ADDRA2_OFFSET = 256 -SFP_MODULE_THRESHOLD_OFFSET = 0 -SFP_MODULE_THRESHOLD_WIDTH = 56 -SFP_CHANNL_THRESHOLD_OFFSET = 112 -SFP_CHANNL_THRESHOLD_WIDTH = 2 - -SFP_TEMPE_OFFSET = 96 -SFP_TEMPE_WIDTH = 2 -SFP_VOLT_OFFSET = 98 -SFP_VOLT_WIDTH = 2 -SFP_CHANNL_MON_OFFSET = 100 -SFP_CHANNL_MON_WIDTH = 6 -SFP_CHANNL_STATUS_OFFSET = 110 -SFP_CHANNL_STATUS_WIDTH = 1 - -sfp_cable_length_tup = ('LengthSMFkm-UnitsOfKm', 'LengthSMF(UnitsOf100m)', - 'Length50um(UnitsOf10m)', 'Length62.5um(UnitsOfm)', - 'LengthCable(UnitsOfm)', 'LengthOM3(UnitsOf10m)') - -sfp_compliance_code_tup = ('10GEthernetComplianceCode', 'InfinibandComplianceCode', - 'ESCONComplianceCodes', 'SONETComplianceCodes', - 'EthernetComplianceCodes', 'FibreChannelLinkLength', - 'FibreChannelTechnology', 'SFP+CableTechnology', - 'FibreChannelTransmissionMedia', 'FibreChannelSpeed') - COPPER_TYPE = "COPPER" SFP_TYPE = "SFP" @@ -100,689 +31,155 @@ SFP_PORT_START = 49 SFP_PORT_END = 52 -SYSLOG_IDENTIFIER = "xcvrd" -sonic_logger = logger.Logger(SYSLOG_IDENTIFIER) - +logger = Logger() -class Sfp(SfpBase): - """Platform-specific Sfp class""" +class Sfp(SfpOptoeBase): """ - Nokia platform-specific Sfp class + Nokia IXR-7215 Platform-specific Sfp refactor class """ + instances = [] # Paths PLATFORM_ROOT_PATH = "/usr/share/sonic/device" PMON_HWSKU_PATH = "/usr/share/sonic/hwsku" - HOST_CHK_CMD = ["docker"] + HOST_CHK_CMD = "docker > /dev/null 2>&1" PLATFORM = "armhf-nokia_ixs7215_52x-r0" HWSKU = "Nokia-7215" port_to_i2c_mapping = 0 + # def __init__(self, index, sfp_type, stub): def __init__(self, index, sfp_type, eeprom_path, port_i2c_map): - SfpBase.__init__(self) + SfpOptoeBase.__init__(self) self.index = index self.port_num = index self.sfp_type = sfp_type self.eeprom_path = eeprom_path self.port_to_i2c_mapping = port_i2c_map + self.name = sfp_type + str(index-1) self.port_name = sfp_type + str(index) self.port_to_eeprom_mapping = {} self.port_to_eeprom_mapping[index] = eeprom_path - self.info_dict_keys = ['type', 'vendor_rev', 'serial', 'manufacturer', - 'model', 'connector', 'encoding', 'ext_identifier', - 'ext_rateselect_compliance', 'cable_type', 'cable_length', - 'nominal_bit_rate', 'specification_compliance', - 'type_abbrv_name', 'vendor_date', 'vendor_oui'] - - self.dom_dict_keys = ['rx_los', 'tx_fault', 'reset_status', 'power_lpmode', - 'tx_disable', 'tx_disable_channel', 'temperature', - 'voltage', 'rx1power', 'rx2power', 'rx3power', - 'rx4power', 'tx1bias', 'tx2bias', 'tx3bias', 'tx4bias', - 'tx1power', 'tx2power', 'tx3power', 'tx4power'] - - self.threshold_dict_keys = ['temphighalarm', 'temphighwarning', 'templowalarm', - 'templowwarning', 'vcchighalarm', 'vcchighwarning', - 'vcclowalarm', 'vcclowwarning', 'rxpowerhighalarm', - 'rxpowerhighwarning', 'rxpowerlowalarm', 'rxpowerlowwarning', - 'txpowerhighalarm', 'txpowerhighwarning', 'txpowerlowalarm', - 'txpowerlowwarning', 'txbiashighalarm', 'txbiashighwarning', - 'txbiaslowalarm', 'txbiaslowwarning'] - - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.calibration = 0 - - def __convert_string_to_num(self, value_str): - if "-inf" in value_str: - return 'N/A' - elif "Unknown" in value_str: - return 'N/A' - elif 'dBm' in value_str: - t_str = value_str.rstrip('dBm') - return float(t_str) - elif 'mA' in value_str: - t_str = value_str.rstrip('mA') - return float(t_str) - elif 'C' in value_str: - t_str = value_str.rstrip('C') - return float(t_str) - elif 'Volts' in value_str: - t_str = value_str.rstrip('Volts') - return float(t_str) - else: - return 'N/A' - - def __is_host(self): - return subprocess.call(self.HOST_CHK_CMD) == 0 - - def __get_path_to_port_config_file(self): - platform_path = "/".join([self.PLATFORM_ROOT_PATH, self.PLATFORM]) - hwsku_path = "/".join([platform_path, self.HWSKU] - ) if self.__is_host() else self.PMON_HWSKU_PATH - return "/".join([hwsku_path, "port_config.ini"]) - - def __read_eeprom_specific_bytes(self, offset, num_bytes): - sysfsfile_eeprom = None - - eeprom_raw = [] - for i in range(0, num_bytes): - eeprom_raw.append("0x00") - - sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom_mapping[self.port_num] - - try: - sysfsfile_eeprom = open( - sysfs_sfp_i2c_client_eeprom_path, mode="rb", buffering=0) - sysfsfile_eeprom.seek(offset) - raw = sysfsfile_eeprom.read(num_bytes) - for n in range(0, num_bytes): - eeprom_raw[n] = hex(raw[n])[2:].zfill(2) - except Exception as e: - pass - finally: - if sysfsfile_eeprom: - sysfsfile_eeprom.close() - return eeprom_raw - - def _dom_capability_detect(self): - if self.sfp_type == "SFP": - sfpi_obj = sff8472InterfaceId() - if sfpi_obj is None: - return None - sfp_dom_capability_raw = self.__read_eeprom_specific_bytes( - XCVR_DOM_CAPABILITY_OFFSET, XCVR_DOM_CAPABILITY_WIDTH) - if sfp_dom_capability_raw is not None: - sfp_dom_capability = int(sfp_dom_capability_raw[0], 16) - self.dom_supported = (sfp_dom_capability & 0x40 != 0) - if self.dom_supported: - self.dom_temp_supported = True - self.dom_volt_supported = True - self.dom_rx_power_supported = True - self.dom_tx_power_supported = True - if sfp_dom_capability & 0x20 != 0: - self.calibration = 1 - elif sfp_dom_capability & 0x10 != 0: - self.calibration = 2 - else: - self.calibration = 0 - else: - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.calibration = 0 - self.dom_tx_disable_supported = ( - int(sfp_dom_capability_raw[1], 16) & 0x40 != 0) - else: - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - - def get_transceiver_info(self): - """ - Retrieves transceiver info of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - type |1*255VCHAR |type of SFP - vendor_rev |1*255VCHAR |vendor revision of SFP - serial |1*255VCHAR |serial number of the SFP - manufacturer |1*255VCHAR |SFP vendor name - model |1*255VCHAR |SFP model name - connector |1*255VCHAR |connector information - encoding |1*255VCHAR |encoding information - ext_identifier |1*255VCHAR |extend identifier - ext_rateselect_compliance |1*255VCHAR |extended rateSelect compliance - cable_length |INT |cable length in m - nominal_bit_rate |INT |nominal bit rate by 100Mbs - specification_compliance |1*255VCHAR |specification compliance - type_abbrv_name |1*255VCHAR |type of SFP (abbreviated) - vendor_date |1*255VCHAR |vendor date - vendor_oui |1*255VCHAR |vendor OUI - application_advertisement |1*255VCHAR |supported applications advertisement - ======================================================================== - """ - - if self.sfp_type == COPPER_TYPE: - return None + self._version_info = device_info.get_sonic_version_info() + self.lastPresence = False - compliance_code_dict = {} - transceiver_info_dict = dict.fromkeys(self.info_dict_keys, 'N/A') + logger.log_debug("Sfp __init__ index {} setting name to {} and eeprom_path to {}".format(index, self.name, self.eeprom_path)) - if not self.get_presence(): - return transceiver_info_dict - - if self.sfp_type == SFP_TYPE: - offset = 0 - vendor_rev_width = XCVR_HW_REV_WIDTH_SFP - interface_info_bulk_width = XCVR_INTFACE_BULK_WIDTH_SFP - - sfpi_obj = sff8472InterfaceId() - if sfpi_obj is None: - print("Error: sfp_object open failed") - return None - - sfp_interface_bulk_raw = self.__read_eeprom_specific_bytes( - offset + XCVR_INTERFACE_DATA_START, XCVR_INTERFACE_DATA_SIZE) - if sfp_interface_bulk_raw is None: - return None - - start = XCVR_INTFACE_BULK_OFFSET - XCVR_INTERFACE_DATA_START - end = start + interface_info_bulk_width - sfp_interface_bulk_data = sfpi_obj.parse_sfp_info_bulk( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_NAME_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_NAME_WIDTH - sfp_vendor_name_data = sfpi_obj.parse_vendor_name( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_PN_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_PN_WIDTH - sfp_vendor_pn_data = sfpi_obj.parse_vendor_pn( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_HW_REV_OFFSET - XCVR_INTERFACE_DATA_START - end = start + vendor_rev_width - sfp_vendor_rev_data = sfpi_obj.parse_vendor_rev( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_SN_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_SN_WIDTH - sfp_vendor_sn_data = sfpi_obj.parse_vendor_sn( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_OUI_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_OUI_WIDTH - sfp_vendor_oui_data = sfpi_obj.parse_vendor_oui( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_DATE_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_DATE_WIDTH - sfp_vendor_date_data = sfpi_obj.parse_vendor_date( - sfp_interface_bulk_raw[start: end], 0) - - transceiver_info_dict['type'] = sfp_interface_bulk_data \ - ['data']['type']['value'] - transceiver_info_dict['manufacturer'] = sfp_vendor_name_data \ - ['data']['Vendor Name']['value'] - transceiver_info_dict['model'] = sfp_vendor_pn_data \ - ['data']['Vendor PN']['value'] - transceiver_info_dict['vendor_rev'] = sfp_vendor_rev_data \ - ['data']['Vendor Rev']['value'] - transceiver_info_dict['serial'] = sfp_vendor_sn_data \ - ['data']['Vendor SN']['value'] - transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data \ - ['data']['Vendor OUI']['value'] - transceiver_info_dict['vendor_date'] = sfp_vendor_date_data \ - ['data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] - transceiver_info_dict['connector'] = sfp_interface_bulk_data \ - ['data']['Connector']['value'] - transceiver_info_dict['encoding'] = sfp_interface_bulk_data \ - ['data']['EncodingCodes']['value'] - transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data \ - ['data']['Extended Identifier']['value'] - transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data \ - ['data']['RateIdentifier']['value'] - transceiver_info_dict['type_abbrv_name'] = sfp_interface_bulk_data \ - ['data']['type_abbrv_name']['value'] - - for key in sfp_cable_length_tup: - if key in sfp_interface_bulk_data['data']: - transceiver_info_dict['cable_type'] = key - transceiver_info_dict['cable_length'] = \ - str(sfp_interface_bulk_data['data'][key]['value']) - - for key in sfp_compliance_code_tup: - if key in sfp_interface_bulk_data['data']['Specification compliance']['value']: - compliance_code_dict[key] = sfp_interface_bulk_data \ - ['data']['Specification compliance']['value'][key]['value'] - - transceiver_info_dict['specification_compliance'] = \ - str(compliance_code_dict) - transceiver_info_dict['nominal_bit_rate'] = \ - str(sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) - transceiver_info_dict['application_advertisement'] = 'N/A' - - return transceiver_info_dict - - def get_transceiver_bulk_status(self): - """ - Retrieves transceiver bulk status of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - rx_los |BOOLEAN |RX loss-of-signal status, True if has RX los, False if not. - tx_fault |BOOLEAN |TX fault status, True if has TX fault, False if not. - reset_status |BOOLEAN |reset status, True if SFP in reset, False if not. - lp_mode |BOOLEAN |low power mode status, True in lp mode, False if not. - tx_disable |BOOLEAN |TX disable status, True TX disabled, False if not. - tx_disabled_channel |HEX |disabled TX channels in hex, bits 0 to 3 represent channel 0 - | |to channel 3. - temperature |INT |module temperature in Celsius - voltage |INT |supply voltage in mV - txbias |INT |TX Bias Current in mA, n is the channel number, - | |for example, tx2bias stands for tx bias of channel 2. - rxpower |INT |received optical power in mW, n is the channel number, - | |for example, rx2power stands for rx power of channel 2. - txpower |INT |TX output power in mW, n is the channel number, - | |for example, tx2power stands for tx power of channel 2. - ======================================================================== - """ - - transceiver_dom_info_dict = dict.fromkeys(self.dom_dict_keys, 'N/A') - - if self.sfp_type == COPPER_TYPE: - return transceiver_dom_info_dict - - if self.sfp_type == SFP_TYPE: - - self._dom_capability_detect() - if not self.dom_supported: - return transceiver_dom_info_dict - - offset = 256 - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return transceiver_dom_info_dict - sfpd_obj._calibration_type = self.calibration - - dom_data_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_DOM_BULK_DATA_START), SFP_DOM_BULK_DATA_SIZE) - - start = SFP_TEMPE_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_TEMPE_WIDTH - dom_temperature_data = sfpd_obj.parse_temperature( - dom_data_raw[start: end], 0) - - start = SFP_VOLT_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_VOLT_WIDTH - dom_voltage_data = sfpd_obj.parse_voltage( - dom_data_raw[start: end], 0) - - start = SFP_CHANNL_MON_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_CHANNL_MON_WIDTH - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_data_raw[start: end], 0) - - transceiver_dom_info_dict['temperature'] = self.__convert_string_to_num( - dom_temperature_data['data']['Temperature']['value']) - transceiver_dom_info_dict['voltage'] = self.__convert_string_to_num( - dom_voltage_data['data']['Vcc']['value']) - transceiver_dom_info_dict['rx1power'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['RXPower']['value']) - transceiver_dom_info_dict['tx1bias'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXBias']['value']) - transceiver_dom_info_dict['tx1power'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXPower']['value']) - - transceiver_dom_info_dict['rx_los'] = self.get_rx_los() - transceiver_dom_info_dict['tx_fault'] = self.get_tx_fault() - transceiver_dom_info_dict['reset_status'] = self.get_reset_status() - transceiver_dom_info_dict['lp_mode'] = self.get_lpmode() - - return transceiver_dom_info_dict - - def get_transceiver_threshold_info(self): - """ - Retrieves transceiver threshold info of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - temphighalarm |FLOAT |High Alarm Threshold value of temperature in Celsius. - templowalarm |FLOAT |Low Alarm Threshold value of temperature in Celsius. - temphighwarning |FLOAT |High Warning Threshold value of temperature in Celsius. - templowwarning |FLOAT |Low Warning Threshold value of temperature in Celsius. - vcchighalarm |FLOAT |High Alarm Threshold value of supply voltage in mV. - vcclowalarm |FLOAT |Low Alarm Threshold value of supply voltage in mV. - vcchighwarning |FLOAT |High Warning Threshold value of supply voltage in mV. - vcclowwarning |FLOAT |Low Warning Threshold value of supply voltage in mV. - rxpowerhighalarm |FLOAT |High Alarm Threshold value of received power in dBm. - rxpowerlowalarm |FLOAT |Low Alarm Threshold value of received power in dBm. - rxpowerhighwarning |FLOAT |High Warning Threshold value of received power in dBm. - rxpowerlowwarning |FLOAT |Low Warning Threshold value of received power in dBm. - txpowerhighalarm |FLOAT |High Alarm Threshold value of transmit power in dBm. - txpowerlowalarm |FLOAT |Low Alarm Threshold value of transmit power in dBm. - txpowerhighwarning |FLOAT |High Warning Threshold value of transmit power in dBm. - txpowerlowwarning |FLOAT |Low Warning Threshold value of transmit power in dBm. - txbiashighalarm |FLOAT |High Alarm Threshold value of tx Bias Current in mA. - txbiaslowalarm |FLOAT |Low Alarm Threshold value of tx Bias Current in mA. - txbiashighwarning |FLOAT |High Warning Threshold value of tx Bias Current in mA. - txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. - ======================================================================== - """ - transceiver_dom_threshold_info_dict = dict.fromkeys( - self.threshold_dict_keys, 'N/A') - - if self.sfp_type == COPPER_TYPE: - return transceiver_dom_threshold_info_dict - - if self.sfp_type == SFP_TYPE: - - offset = SFP_MODULE_ADDRA2_OFFSET - - self._dom_capability_detect() - if not self.dom_supported: - return transceiver_dom_threshold_info_dict - - sfpd_obj = sff8472Dom(None, self.calibration) - if sfpd_obj is None: - return transceiver_dom_threshold_info_dict - - dom_module_threshold_raw = self.__read_eeprom_specific_bytes((offset + SFP_MODULE_THRESHOLD_OFFSET), - SFP_MODULE_THRESHOLD_WIDTH) - if dom_module_threshold_raw is not None: - dom_module_threshold_data = sfpd_obj.parse_alarm_warning_threshold( - dom_module_threshold_raw, 0) - else: - return transceiver_dom_threshold_info_dict - - # Threshold Data - transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] - transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] - transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] - transceiver_dom_threshold_info_dict['templowwarning'] = dom_module_threshold_data['data']['TempLowWarning']['value'] - transceiver_dom_threshold_info_dict['vcchighalarm'] = dom_module_threshold_data['data']['VoltageHighAlarm']['value'] - transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VoltageLowAlarm']['value'] - transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data[ - 'data']['VoltageHighWarning']['value'] - transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VoltageLowWarning']['value'] - transceiver_dom_threshold_info_dict['txbiashighalarm'] = dom_module_threshold_data['data']['BiasHighAlarm']['value'] - transceiver_dom_threshold_info_dict['txbiaslowalarm'] = dom_module_threshold_data['data']['BiasLowAlarm']['value'] - transceiver_dom_threshold_info_dict['txbiashighwarning'] = dom_module_threshold_data['data']['BiasHighWarning']['value'] - transceiver_dom_threshold_info_dict['txbiaslowwarning'] = dom_module_threshold_data['data']['BiasLowWarning']['value'] - transceiver_dom_threshold_info_dict['txpowerhighalarm'] = dom_module_threshold_data['data']['TXPowerHighAlarm']['value'] - transceiver_dom_threshold_info_dict['txpowerlowalarm'] = dom_module_threshold_data['data']['TXPowerLowAlarm']['value'] - transceiver_dom_threshold_info_dict['txpowerhighwarning'] = dom_module_threshold_data['data']['TXPowerHighWarning']['value'] - transceiver_dom_threshold_info_dict['txpowerlowwarning'] = dom_module_threshold_data['data']['TXPowerLowWarning']['value'] - transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_module_threshold_data['data']['RXPowerHighAlarm']['value'] - transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_module_threshold_data['data']['RXPowerLowAlarm']['value'] - transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_module_threshold_data['data']['RXPowerHighWarning']['value'] - transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_module_threshold_data['data']['RXPowerLowWarning']['value'] - - return transceiver_dom_threshold_info_dict + Sfp.instances.append(self) + + def get_eeprom_path(self): + return self.eeprom_path - def get_reset_status(self): + def get_presence(self): """ - Retrieves the reset status of SFP + Retrieves the presence Returns: - A Boolean, True if reset enabled, False if disabled + bool: True if is present, False if not """ - self._dom_capability_detect() - if not self.dom_supported: - return False if self.sfp_type == COPPER_TYPE: return False - if self.sfp_type == SFP_TYPE: - offset = 0 - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - - if dom_channel_monitor_raw is not None: - return False - else: - return True - - def get_rx_los(self): - """ - Retrieves the RX LOS (lost-of-signal) status of SFP - Returns: - A Boolean, True if SFP has RX LOS, False if not. - """ - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - rx_los_list = [] - - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 16) - rx_los_list.append(rx_los_data & 0x02 != 0) + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, sfpstatus = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x3') + sfpstatus = int(sfpstatus, 16) else: - return None + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x3 + sfpstatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - return rx_los_list + pos = [1, 2, 4, 8] + bit_pos = pos[self.index-SFP_PORT_START] + sfpstatus = sfpstatus & (bit_pos) - def get_tx_fault(self): - """ - Retrieves the TX fault status of SFP - Returns: - A Boolean, True if SFP has TX fault, False if not - Note : TX fault status is lached until a call to get_tx_fault or a reset. - """ - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - tx_fault_list = [] - - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_fault_data = int(dom_channel_monitor_raw[0], 16) - tx_fault_list.append(tx_fault_data & 0x04 != 0) - else: - return None - return tx_fault_list + if sfpstatus == 0: + return True + return False - def get_tx_disable(self): + def get_name(self): """ - Retrieves the tx_disable status of this SFP - Returns: - A Boolean, True if tx_disable is enabled, False if disabled + Retrieves the name of the device + Returns: + string: The name of the device """ + return self.name - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - - tx_disable_list = [] - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_disable_data = int(dom_channel_monitor_raw[0], 16) - tx_disable_list.append(tx_disable_data & 0xC0 != 0) - else: - return None - - return tx_disable_list - - def get_tx_disable_channel(self): + def get_position_in_parent(self): """ - Retrieves the TX disabled channels in this SFP + Retrieves 1-based relative physical position in parent device. Returns: - A hex of 4 bits (bit 0 to bit 3 as channel 0 to channel 3) to represent - TX channels which have been disabled in this SFP. - As an example, a returned value of 0x5 indicates that channel 0 - and channel 2 have been disabled. + integer: The 1-based relative physical position in parent device or + -1 if cannot determine the position """ - tx_disable_list = self.get_tx_disable() - if tx_disable_list is None: - return 0 - tx_disabled = 0 - for i in range(len(tx_disable_list)): - if tx_disable_list[i]: - tx_disabled |= 1 << i - return tx_disabled + return -1 - def get_lpmode(self): + def is_replaceable(self): """ - Retrieves the lpmode (low power mode) status of this SFP + Indicate whether this device is replaceable. Returns: - A Boolean, True if lpmode is enabled, False if disabled + bool: True if it is replaceable. """ - if self.sfp_type == COPPER_TYPE: - return False - if self.sfp_type == SFP_TYPE: - return False - def get_power_override(self): - """ - Retrieves the power-override status of this SFP - Returns: - A Boolean, True if power-override is enabled, False if disabled - """ - if self.sfp_type == COPPER_TYPE: - return False - if self.sfp_type == SFP_TYPE: + if self.sfp_type == "SFP": + return True + else: return False - def get_temperature(self): + def _get_error_code(self): """ - Retrieves the temperature of this SFP + Get error code of the SFP module + Returns: - An integer number of current temperature in Celsius + The error code """ - if self.sfp_type == COPPER_TYPE: - return None - - transceiver_bulk_status = self.get_transceiver_bulk_status() - return transceiver_bulk_status.get("temperature", "N/A") + return NotImplementedError - def get_voltage(self): - """ - Retrieves the supply voltage of this SFP - Returns: - An integer number of supply voltage in mV + def get_error_description(self): """ - if self.sfp_type == COPPER_TYPE: - return None + Get error description - transceiver_bulk_status = self.get_transceiver_bulk_status() - return transceiver_bulk_status.get("voltage", "N/A") + Args: + error_code: The error code returned by _get_error_code - def get_tx_bias(self): - """ - Retrieves the TX bias current of this SFP Returns: - + The error description """ - if self.sfp_type == COPPER_TYPE: - return None - - tx_bias_list = [] - transceiver_bulk_status = self.get_transceiver_bulk_status() - tx_bias_list.append(transceiver_bulk_status.get("tx1bias", "N/A")) - - return tx_bias_list + if not self.get_presence(): + error_description = self.SFP_STATUS_UNPLUGGED + else: + error_description = self.SFP_STATUS_OK + return error_description + # return NotImplementedError - def get_rx_power(self): + def get_reset_status(self): """ - Retrieves the received optical power for this SFP + Retrieves the reset status of SFP Returns: - A list of four integer numbers, representing received optical - power in mW for channel 0 to channel 4. - Ex. ['1.77', '1.71', '1.68', '1.70'] + A Boolean, True if reset enabled, False if disabled """ - rx_power_list = [] if self.sfp_type == COPPER_TYPE: - return None - + return False if self.sfp_type == SFP_TYPE: + return False - offset = 256 - - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return None - - self._dom_capability_detect() - if self.dom_supported: - sfpd_obj._calibration_type = self.calibration - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH) - if dom_channel_monitor_raw is not None: - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_channel_monitor_raw, 0) - rx_power_list.append(self.__convert_string_to_num( - dom_channel_monitor_data['data']['RXPower']['value'])) - else: - return None - else: - return None - - return rx_power_list - - def get_tx_power(self): + def get_status(self): """ - Retrieves the TX power of this SFP - Returns: - A list of four integer numbers, representing TX power in mW - for channel 0 to channel 4. - Ex. ['1.86', '1.86', '1.86', '1.86'] + Retrieves the operational status of the device """ - tx_power_list = [] - - if self.sfp_type == COPPER_TYPE: - return None + reset = self.get_reset_status() - if self.sfp_type == SFP_TYPE: + if reset is True: + status = False + else: + status = True - offset = 256 - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return None - - self._dom_capability_detect() - if self.dom_supported: - sfpd_obj._calibration_type = self.calibration - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH) - if dom_channel_monitor_raw is not None: - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_channel_monitor_raw, 0) - tx_power_list.append(self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXPower']['value'])) - else: - return None - else: - return None - return tx_power_list + return status def reset(self): """ @@ -793,64 +190,6 @@ def reset(self): # RJ45 and SFP ports not resettable return False - def tx_disable(self, tx_disable): - """ - Disable SFP TX - Args: - tx_disable : A Boolean, True to enable tx_disable mode, False to disable - tx_disable mode. - Returns: - A boolean, True if tx_disable is set successfully, False if not - """ - if self.sfp_type == COPPER_TYPE: - return False - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, register = getstatusoutput_noshell(['sudo', 'i2cget', '-y', '0', '0x41', '0x5']) - if cmdstatus: - sonic_logger.log_warning("sfp cmdstatus i2c get failed %s" % register ) - return False - register = int(register, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x5 - register = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - - pos = [1, 2, 4, 8] - mask = pos[self.index-SFP_PORT_START] - if tx_disable is True: - setbits = register | mask - else: - setbits = register & ~mask - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, output = getstatusoutput_noshell(['sudo', 'i2cset', '-y', '-m', '0x0f', '0', '0x41', '0x5', str(setbits)]) - if cmdstatus: - sonic_logger.log_warning("sfp cmdstatus i2c write failed %s" % output ) - return False - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x5 - bus.write_byte_data(DEVICE_ADDRESS, DEVICE_REG, setbits) - - return True - - def tx_disable_channel(self, channel, disable): - """ - Sets the tx_disable for specified SFP channels - Args: - channel : A hex of 4 bits (bit 0 to bit 3) which represent channel 0 to 3, - e.g. 0x5 for channel 0 and channel 2. - disable : A boolean, True to disable TX channels specified in channel, - False to enable - Returns: - A boolean, True if successful, False if not - """ - - return NotImplementedError - def set_lpmode(self, lpmode): """ Sets the lpmode (low power mode) of SFP @@ -865,124 +204,13 @@ def set_lpmode(self, lpmode): if self.sfp_type == SFP_TYPE: return False - def set_power_override(self, power_override, power_set): - """ - Sets SFP power level using power_override and power_set - Args: - power_override : - A Boolean, True to override set_lpmode and use power_set - to control SFP power, False to disable SFP power control - through power_override/power_set and use set_lpmode - to control SFP power. - power_set : - Only valid when power_override is True. - A Boolean, True to set SFP to low power mode, False to set - SFP to high power mode. - Returns: - A boolean, True if power-override and power_set are set successfully, - False if not - """ - - return NotImplementedError - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - sfputil_helper = SfpUtilHelper() - sfputil_helper.read_porttab_mappings( - self.__get_path_to_port_config_file()) - name = sfputil_helper.logical[self.index-1] or "Unknown" - return name - - def get_presence(self): + def get_lpmode(self): """ - Retrieves the presence + Retrieves the lpmode (low power mode) status of this SFP Returns: - bool: True if is present, False if not + A Boolean, True if lpmode is enabled, False if disabled """ if self.sfp_type == COPPER_TYPE: return False - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, sfpstatus = getstatusoutput_noshell(['sudo', 'i2cget', '-y', '0', '0x41', '0x3']) - sfpstatus = int(sfpstatus, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x3 - sfpstatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - - pos = [1, 2, 4, 8] - bit_pos = pos[self.index-SFP_PORT_START] - sfpstatus = sfpstatus & (bit_pos) - - if sfpstatus == 0: - return True - - return False - - def get_model(self): - """ - Retrieves the model number (or part number) of the device - Returns: - string: Model/part number of device - """ - transceiver_dom_info_dict = self.get_transceiver_info() - return transceiver_dom_info_dict.get("model", "N/A") - - def get_serial(self): - """ - Retrieves the serial number of the device - Returns: - string: Serial number of device - """ - transceiver_dom_info_dict = self.get_transceiver_info() - return transceiver_dom_info_dict.get("serial", "N/A") - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - return self.get_presence() - - def is_replaceable(self): - """ - Indicate whether this device is replaceable. - Returns: - bool: True if it is replaceable. - """ - - if self.sfp_type == "SFP": - return True - else: + if self.sfp_type == SFP_TYPE: return False - - def get_position_in_parent(self): - """ - Retrieves 1-based relative physical position in parent device - Returns: - integer: The 1-based relative physical position in parent device - """ - return self.index - - def get_error_description(self): - """ - Retrives the error descriptions of the SFP module - - Returns: - String that represents the current error descriptions of vendor specific errors - In case there are multiple errors, they should be joined by '|', - like: "Bad EEPROM|Unsupported cable" - """ - - if not self.get_presence(): - error_description = self.SFP_STATUS_UNPLUGGED - else: - error_description = self.SFP_STATUS_OK - - return error_description From 6c04ed987df090eb866bd4ebe51838ac93b6b779 Mon Sep 17 00:00:00 2001 From: Ye Jianquan Date: Fri, 7 Apr 2023 01:36:10 +0800 Subject: [PATCH 50/59] Revert "chassis-packet: resolve the missing static routes (#14230)" (#14544) This reverts commit a8f8ea3b505d2659fa4c20f1ca9550a317c93ea2. --- files/build_templates/arp_update_vars.j2 | 3 +-- files/scripts/arp_update | 27 +++++++----------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/files/build_templates/arp_update_vars.j2 b/files/build_templates/arp_update_vars.j2 index 9f4ba4a42050..91992e781ac0 100644 --- a/files/build_templates/arp_update_vars.j2 +++ b/files/build_templates/arp_update_vars.j2 @@ -4,6 +4,5 @@ "pc_interface" : "{% for (name, prefix) in PORTCHANNEL_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan_sub_interface": "{% for (name, prefix) in VLAN_SUB_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan" : "{% if VLAN %}{{ VLAN.keys() | join(' ') }}{% endif %}", - "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}", - "static_route_ifnames": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['ifname'].split(',') | join(' ') + " " }}{%- endif -%}{% endfor %}{% endif %}" + "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}" } diff --git a/files/scripts/arp_update b/files/scripts/arp_update index 2725f034668b..b686e1a93e24 100755 --- a/files/scripts/arp_update +++ b/files/scripts/arp_update @@ -14,16 +14,13 @@ while /bin/true; do ARP_UPDATE_VARS=$(sonic-cfggen -d -t ${ARP_UPDATE_VARS_FILE}) SWITCH_TYPE=$(echo $ARP_UPDATE_VARS | jq -r '.switch_type') if [[ "$SWITCH_TYPE" == "chassis-packet" ]]; then - # Get array of Nexthops and ifnames. Nexthops and ifnames are mapped one to one - STATIC_ROUTE_NEXTHOPS=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops')) - STATIC_ROUTE_IFNAMES=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_ifnames')) + STATIC_ROUTE_NEXTHOPS=$(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops') # on supervisor/rp exit the script gracefully - if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]] || [[ -z "$STATIC_ROUTE_IFNAMES" ]]; then + if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]]; then logger "arp_update: exiting as no static route in packet based chassis" exit 0 fi - for i in ${!STATIC_ROUTE_NEXTHOPS[@]}; do - nexthop="${STATIC_ROUTE_NEXTHOPS[i]}" + for nexthop in $STATIC_ROUTE_NEXTHOPS; do if [[ $nexthop == *"."* ]]; then neigh_state=( $(ip -4 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping @@ -31,19 +28,11 @@ while /bin/true; do neigh_state=( $(ip -6 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping6 fi - if [[ -z "${neigh_state}" ]] || [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then - interface="${STATIC_ROUTE_IFNAMES[i]}" - if [[ -z "$interface" ]]; then - # should never be here, handling just in case - logger "ERR: arp_update: missing interface entry for static route $nexthop" - interface=${neigh_state[0]} - fi - intf_up=$(ip link show $interface | grep "state UP") - if [[ -n "$intf_up" ]]; then - pingcmd="timeout 0.2 $ping_prefix -I ${interface} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" - eval $pingcmd - logger "arp_update: static route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" - fi + + if [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then + pingcmd="timeout 0.2 $ping_prefix -I ${neigh_state[0]} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" + eval $pingcmd + logger "arp_update: sttaic route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" fi done From 8ddfaec34f52a3b4b0ad2b6649343a817057cd5c Mon Sep 17 00:00:00 2001 From: kenneth-arista <93353051+kenneth-arista@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:53:42 -0700 Subject: [PATCH 51/59] [devices/arista] Update asic_port_name in Arista LCs (#14234) Updated asic_port_names for all Arista LC SKUs to follow latest naming conventions to remove redundant ASICx suffix. For Arista-7800R3-48CQ2-C48, added the asic_port_name mapping. --- .../Arista-7800R3-48CQ2-C48/port_config.ini | 102 +++++++++--------- .../Arista-7800R3A-36D2-C36/0/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-C36/1/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-C72/0/port_config.ini | 76 ++++++------- .../Arista-7800R3A-36D2-C72/1/port_config.ini | 76 ++++++------- .../Arista-7800R3A-36D2-D36/0/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-D36/1/port_config.ini | 40 +++---- 7 files changed, 207 insertions(+), 207 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini index ca11e4c0dd6b..07a78421dd4b 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini @@ -1,51 +1,51 @@ -# name lanes alias index role speed coreId corePortId numVoq -Ethernet0 6,7 Ethernet1/1 1 Ext 100000 0 1 8 -Ethernet4 2,3 Ethernet2/1 2 Ext 100000 0 2 8 -Ethernet8 4,5 Ethernet3/1 3 Ext 100000 0 3 8 -Ethernet12 0,1 Ethernet4/1 4 Ext 100000 0 4 8 -Ethernet16 14,15 Ethernet5/1 5 Ext 100000 0 5 8 -Ethernet20 10,11 Ethernet6/1 6 Ext 100000 0 6 8 -Ethernet24 12,13 Ethernet7/1 7 Ext 100000 0 7 8 -Ethernet28 8,9 Ethernet8/1 8 Ext 100000 0 8 8 -Ethernet32 22,23 Ethernet9/1 9 Ext 100000 0 9 8 -Ethernet36 18,19 Ethernet10/1 10 Ext 100000 0 10 8 -Ethernet40 20,21 Ethernet11/1 11 Ext 100000 0 11 8 -Ethernet44 16,17 Ethernet12/1 12 Ext 100000 0 12 8 -Ethernet48 30,31 Ethernet13/1 13 Ext 100000 0 13 8 -Ethernet52 26,27 Ethernet14/1 14 Ext 100000 0 14 8 -Ethernet56 28,29 Ethernet15/1 15 Ext 100000 0 15 8 -Ethernet60 24,25 Ethernet16/1 16 Ext 100000 0 16 8 -Ethernet64 38,39 Ethernet17/1 17 Ext 100000 0 17 8 -Ethernet68 34,35 Ethernet18/1 18 Ext 100000 0 18 8 -Ethernet72 36,37 Ethernet19/1 19 Ext 100000 0 19 8 -Ethernet76 32,33 Ethernet20/1 20 Ext 100000 0 20 8 -Ethernet80 46,47 Ethernet21/1 21 Ext 100000 0 21 8 -Ethernet84 42,43 Ethernet22/1 22 Ext 100000 0 22 8 -Ethernet88 44,45 Ethernet23/1 23 Ext 100000 0 23 8 -Ethernet92 40,41 Ethernet24/1 24 Ext 100000 0 24 8 -Ethernet96 94,95 Ethernet25/1 25 Ext 100000 1 25 8 -Ethernet100 90,91 Ethernet26/1 26 Ext 100000 1 26 8 -Ethernet104 92,93 Ethernet27/1 27 Ext 100000 1 27 8 -Ethernet108 88,89 Ethernet28/1 28 Ext 100000 1 28 8 -Ethernet112 86,87 Ethernet29/1 29 Ext 100000 1 29 8 -Ethernet116 82,83 Ethernet30/1 30 Ext 100000 1 30 8 -Ethernet120 84,85 Ethernet31/1 31 Ext 100000 1 31 8 -Ethernet124 80,81 Ethernet32/1 32 Ext 100000 1 32 8 -Ethernet128 78,79 Ethernet33/1 33 Ext 100000 1 33 8 -Ethernet132 74,75 Ethernet34/1 34 Ext 100000 1 34 8 -Ethernet136 76,77 Ethernet35/1 35 Ext 100000 1 35 8 -Ethernet140 72,73 Ethernet36/1 36 Ext 100000 1 36 8 -Ethernet144 70,71 Ethernet37/1 37 Ext 100000 1 37 8 -Ethernet148 66,67 Ethernet38/1 38 Ext 100000 1 38 8 -Ethernet152 68,69 Ethernet39/1 39 Ext 100000 1 39 8 -Ethernet156 64,65 Ethernet40/1 40 Ext 100000 1 40 8 -Ethernet160 62,63 Ethernet41/1 41 Ext 100000 1 41 8 -Ethernet164 58,59 Ethernet42/1 42 Ext 100000 1 42 8 -Ethernet168 60,61 Ethernet43/1 43 Ext 100000 1 43 8 -Ethernet172 56,57 Ethernet44/1 44 Ext 100000 1 44 8 -Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 45 8 -Ethernet180 50,51 Ethernet46/1 46 Ext 100000 1 46 8 -Ethernet184 52,53 Ethernet47/1 47 Ext 100000 1 47 8 -Ethernet188 48,49 Ethernet48/1 48 Ext 100000 1 48 8 -Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 0 49 8 -Ethernet-IB0 250 Recirc0/1 52 Inb 400000 1 50 8 +# name lanes alias index role speed asic_port_name coreId corePortId numVoq +Ethernet0 6,7 Ethernet1/1 1 Ext 100000 Eth0 0 1 8 +Ethernet4 2,3 Ethernet2/1 2 Ext 100000 Eth4 0 2 8 +Ethernet8 4,5 Ethernet3/1 3 Ext 100000 Eth8 0 3 8 +Ethernet12 0,1 Ethernet4/1 4 Ext 100000 Eth12 0 4 8 +Ethernet16 14,15 Ethernet5/1 5 Ext 100000 Eth16 0 5 8 +Ethernet20 10,11 Ethernet6/1 6 Ext 100000 Eth20 0 6 8 +Ethernet24 12,13 Ethernet7/1 7 Ext 100000 Eth24 0 7 8 +Ethernet28 8,9 Ethernet8/1 8 Ext 100000 Eth28 0 8 8 +Ethernet32 22,23 Ethernet9/1 9 Ext 100000 Eth32 0 9 8 +Ethernet36 18,19 Ethernet10/1 10 Ext 100000 Eth36 0 10 8 +Ethernet40 20,21 Ethernet11/1 11 Ext 100000 Eth40 0 11 8 +Ethernet44 16,17 Ethernet12/1 12 Ext 100000 Eth44 0 12 8 +Ethernet48 30,31 Ethernet13/1 13 Ext 100000 Eth48 0 13 8 +Ethernet52 26,27 Ethernet14/1 14 Ext 100000 Eth52 0 14 8 +Ethernet56 28,29 Ethernet15/1 15 Ext 100000 Eth56 0 15 8 +Ethernet60 24,25 Ethernet16/1 16 Ext 100000 Eth60 0 16 8 +Ethernet64 38,39 Ethernet17/1 17 Ext 100000 Eth64 0 17 8 +Ethernet68 34,35 Ethernet18/1 18 Ext 100000 Eth68 0 18 8 +Ethernet72 36,37 Ethernet19/1 19 Ext 100000 Eth72 0 19 8 +Ethernet76 32,33 Ethernet20/1 20 Ext 100000 Eth76 0 20 8 +Ethernet80 46,47 Ethernet21/1 21 Ext 100000 Eth80 0 21 8 +Ethernet84 42,43 Ethernet22/1 22 Ext 100000 Eth84 0 22 8 +Ethernet88 44,45 Ethernet23/1 23 Ext 100000 Eth88 0 23 8 +Ethernet92 40,41 Ethernet24/1 24 Ext 100000 Eth92 0 24 8 +Ethernet96 94,95 Ethernet25/1 25 Ext 100000 Eth96 1 25 8 +Ethernet100 90,91 Ethernet26/1 26 Ext 100000 Eth100 1 26 8 +Ethernet104 92,93 Ethernet27/1 27 Ext 100000 Eth104 1 27 8 +Ethernet108 88,89 Ethernet28/1 28 Ext 100000 Eth108 1 28 8 +Ethernet112 86,87 Ethernet29/1 29 Ext 100000 Eth112 1 29 8 +Ethernet116 82,83 Ethernet30/1 30 Ext 100000 Eth116 1 30 8 +Ethernet120 84,85 Ethernet31/1 31 Ext 100000 Eth120 1 31 8 +Ethernet124 80,81 Ethernet32/1 32 Ext 100000 Eth124 1 32 8 +Ethernet128 78,79 Ethernet33/1 33 Ext 100000 Eth128 1 33 8 +Ethernet132 74,75 Ethernet34/1 34 Ext 100000 Eth132 1 34 8 +Ethernet136 76,77 Ethernet35/1 35 Ext 100000 Eth136 1 35 8 +Ethernet140 72,73 Ethernet36/1 36 Ext 100000 Eth140 1 36 8 +Ethernet144 70,71 Ethernet37/1 37 Ext 100000 Eth144 1 37 8 +Ethernet148 66,67 Ethernet38/1 38 Ext 100000 Eth148 1 38 8 +Ethernet152 68,69 Ethernet39/1 39 Ext 100000 Eth152 1 39 8 +Ethernet156 64,65 Ethernet40/1 40 Ext 100000 Eth156 1 40 8 +Ethernet160 62,63 Ethernet41/1 41 Ext 100000 Eth160 1 41 8 +Ethernet164 58,59 Ethernet42/1 42 Ext 100000 Eth164 1 42 8 +Ethernet168 60,61 Ethernet43/1 43 Ext 100000 Eth168 1 43 8 +Ethernet172 56,57 Ethernet44/1 44 Ext 100000 Eth172 1 44 8 +Ethernet176 54,55 Ethernet45/1 45 Ext 100000 Eth176 1 45 8 +Ethernet180 50,51 Ethernet46/1 46 Ext 100000 Eth180 1 46 8 +Ethernet184 52,53 Ethernet47/1 47 Ext 100000 Eth184 1 47 8 +Ethernet188 48,49 Ethernet48/1 48 Ext 100000 Eth188 1 48 8 +Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 52 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini index f8448735b26f..a67c9b3f7d2f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0-ASIC0 1 1 8 -Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8-ASIC0 1 2 8 -Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16-ASIC0 1 3 8 -Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24-ASIC0 1 4 8 -Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32-ASIC0 1 5 8 -Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40-ASIC0 1 6 8 -Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48-ASIC0 1 7 8 -Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56-ASIC0 1 8 8 -Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64-ASIC0 1 9 8 -Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72-ASIC0 0 10 8 -Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80-ASIC0 0 11 8 -Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88-ASIC0 0 12 8 -Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96-ASIC0 0 13 8 -Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104-ASIC0 0 14 8 -Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112-ASIC0 0 15 8 -Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 16 8 -Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 17 8 -Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 -Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0 1 1 8 +Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8 1 2 8 +Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16 1 3 8 +Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24 1 4 8 +Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32 1 5 8 +Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40 1 6 8 +Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48 1 7 8 +Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56 1 8 8 +Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64 1 9 8 +Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72 0 10 8 +Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80 0 11 8 +Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88 0 12 8 +Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96 0 13 8 +Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104 0 14 8 +Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112 0 15 8 +Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120 0 16 8 +Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128 0 17 8 +Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136 0 18 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini index b15b00ca0953..4af1dc77b2a6 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth0-ASIC1 1 1 8 -Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth8-ASIC1 1 2 8 -Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth16-ASIC1 1 3 8 -Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth24-ASIC1 1 4 8 -Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth32-ASIC1 1 5 8 -Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth40-ASIC1 1 6 8 -Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth48-ASIC1 1 7 8 -Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth56-ASIC1 1 8 8 -Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth64-ASIC1 1 9 8 -Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth72-ASIC1 0 10 8 -Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth80-ASIC1 0 11 8 -Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth88-ASIC1 0 12 8 -Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth96-ASIC1 0 13 8 -Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth104-ASIC1 0 14 8 -Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth112-ASIC1 0 15 8 -Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 -Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 -Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 -Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 +Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth0 1 1 8 +Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth8 1 2 8 +Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth16 1 3 8 +Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth24 1 4 8 +Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth32 1 5 8 +Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth40 1 6 8 +Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth48 1 7 8 +Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth56 1 8 8 +Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth64 1 9 8 +Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth72 0 10 8 +Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth80 0 11 8 +Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth88 0 12 8 +Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth96 0 13 8 +Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth104 0 14 8 +Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth112 0 15 8 +Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120 0 16 8 +Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128 0 17 8 +Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136 0 18 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini index baa0572b6686..f9f02ffb83a0 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini @@ -1,39 +1,39 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0-ASIC0 1 1 8 -Ethernet4 76,77,78,79 Ethernet1/5 1 Ext 100000 Eth4-ASIC0 1 2 8 -Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8-ASIC0 1 3 8 -Ethernet12 84,85,86,87 Ethernet2/5 2 Ext 100000 Eth12-ASIC0 1 4 8 -Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16-ASIC0 1 5 8 -Ethernet20 92,93,94,95 Ethernet3/5 3 Ext 100000 Eth20-ASIC0 1 6 8 -Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24-ASIC0 1 7 8 -Ethernet28 100,101,102,103 Ethernet4/5 4 Ext 100000 Eth28-ASIC0 1 8 8 -Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32-ASIC0 1 9 8 -Ethernet36 108,109,110,111 Ethernet5/5 5 Ext 100000 Eth36-ASIC0 1 10 8 -Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40-ASIC0 1 11 8 -Ethernet44 116,117,118,119 Ethernet6/5 6 Ext 100000 Eth44-ASIC0 1 12 8 -Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48-ASIC0 1 13 8 -Ethernet52 124,125,126,127 Ethernet7/5 7 Ext 100000 Eth52-ASIC0 1 14 8 -Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56-ASIC0 1 15 8 -Ethernet60 132,133,134,135 Ethernet8/5 8 Ext 100000 Eth60-ASIC0 1 16 8 -Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64-ASIC0 1 17 8 -Ethernet68 140,141,142,143 Ethernet9/5 9 Ext 100000 Eth68-ASIC0 1 18 8 -Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72-ASIC0 0 19 8 -Ethernet76 68,69,70,71 Ethernet10/5 10 Ext 100000 Eth76-ASIC0 0 20 8 -Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80-ASIC0 0 21 8 -Ethernet84 60,61,62,63 Ethernet11/5 11 Ext 100000 Eth84-ASIC0 0 22 8 -Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88-ASIC0 0 23 8 -Ethernet92 52,53,54,55 Ethernet12/5 12 Ext 100000 Eth92-ASIC0 0 24 8 -Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96-ASIC0 0 25 8 -Ethernet100 44,45,46,47 Ethernet13/5 13 Ext 100000 Eth100-ASIC0 0 26 8 -Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104-ASIC0 0 27 8 -Ethernet108 36,37,38,39 Ethernet14/5 14 Ext 100000 Eth108-ASIC0 0 28 8 -Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112-ASIC0 0 29 8 -Ethernet116 28,29,30,31 Ethernet15/5 15 Ext 100000 Eth116-ASIC0 0 30 8 -Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 31 8 -Ethernet124 20,21,22,23 Ethernet16/5 16 Ext 100000 Eth124-ASIC0 0 32 8 -Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 33 8 -Ethernet132 12,13,14,15 Ethernet17/5 17 Ext 100000 Eth132-ASIC0 0 34 8 -Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 35 8 -Ethernet140 4,5,6,7 Ethernet18/5 18 Ext 100000 Eth140-ASIC0 0 36 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0 1 1 8 +Ethernet4 76,77,78,79 Ethernet1/5 1 Ext 100000 Eth4 1 2 8 +Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8 1 3 8 +Ethernet12 84,85,86,87 Ethernet2/5 2 Ext 100000 Eth12 1 4 8 +Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16 1 5 8 +Ethernet20 92,93,94,95 Ethernet3/5 3 Ext 100000 Eth20 1 6 8 +Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24 1 7 8 +Ethernet28 100,101,102,103 Ethernet4/5 4 Ext 100000 Eth28 1 8 8 +Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32 1 9 8 +Ethernet36 108,109,110,111 Ethernet5/5 5 Ext 100000 Eth36 1 10 8 +Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40 1 11 8 +Ethernet44 116,117,118,119 Ethernet6/5 6 Ext 100000 Eth44 1 12 8 +Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48 1 13 8 +Ethernet52 124,125,126,127 Ethernet7/5 7 Ext 100000 Eth52 1 14 8 +Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56 1 15 8 +Ethernet60 132,133,134,135 Ethernet8/5 8 Ext 100000 Eth60 1 16 8 +Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64 1 17 8 +Ethernet68 140,141,142,143 Ethernet9/5 9 Ext 100000 Eth68 1 18 8 +Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72 0 19 8 +Ethernet76 68,69,70,71 Ethernet10/5 10 Ext 100000 Eth76 0 20 8 +Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80 0 21 8 +Ethernet84 60,61,62,63 Ethernet11/5 11 Ext 100000 Eth84 0 22 8 +Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88 0 23 8 +Ethernet92 52,53,54,55 Ethernet12/5 12 Ext 100000 Eth92 0 24 8 +Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96 0 25 8 +Ethernet100 44,45,46,47 Ethernet13/5 13 Ext 100000 Eth100 0 26 8 +Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104 0 27 8 +Ethernet108 36,37,38,39 Ethernet14/5 14 Ext 100000 Eth108 0 28 8 +Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112 0 29 8 +Ethernet116 28,29,30,31 Ethernet15/5 15 Ext 100000 Eth116 0 30 8 +Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120 0 31 8 +Ethernet124 20,21,22,23 Ethernet16/5 16 Ext 100000 Eth124 0 32 8 +Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128 0 33 8 +Ethernet132 12,13,14,15 Ethernet17/5 17 Ext 100000 Eth132 0 34 8 +Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136 0 35 8 +Ethernet140 4,5,6,7 Ethernet18/5 18 Ext 100000 Eth140 0 36 8 +Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0 0 221 8 +Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1 1 222 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini index 4241f33ca6c1..53988f0b7a26 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini @@ -1,39 +1,39 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth144-ASIC1 1 1 8 -Ethernet148 76,77,78,79 Ethernet19/5 19 Ext 100000 Eth148-ASIC1 1 2 8 -Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth152-ASIC1 1 3 8 -Ethernet156 84,85,86,87 Ethernet20/5 20 Ext 100000 Eth156-ASIC1 1 4 8 -Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth160-ASIC1 1 5 8 -Ethernet164 92,93,94,95 Ethernet21/5 21 Ext 100000 Eth164-ASIC1 1 6 8 -Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth168-ASIC1 1 7 8 -Ethernet172 100,101,102,103 Ethernet22/5 22 Ext 100000 Eth172-ASIC1 1 8 8 -Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth176-ASIC1 1 9 8 -Ethernet180 108,109,110,111 Ethernet23/5 23 Ext 100000 Eth180-ASIC1 1 10 8 -Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth184-ASIC1 1 11 8 -Ethernet188 116,117,118,119 Ethernet24/5 24 Ext 100000 Eth188-ASIC1 1 12 8 -Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth192-ASIC1 1 13 8 -Ethernet196 124,125,126,127 Ethernet25/5 25 Ext 100000 Eth196-ASIC1 1 14 8 -Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth200-ASIC1 1 15 8 -Ethernet204 132,133,134,135 Ethernet26/5 26 Ext 100000 Eth204-ASIC1 1 16 8 -Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth208-ASIC1 1 17 8 -Ethernet212 140,141,142,143 Ethernet27/5 27 Ext 100000 Eth212-ASIC1 1 18 8 -Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth216-ASIC1 0 19 8 -Ethernet220 68,69,70,71 Ethernet28/5 28 Ext 100000 Eth220-ASIC1 0 20 8 -Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth224-ASIC1 0 21 8 -Ethernet228 60,61,62,63 Ethernet29/5 29 Ext 100000 Eth228-ASIC1 0 22 8 -Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth232-ASIC1 0 23 8 -Ethernet236 52,53,54,55 Ethernet30/5 30 Ext 100000 Eth236-ASIC1 0 24 8 -Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth240-ASIC1 0 25 8 -Ethernet244 44,45,46,47 Ethernet31/5 31 Ext 100000 Eth244-ASIC1 0 26 8 -Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth248-ASIC1 0 27 8 -Ethernet252 36,37,38,39 Ethernet32/5 32 Ext 100000 Eth252-ASIC1 0 28 8 -Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth256-ASIC1 0 29 8 -Ethernet260 28,29,30,31 Ethernet33/5 33 Ext 100000 Eth260-ASIC1 0 30 8 -Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth264-ASIC1 0 31 8 -Ethernet268 20,21,22,23 Ethernet34/5 34 Ext 100000 Eth268-ASIC1 0 32 8 -Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth272-ASIC1 0 33 8 -Ethernet276 12,13,14,15 Ethernet35/5 35 Ext 100000 Eth276-ASIC1 0 34 8 -Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth280-ASIC1 0 35 8 -Ethernet284 4,5,6,7 Ethernet36/5 36 Ext 100000 Eth284-ASIC1 0 36 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth144 1 1 8 +Ethernet148 76,77,78,79 Ethernet19/5 19 Ext 100000 Eth148 1 2 8 +Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth152 1 3 8 +Ethernet156 84,85,86,87 Ethernet20/5 20 Ext 100000 Eth156 1 4 8 +Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth160 1 5 8 +Ethernet164 92,93,94,95 Ethernet21/5 21 Ext 100000 Eth164 1 6 8 +Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth168 1 7 8 +Ethernet172 100,101,102,103 Ethernet22/5 22 Ext 100000 Eth172 1 8 8 +Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth176 1 9 8 +Ethernet180 108,109,110,111 Ethernet23/5 23 Ext 100000 Eth180 1 10 8 +Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth184 1 11 8 +Ethernet188 116,117,118,119 Ethernet24/5 24 Ext 100000 Eth188 1 12 8 +Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth192 1 13 8 +Ethernet196 124,125,126,127 Ethernet25/5 25 Ext 100000 Eth196 1 14 8 +Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth200 1 15 8 +Ethernet204 132,133,134,135 Ethernet26/5 26 Ext 100000 Eth204 1 16 8 +Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth208 1 17 8 +Ethernet212 140,141,142,143 Ethernet27/5 27 Ext 100000 Eth212 1 18 8 +Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth216 0 19 8 +Ethernet220 68,69,70,71 Ethernet28/5 28 Ext 100000 Eth220 0 20 8 +Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth224 0 21 8 +Ethernet228 60,61,62,63 Ethernet29/5 29 Ext 100000 Eth228 0 22 8 +Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth232 0 23 8 +Ethernet236 52,53,54,55 Ethernet30/5 30 Ext 100000 Eth236 0 24 8 +Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth240 0 25 8 +Ethernet244 44,45,46,47 Ethernet31/5 31 Ext 100000 Eth244 0 26 8 +Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth248 0 27 8 +Ethernet252 36,37,38,39 Ethernet32/5 32 Ext 100000 Eth252 0 28 8 +Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth256 0 29 8 +Ethernet260 28,29,30,31 Ethernet33/5 33 Ext 100000 Eth260 0 30 8 +Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth264 0 31 8 +Ethernet268 20,21,22,23 Ethernet34/5 34 Ext 100000 Eth268 0 32 8 +Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth272 0 33 8 +Ethernet276 12,13,14,15 Ethernet35/5 35 Ext 100000 Eth276 0 34 8 +Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth280 0 35 8 +Ethernet284 4,5,6,7 Ethernet36/5 36 Ext 100000 Eth284 0 36 8 +Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0 0 221 8 +Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1 1 222 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini index de840da3eb9a..d6b5da8404dd 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0-ASIC0 1 1 8 -Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8-ASIC0 1 2 8 -Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16-ASIC0 1 3 8 -Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24-ASIC0 1 4 8 -Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32-ASIC0 1 5 8 -Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40-ASIC0 1 6 8 -Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48-ASIC0 1 7 8 -Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56-ASIC0 1 8 8 -Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64-ASIC0 1 9 8 -Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72-ASIC0 0 10 8 -Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80-ASIC0 0 11 8 -Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88-ASIC0 0 12 8 -Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96-ASIC0 0 13 8 -Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104-ASIC0 0 14 8 -Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112-ASIC0 0 15 8 -Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 0 16 8 -Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 0 17 8 -Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 -Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0 1 1 8 +Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8 1 2 8 +Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16 1 3 8 +Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24 1 4 8 +Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32 1 5 8 +Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40 1 6 8 +Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48 1 7 8 +Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56 1 8 8 +Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64 1 9 8 +Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72 0 10 8 +Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80 0 11 8 +Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88 0 12 8 +Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96 0 13 8 +Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104 0 14 8 +Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112 0 15 8 +Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120 0 16 8 +Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128 0 17 8 +Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136 0 18 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini index 68db8fb44969..6e6b7765b749 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75,76,77,78,79 Ethernet19/1 19 Ext 400000 Eth0-ASIC1 1 1 8 -Ethernet152 80,81,82,83,84,85,86,87 Ethernet20/1 20 Ext 400000 Eth8-ASIC1 1 2 8 -Ethernet160 88,89,90,91,92,93,94,95 Ethernet21/1 21 Ext 400000 Eth16-ASIC1 1 3 8 -Ethernet168 96,97,98,99,100,101,102,103 Ethernet22/1 22 Ext 400000 Eth24-ASIC1 1 4 8 -Ethernet176 104,105,106,107,108,109,110,111 Ethernet23/1 23 Ext 400000 Eth32-ASIC1 1 5 8 -Ethernet184 112,113,114,115,116,117,118,119 Ethernet24/1 24 Ext 400000 Eth40-ASIC1 1 6 8 -Ethernet192 120,121,122,123,124,125,126,127 Ethernet25/1 25 Ext 400000 Eth48-ASIC1 1 7 8 -Ethernet200 128,129,130,131,132,133,134,135 Ethernet26/1 26 Ext 400000 Eth56-ASIC1 1 8 8 -Ethernet208 136,137,138,139,140,141,142,143 Ethernet27/1 27 Ext 400000 Eth64-ASIC1 1 9 8 -Ethernet216 64,65,66,67,68,69,70,71 Ethernet28/1 28 Ext 400000 Eth72-ASIC1 0 10 8 -Ethernet224 56,57,58,59,60,61,62,63 Ethernet29/1 29 Ext 400000 Eth80-ASIC1 0 11 8 -Ethernet232 48,49,50,51,52,53,54,55 Ethernet30/1 30 Ext 400000 Eth88-ASIC1 0 12 8 -Ethernet240 40,41,42,43,44,45,46,47 Ethernet31/1 31 Ext 400000 Eth96-ASIC1 0 13 8 -Ethernet248 32,33,34,35,36,37,38,39 Ethernet32/1 32 Ext 400000 Eth104-ASIC1 0 14 8 -Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext 400000 Eth112-ASIC1 0 15 8 -Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 -Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 -Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 -Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 +Ethernet144 72,73,74,75,76,77,78,79 Ethernet19/1 19 Ext 400000 Eth0 1 1 8 +Ethernet152 80,81,82,83,84,85,86,87 Ethernet20/1 20 Ext 400000 Eth8 1 2 8 +Ethernet160 88,89,90,91,92,93,94,95 Ethernet21/1 21 Ext 400000 Eth16 1 3 8 +Ethernet168 96,97,98,99,100,101,102,103 Ethernet22/1 22 Ext 400000 Eth24 1 4 8 +Ethernet176 104,105,106,107,108,109,110,111 Ethernet23/1 23 Ext 400000 Eth32 1 5 8 +Ethernet184 112,113,114,115,116,117,118,119 Ethernet24/1 24 Ext 400000 Eth40 1 6 8 +Ethernet192 120,121,122,123,124,125,126,127 Ethernet25/1 25 Ext 400000 Eth48 1 7 8 +Ethernet200 128,129,130,131,132,133,134,135 Ethernet26/1 26 Ext 400000 Eth56 1 8 8 +Ethernet208 136,137,138,139,140,141,142,143 Ethernet27/1 27 Ext 400000 Eth64 1 9 8 +Ethernet216 64,65,66,67,68,69,70,71 Ethernet28/1 28 Ext 400000 Eth72 0 10 8 +Ethernet224 56,57,58,59,60,61,62,63 Ethernet29/1 29 Ext 400000 Eth80 0 11 8 +Ethernet232 48,49,50,51,52,53,54,55 Ethernet30/1 30 Ext 400000 Eth88 0 12 8 +Ethernet240 40,41,42,43,44,45,46,47 Ethernet31/1 31 Ext 400000 Eth96 0 13 8 +Ethernet248 32,33,34,35,36,37,38,39 Ethernet32/1 32 Ext 400000 Eth104 0 14 8 +Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext 400000 Eth112 0 15 8 +Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120 0 16 8 +Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128 0 17 8 +Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136 0 18 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1 1 50 8 From 990993e3f421deedb1ee1704c798aa6125e4a627 Mon Sep 17 00:00:00 2001 From: arista-nwolfe <94405414+arista-nwolfe@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:58:01 -0700 Subject: [PATCH 52/59] [devices/arista]: Added recycle ports required for egress mirroring (#13967) Why I did it Support Egress Mirroring on supported Arista platforms How I did it Add necessary soc properties for egress mirroring recycle ports to be created Signed-off-by: Nathan Wolfe --- .../jr2-a7280cr3-32d4-40x100G.config.bcm | 95 +++++++++++-------- .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ src/sonic-device-data/tests/config_checker | 2 + 8 files changed, 297 insertions(+), 40 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm index a10f1f5c6f24..e91b3f356d4e 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm @@ -426,46 +426,61 @@ port_init_speed_cc.BCM8869X=200000 port_init_speed_cd.BCM8869X=400000 port_init_speed_il.BCM8869X=10312 -#ucode_port_100.BCM8869X=RCY_MIRROR.0:core_0.100 -#ucode_port_101.BCM8869X=RCY_MIRROR.1:core_0.101 -#ucode_port_102.BCM8869X=RCY_MIRROR.2:core_0.102 -#ucode_port_103.BCM8869X=RCY_MIRROR.3:core_0.103 -#ucode_port_104.BCM8869X=RCY_MIRROR.4:core_0.104 -#ucode_port_105.BCM8869X=RCY_MIRROR.5:core_0.105 -#ucode_port_106.BCM8869X=RCY_MIRROR.6:core_0.106 -#ucode_port_107.BCM8869X=RCY_MIRROR.7:core_0.107 -#ucode_port_108.BCM8869X=RCY_MIRROR.8:core_0.108 -#ucode_port_109.BCM8869X=RCY_MIRROR.9:core_0.109 -#ucode_port_110.BCM8869X=RCY_MIRROR.10:core_0.110 -#ucode_port_111.BCM8869X=RCY_MIRROR.11:core_0.111 -#ucode_port_112.BCM8869X=RCY_MIRROR.12:core_0.112 -#ucode_port_113.BCM8869X=RCY_MIRROR.13:core_0.113 -#ucode_port_114.BCM8869X=RCY_MIRROR.14:core_0.114 -#ucode_port_115.BCM8869X=RCY_MIRROR.15:core_0.115 -#ucode_port_116.BCM8869X=RCY_MIRROR.16:core_0.116 -#ucode_port_117.BCM8869X=RCY_MIRROR.17:core_0.117 -#ucode_port_118.BCM8869X=RCY_MIRROR.18:core_0.118 -#ucode_port_119.BCM8869X=RCY_MIRROR.19:core_0.119 -#ucode_port_120.BCM8869X=RCY_MIRROR.0:core_1.120 -#ucode_port_121.BCM8869X=RCY_MIRROR.1:core_1.121 -#ucode_port_122.BCM8869X=RCY_MIRROR.2:core_1.122 -#ucode_port_123.BCM8869X=RCY_MIRROR.3:core_1.123 -#ucode_port_124.BCM8869X=RCY_MIRROR.4:core_1.124 -#ucode_port_125.BCM8869X=RCY_MIRROR.5:core_1.125 -#ucode_port_126.BCM8869X=RCY_MIRROR.6:core_1.126 -#ucode_port_127.BCM8869X=RCY_MIRROR.7:core_1.127 -#ucode_port_128.BCM8869X=RCY_MIRROR.8:core_1.128 -#ucode_port_129.BCM8869X=RCY_MIRROR.9:core_1.129 -#ucode_port_130.BCM8869X=RCY_MIRROR.10:core_1.130 -#ucode_port_131.BCM8869X=RCY_MIRROR.11:core_1.131 -#ucode_port_132.BCM8869X=RCY_MIRROR.12:core_1.132 -#ucode_port_133.BCM8869X=RCY_MIRROR.13:core_1.133 -#ucode_port_134.BCM8869X=RCY_MIRROR.14:core_1.134 -#ucode_port_135.BCM8869X=RCY_MIRROR.15:core_1.135 -#ucode_port_136.BCM8869X=RCY_MIRROR.16:core_1.136 -#ucode_port_137.BCM8869X=RCY_MIRROR.17:core_1.137 -#ucode_port_138.BCM8869X=RCY_MIRROR.18:core_1.138 -#ucode_port_139.BCM8869X=RCY_MIRROR.19:core_1.139 +ucode_port_100.BCM8869X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8869X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8869X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8869X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8869X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8869X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8869X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8869X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8869X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8869X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8869X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8869X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8869X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8869X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8869X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8869X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8869X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8869X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8869X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8869X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8869X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8869X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8869X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8869X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8869X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8869X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8869X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8869X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8869X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8869X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8869X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8869X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8869X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8869X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8869X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8869X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8869X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8869X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8869X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8869X=RCY_MIRROR.19:core_1.139 +ucode_port_140.BCM8869X=RCY_MIRROR.20:core_0.130 +ucode_port_141.BCM8869X=RCY_MIRROR.21:core_0.131 +ucode_port_142.BCM8869X=RCY_MIRROR.22:core_0.132 +ucode_port_143.BCM8869X=RCY_MIRROR.23:core_0.133 +ucode_port_144.BCM8869X=RCY_MIRROR.24:core_0.134 +ucode_port_145.BCM8869X=RCY_MIRROR.25:core_0.135 +ucode_port_146.BCM8869X=RCY_MIRROR.20:core_1.142 +ucode_port_147.BCM8869X=RCY_MIRROR.21:core_1.143 +ucode_port_148.BCM8869X=RCY_MIRROR.22:core_1.144 +ucode_port_149.BCM8869X=RCY_MIRROR.23:core_1.145 +ucode_port_150.BCM8869X=RCY_MIRROR.24:core_1.140 +ucode_port_151.BCM8869X=RCY_MIRROR.26:core_1.141 +ucode_port_152.BCM8869X=RCY_MIRROR.27:core_0.136 +ucode_port_153.BCM8869X=RCY_MIRROR.28:core_0.137 +ucode_port_154.BCM8869X=RCY_MIRROR.27:core_1.142 port_priorities.BCM8869X=8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 658a42c6e986..4aec99c3a3e1 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 74b50739d937..de953301cc1b 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm index 1ec47834148d..aa4efbbcfea8 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -279,6 +279,46 @@ tm_port_header_type_out_222=ETH tm_port_header_type_in_222=ETH port_init_speed_221=400000 port_init_speed_222=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm index 5e7d3e9a4ac4..a62b21a9b5a0 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -279,6 +279,46 @@ tm_port_header_type_out_222=ETH tm_port_header_type_in_222=ETH port_init_speed_221=400000 port_init_speed_222=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 9758cd3f7d0e..2a0b21aeadb1 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm index e719a1ea64df..a6edcba21460 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/src/sonic-device-data/tests/config_checker b/src/sonic-device-data/tests/config_checker index 76fdde17d288..f7198bd8febb 100755 --- a/src/sonic-device-data/tests/config_checker +++ b/src/sonic-device-data/tests/config_checker @@ -35,6 +35,8 @@ def check_file(file_name): # Remove trailing chip name "bcm8869x" p = re.sub(r"\.bcm8869x(_adapter|_[a-z]\d)?$", "", p) + # Remove trailing chip name "bcm8885x" + p = re.sub(r"\.bcm8885x(_adapter|_[a-z]\d)?$", "", p) # Remove trailing unit ".$" p = re.sub(r"\.[0-9]+$", '', p) # Remove trailing port name From 63cee3ff3c03aa53b2f73921cff850fe13594d8f Mon Sep 17 00:00:00 2001 From: mihirpat1 <112018033+mihirpat1@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:59:47 -0700 Subject: [PATCH 53/59] [yang]: Modify yang model to handle subport in PORT table (#14519) Based on the port breakout HLD, we are now using subport instead of channel in the CONFIG_DB PORT table to handle port breakout. The yang schema needs to be modified accordingly to handle the corresponding change. The corresponding code changes have been merged through sonic-net/sonic-platform-daemons/pull/342 merged Signed-off-by: Mihir Patel --- src/sonic-yang-models/doc/Configuration.md | 4 ++-- .../tests/files/sample_config_db.json | 18 +++++++++--------- .../tests/yang_model_tests/tests/port.json | 8 ++++---- .../yang_model_tests/tests_config/port.json | 14 +++++++------- .../yang-models/sonic-port.yang | 4 ++-- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 3b8def2fdbc2..c0bec1558f6f 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -1501,7 +1501,7 @@ optional attributes. "mtu": "9100", "alias": "etp1a", "speed": "100000", - "channel": 1 + "subport": 1 }, "Ethernet4": { "admin_status": "up", @@ -1511,7 +1511,7 @@ optional attributes. "mtu": "9100", "alias": "etp1b", "speed": "100000", - "channel": 2 + "subport": 2 }, } } diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 977be6ded22b..66adb918f34c 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -559,7 +559,7 @@ "autoneg": "on", "adv_speeds": "all", "adv_interface_types": "all", - "channel" : "0" + "subport" : "0" }, "Ethernet3": { "alias": "Eth1/4", @@ -568,7 +568,7 @@ "speed": "11100", "tpid": "0x88A8", "admin_status": "up", - "channel": "1" + "subport": "1" }, "Ethernet4": { "alias": "Eth2/1", @@ -577,7 +577,7 @@ "speed": "11100", "tpid": "0x9100", "admin_status": "up", - "channel": "2" + "subport": "2" }, "Ethernet5": { "alias": "Eth2/2", @@ -586,7 +586,7 @@ "speed": "11100", "tpid": "0x9200", "admin_status": "up", - "channel": "3" + "subport": "3" }, "Ethernet6": { "alias": "Eth2/3", @@ -595,7 +595,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "4" + "subport": "4" }, "Ethernet7": { "alias": "Eth2/4", @@ -604,7 +604,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "5" + "subport": "5" }, "Ethernet8": { "alias": "Eth3/1", @@ -613,7 +613,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "6" + "subport": "6" }, "Ethernet9": { "alias": "Eth3/2", @@ -622,7 +622,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "7" + "subport": "7" }, "Ethernet10": { "alias": "Eth3/3", @@ -631,7 +631,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "8" + "subport": "8" }, "Ethernet11": { "alias": "Eth3/4", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/port.json b/src/sonic-yang-models/tests/yang_model_tests/tests/port.json index e02df9d54d7a..cbcd1def5b25 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/port.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/port.json @@ -121,11 +121,11 @@ "desc": "PORT_INVALID_MULTIASIC_TEST invalid role pattern, expect fail", "eStrKey": "Pattern" }, - "PORT_VALID_CHANNEL_NUMBER": { - "desc": "PORT_VALID_CHANNEL_NUMBER no failure." + "PORT_VALID_SUBPORT_NUMBER": { + "desc": "PORT_VALID_SUBPORT_NUMBER no failure." }, - "PORT_INVALID_CHANNEL_NUMBER": { - "desc": "Out of range channel number", + "PORT_INVALID_SUBPORT_NUMBER": { + "desc": "Out of range subport number", "eStrKey": "Range", "eStr": "0..8" } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json index 39b31dbb699b..869d00ded1d4 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json @@ -516,7 +516,7 @@ } }, - "PORT_INVALID_CHANNEL_NUMBER": { + "PORT_INVALID_SUBPORT_NUMBER": { "sonic-port:sonic-port": { "sonic-port:PORT": { "PORT_LIST": [ @@ -525,14 +525,14 @@ "alias": "etp1a", "lanes": "60, 61", "speed": 100000, - "channel": 9 + "subport": 9 } ] } } }, - "PORT_VALID_CHANNEL_NUMBER": { + "PORT_VALID_SUBPORT_NUMBER": { "sonic-port:sonic-port": { "sonic-port:PORT": { "PORT_LIST": [ @@ -541,28 +541,28 @@ "alias": "etp1a", "lanes": "60, 61", "speed": 100000, - "channel": 1 + "subport": 1 }, { "name": "Ethernet2", "alias": "etp1b", "lanes": "62, 63", "speed": 100000, - "channel": 2 + "subport": 2 }, { "name": "Ethernet4", "alias": "etp1c", "lanes": "64, 65", "speed": 100000, - "channel": 3 + "subport": 3 }, { "name": "Ethernet6", "alias": "etp1d", "lanes": "66, 67", "speed": 100000, - "channel": 4 + "subport": 4 } ] } diff --git a/src/sonic-yang-models/yang-models/sonic-port.yang b/src/sonic-yang-models/yang-models/sonic-port.yang index 667b3b1f359a..ce091bad579e 100644 --- a/src/sonic-yang-models/yang-models/sonic-port.yang +++ b/src/sonic-yang-models/yang-models/sonic-port.yang @@ -121,8 +121,8 @@ module sonic-port{ } } - leaf channel { - description "Logical channel(s) for physical port breakout"; + leaf subport { + description "Logical subport(s) for physical port breakout"; type uint8 { range 0..8; } From dd6659ae079cd2ffd7bd379557f173d8f6ce4408 Mon Sep 17 00:00:00 2001 From: shdasari <53248666+shdasari@users.noreply.github.com> Date: Fri, 7 Apr 2023 00:44:01 +0530 Subject: [PATCH 54/59] Modify common-auth-sonic to take care of case where no RADIUS servers are configured. (#14514) #### Why I did it Fixes #14277. Fixes the inconsistent fallback behaviour for RADIUS authentication when AAA authentication is configured as "radius, local". #### How I did it Modified common-auth-sonic.j2 template to make sure that when no RADIUS servers are configured (with AAA authentication login method set to radius, local), the system falls back to local authentication successfully. #### How to verify it 1. Configure authentication based on RADIUS and local. config aaa authentication login radius local 2. Configure an unreachable RADIUS server. config radius add 6.6.6.6 3. Try to login to switch with existing admin user credentials. This is successful. 4. Remove RADIUS server configuration. config radius delete 6.6.6.6 5. Try to login to switch with admin user credentials. This is successful. --- src/sonic-host-services-data/templates/common-auth-sonic.j2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sonic-host-services-data/templates/common-auth-sonic.j2 b/src/sonic-host-services-data/templates/common-auth-sonic.j2 index a890556a36c0..b20c9f4eebc7 100644 --- a/src/sonic-host-services-data/templates/common-auth-sonic.j2 +++ b/src/sonic-host-services-data/templates/common-auth-sonic.j2 @@ -40,7 +40,11 @@ auth [success=1 default=ignore] pam_exec.so /usr/sbin/cache_radius {% elif auth['login'] == 'radius,local' %} # root user can only be authenticated locally. Jump to local. +{% if servers | count %} auth [success={{ (servers | count) }} default=ignore] pam_succeed_if.so user = root +{% else %} +auth [success=ok default=ignore] pam_succeed_if.so user = root +{% endif %} # For the RADIUS servers, on success jump to the cache the MPL(Privilege) {% for server in servers %} auth [success={{ (servers | count) + 1 - loop.index0 }} new_authtok_reqd=done default=ignore{{ ' auth_err=die' if not auth['failthrough'] }}] pam_radius_auth.so conf=/etc/pam_radius_auth.d/{{ server.ip }}_{{ server.auth_port }}.conf privilege_level protocol={{ server.auth_type }} retry={{ server.retransmit }}{% if server.nas_ip is defined %} nas_ip_address={{ server.nas_ip }}{% endif %}{% if server.nas_id is defined %} client_id={{ server.nas_id }}{% endif %}{% if debug %} debug{% endif %}{% if trace %} trace{% endif %}{% if server.statistics %} statistics={{ server.ip }}{% endif %} try_first_pass From cffd87a6270f39d883583471f6f654372d78b16f Mon Sep 17 00:00:00 2001 From: Kuanyu Chen Date: Fri, 7 Apr 2023 03:19:11 +0800 Subject: [PATCH 55/59] Add monit_snmp file to monitor memory usage (#14464) #### Why I did it When CPU is busy, the sonic_ax_impl may not have sufficient speed to handle the notification message sent from REDIS. Thus, the message will keep stacking in the memory space of sonic_ax_impl. If the condition continues, the memory usage will keep increasing. #### How I did it Add a monit file to check if the SNMP container where sonic_ax_impl resides in use more than 4GB memory. If yes, restart the sonic_ax_impl process. #### How to verify it Run a lot of this command: `while true; do ret=$(redis-cli -n 0 set LLDP_ENTRY_TABLE:test1 test1); sleep 0.1; done;` And check the memory used by sonic_ax_impl keeps increasing. After a period, make sure the sonic_ax_impl is restarted when the memory usage reaches the 4GB threshold. And verify the memory usage of sonic_ax_impl drops down from 4GB. --- dockers/docker-snmp/base_image_files/monit_snmp | 5 +++++ rules/docker-snmp.mk | 1 + 2 files changed, 6 insertions(+) create mode 100644 dockers/docker-snmp/base_image_files/monit_snmp diff --git a/dockers/docker-snmp/base_image_files/monit_snmp b/dockers/docker-snmp/base_image_files/monit_snmp new file mode 100644 index 000000000000..979e3c60d682 --- /dev/null +++ b/dockers/docker-snmp/base_image_files/monit_snmp @@ -0,0 +1,5 @@ +############################################################################### +## Monit configuration for snmp container +############################################################################### +check program container_memory_snmp with path "/usr/bin/memory_checker snmp 4294967296" + if status == 3 for 10 times within 20 cycles then exec "/usr/bin/docker exec snmp supervisorctl restart snmp-subagent" diff --git a/rules/docker-snmp.mk b/rules/docker-snmp.mk index 313b233a8557..037d58936170 100644 --- a/rules/docker-snmp.mk +++ b/rules/docker-snmp.mk @@ -32,6 +32,7 @@ $(DOCKER_SNMP)_RUN_OPT += --privileged -t $(DOCKER_SNMP)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SNMP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_SNMP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) +$(DOCKER_SNMP)_BASE_IMAGE_FILES += monit_snmp:/etc/monit/conf.d SONIC_BULLSEYE_DOCKERS += $(DOCKER_SNMP) SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_SNMP_DBG) From 737d0e57ad49d0da154ae5fbfea7e57484b36b97 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Thu, 6 Apr 2023 13:54:56 -0700 Subject: [PATCH 56/59] [write standby] force DB connections to use unix socket to connect (#14524) Why I did it At service start up time, there are chances that the networking service is being restarted by interface-config service. When that happens, write_standby could fail to make DB connections due to loopback interface is being reconfigured. How I did it Force the db connector to use unix socket to avoid loopback reconfig timing window. How to verify it Run config reload test 20+ times and no issue encountered. Signed-off-by: Ying Xie * use unix socket instead Signed-off-by: Ying Xie --- files/scripts/write_standby.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/scripts/write_standby.py b/files/scripts/write_standby.py index 13c5b17ea64e..745b9c503d20 100755 --- a/files/scripts/write_standby.py +++ b/files/scripts/write_standby.py @@ -37,7 +37,7 @@ def config_db(self): Initializes the connector during the first call """ if self.config_db_connector is None: - self.config_db_connector = ConfigDBConnector() + self.config_db_connector = ConfigDBConnector(use_unix_socket_path=True) self.config_db_connector.connect() return self.config_db_connector @@ -69,7 +69,7 @@ def asic_db(self): Initializes the connector during the first call """ if self.asic_db_connector is None: - self.asic_db_connector = SonicV2Connector() + self.asic_db_connector = SonicV2Connector(use_unix_socket_path=True) self.asic_db_connector.connect('ASIC_DB') return self.asic_db_connector From 46cb2ad03d883328b32da1ac4cab3acf46599e2c Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Fri, 7 Apr 2023 09:35:02 +0800 Subject: [PATCH 57/59] [Ci] Fix the wrong SONIC_BUILD_JOBS build variable used issue in Azp (#14071) Why I did it [Ci] Fix the no parallel jobs in some of the platforms issue We observed some of the pipelines running more time than expected. The issue is the SONIC_BUILD_JOBS using the wrong value 1. It is caused by the runtime variable issue, there is additional single quota mark character added in the make command line. make 'SONIC_BUILD_JOBS=$(nproc)' targe/xxxx Need to change to make SONIC_BUILD_JOBS=$(nproc) targe/xxxx It is to improve the build performance for some of the platforms using the variable SONIC_BUILD_JOBS=1. Good one vs: https://dev.azure.com/mssonic/build/_build/results?buildId=227986&view=logs&j=cef3d8a9-152e-5193-620b-567dc18af272&t=cf595088-5c84-5cf1-9d7e-03331f31d795 "SONIC_BUILD_JOBS" : "8" Bad one barefoot: https://dev.azure.com/mssonic/build/_build/results?buildId=227379&view=logs&j=993d6e22-aeec-5c03-fa19-35ecba587dd9&t=7be0d2ec-661f-5569-462c-2d9b7ca4ca5d "SONIC_BUILD_JOBS" : "1" How I did it Expand the BUILD_OPTIONS variable for all platforms. --- .azure-pipelines/azure-pipelines-image-template.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azure-pipelines/azure-pipelines-image-template.yml b/.azure-pipelines/azure-pipelines-image-template.yml index d4d2c96e1c61..1311ab0608c9 100644 --- a/.azure-pipelines/azure-pipelines-image-template.yml +++ b/.azure-pipelines/azure-pipelines-image-template.yml @@ -28,11 +28,12 @@ jobs: - template: .azure-pipelines/cleanup.yml@buildimage - ${{ parameters.preSteps }} - script: | + BUILD_OPTIONS="$(BUILD_OPTIONS)" if [ -n "$(CACHE_MODE)" ] && echo $(PLATFORM_AZP) | grep -E -q "^(vs|broadcom|mellanox|marvell-armhf)$"; then CACHE_OPTIONS="SONIC_DPKG_CACHE_METHOD=$(CACHE_MODE) SONIC_DPKG_CACHE_SOURCE=/nfs/dpkg_cache/$(PLATFORM_AZP)" BUILD_OPTIONS="$(BUILD_OPTIONS) $CACHE_OPTIONS" - echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS" fi + echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS" displayName: "Set cache options" - checkout: self submodules: recursive From 6e43b5c5155d2403b9183a4a91afd4938d72c797 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Fri, 7 Apr 2023 11:05:51 +0800 Subject: [PATCH 58/59] [Build] Support to use the snapshot mirror for debian base image (#14474) Why I did it [Build] Support to use the snapshot mirror for debian base image How I did it If the MIRROR_SNAPSHOT=n, then use the default mirror http://deb.debian.org/debian If the MIRROR_SNAPSHOT=y, then use the snapshot mirror, for instance http://packages.trafficmanager.net/snapshot/debian/20230330T000330Z/. How to verify it + scripts/build_debian_base_system.sh amd64 bullseye ./fsroot-vs I: Target architecture can be executed I: Retrieving InRelease I: Checking Release signature I: Valid Release signature (key id A4285295FC7B1A81600062A9605C66F00D6C9793) I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Checking component main on http://packages.trafficmanager.net/snapshot/debian/20230331T000125Z... I: Retrieving libacl1 2.2.53-10 --- scripts/build_debian_base_system.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/build_debian_base_system.sh b/scripts/build_debian_base_system.sh index 07f240812b07..7ea150ff5e29 100755 --- a/scripts/build_debian_base_system.sh +++ b/scripts/build_debian_base_system.sh @@ -23,6 +23,12 @@ generate_version_file() sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "dpkg-query -W -f '\${Package}==\${Version}\n'" > $TARGET_BASEIMAGE_PATH/versions-deb-${IMAGE_DISTRO}-${CONFIGURED_ARCH} } +MIRROR_URL=http://deb.debian.org/debian +if [ "$MIRROR_SNAPSHOT" == y ]; then + SNAPSHOT_TIMESTAMP=$(grep "^debian==" $TARGET/versions/default/versions-mirror | tail -n 1 | sed 's/.*==//') + MIRROR_URL=http://packages.trafficmanager.net/snapshot/debian/$SNAPSHOT_TIMESTAMP +fi + if [ "$ENABLE_VERSION_CONTROL_DEB" != "y" ] || [ ! -d files/build/versions/host-base-image ]; then if [[ $CONFIGURED_ARCH == armhf || $CONFIGURED_ARCH == arm64 ]]; then if [[ $MULTIARCH_QEMU_ENVIRON == y || $CROSS_BUILD_ENVIRON == y ]]; then @@ -30,13 +36,13 @@ if [ "$ENABLE_VERSION_CONTROL_DEB" != "y" ] || [ ! -d files/build/versions/host- sudo mkdir -p $FILESYSTEM_ROOT/usr/bin sudo cp /usr/bin/qemu*static $FILESYSTEM_ROOT/usr/bin || true fi - sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --foreign --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT http://deb.debian.org/debian + sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --foreign --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT "$MIRROR_URL" sudo rm $FILESYSTEM_ROOT/proc -rf sudo mkdir $FILESYSTEM_ROOT/proc sudo mount -t proc proc $FILESYSTEM_ROOT/proc sudo LANG=C chroot $FILESYSTEM_ROOT /debootstrap/debootstrap --second-stage else - sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT http://debian-archive.trafficmanager.net/debian + sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT "$MIRROR_URL" fi RET=$? if [ $RET -ne 0 ]; then From d74055e12ca0ac4f44342e74ea097f03720663f7 Mon Sep 17 00:00:00 2001 From: Devesh Pathak <54966909+devpatha@users.noreply.github.com> Date: Thu, 6 Apr 2023 20:30:58 -0700 Subject: [PATCH 59/59] Increase wait_for_tunnel() timeout to 90s (#14279) Why I did it Orchagent sometimes take additional time to execute Tunnel tasks. This cause write_standby script to error out and mux state machines are not initialized. It results in show mux status missing some ports in output. Mar 13 20:36:52.337051 m64-tor-0-yy41 INFO systemd[1]: Starting MUX Cable Container... Mar 13 20:37:52.480322 m64-tor-0-yy41 ERR write_standby: Timed out waiting for tunnel MuxTunnel0, mux state will not be written Mar 13 20:37:58.983412 m64-tor-0-yy41 NOTICE swss#orchagent: :- doTask: Tunnel(s) added to ASIC_DB. How I did it Increase timeout from 60s to 90s How to verify it Verified that mux state machine is initialized and show mux status has all needed ports in it. --- files/scripts/write_standby.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/scripts/write_standby.py b/files/scripts/write_standby.py index 745b9c503d20..13009922f577 100755 --- a/files/scripts/write_standby.py +++ b/files/scripts/write_standby.py @@ -136,7 +136,7 @@ def tunnel_exists(self): tunnel_key_pattern = 'ASIC_STATE:SAI_OBJECT_TYPE_TUNNEL:*' return len(self.asic_db.keys('ASIC_DB', tunnel_key_pattern)) > 0 - def wait_for_tunnel(self, interval=1, timeout=60): + def wait_for_tunnel(self, interval=1, timeout=90): """ Waits until the IP-in-IP tunnel has been created