diff --git a/build_debian.sh b/build_debian.sh
index f63edfe9a134..fac25f18de6b 100755
--- a/build_debian.sh
+++ b/build_debian.sh
@@ -200,7 +200,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT rm /tmp/docker.gpg
sudo LANG=C chroot $FILESYSTEM_ROOT add-apt-repository \
"deb [arch=$CONFIGURED_ARCH] https://download.docker.com/linux/debian stretch stable"
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get update
-sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install docker-ce=${DOCKER_VERSION} docker-ce-cli=${DOCKER_VERSION}
+sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install docker-ce=${DOCKER_VERSION}
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y remove software-properties-common gnupg2
if [ "$INSTALL_KUBERNETES" == "y" ]
diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm
index e66e2e98416e..217d15b4e579 100644
--- a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm
+++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S-C32/td3-a7050cx3-32s-32x100G.config.bcm
@@ -35,6 +35,7 @@ port_phy_addr=0xff
robust_hash_disable_egress_vlan=1
robust_hash_disable_mpls=1
robust_hash_disable_vlan=1
+sram_scan_enable=0
stable_size=0x5500000
tdma_timeout_usec=15000000
tslam_timeout_usec=15000000
diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm
index f4450ebac53f..5002d29045ab 100644
--- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm
+++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm
@@ -872,6 +872,7 @@ port_phy_addr_147.0=0xff
robust_hash_disable_egress_vlan.0=1
robust_hash_disable_mpls.0=1
robust_hash_disable_vlan.0=1
+sram_scan_enable.0=0
tdma_timeout_usec.0=15000000
tslam_timeout_usec.0=15000000
diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm
index cdbc4f4430b4..d3a66dee635f 100644
--- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm
+++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm
@@ -744,6 +744,7 @@ port_phy_addr_143.0=0xff
robust_hash_disable_egress_vlan.0=1
robust_hash_disable_mpls.0=1
robust_hash_disable_vlan.0=1
+sram_scan_enable.0=0
tdma_timeout_usec.0=15000000
tslam_timeout_usec.0=15000000
diff --git a/device/barefoot/x86_64-accton_wedge100bf_32x-r0/pmon_daemon_control.json b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/pmon_daemon_control.json
index ea20aeb1f83b..3a76f2fdd0e4 100644
--- a/device/barefoot/x86_64-accton_wedge100bf_32x-r0/pmon_daemon_control.json
+++ b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/pmon_daemon_control.json
@@ -1,7 +1,6 @@
{
- "skip_fancontrol": true,
"skip_ledd": true,
"skip_xcvrd": false,
"skip_psud": false,
- "skip_syseepromd": false
+ "skip_syseepromd": false
}
diff --git a/device/barefoot/x86_64-accton_wedge100bf_65x-r0/pmon_daemon_control.json b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/pmon_daemon_control.json
index ea20aeb1f83b..3a76f2fdd0e4 100644
--- a/device/barefoot/x86_64-accton_wedge100bf_65x-r0/pmon_daemon_control.json
+++ b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/pmon_daemon_control.json
@@ -1,7 +1,6 @@
{
- "skip_fancontrol": true,
"skip_ledd": true,
"skip_xcvrd": false,
"skip_psud": false,
- "skip_syseepromd": false
+ "skip_syseepromd": false
}
diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/sensors.conf b/device/dell/x86_64-dell_s6000_s1220-r0/sensors.conf
index f74a2b3d40ac..c87af11afacc 100644
--- a/device/dell/x86_64-dell_s6000_s1220-r0/sensors.conf
+++ b/device/dell/x86_64-dell_s6000_s1220-r0/sensors.conf
@@ -7,8 +7,8 @@
# tmp75-i2c-11-4e is an ambient temperature sensor.
chip "tmp75-*"
- set temp1_max 80
- set temp1_max_hyst 70
+ set temp1_max 50
+ set temp1_max_hyst 25
# emc1403-i2c-10-4d has following temperature sensors:
# temp1: CPU0 external Temp Sensor
@@ -32,5 +32,5 @@ chip "jc42-*"
set temp1_crit 85
chip "dni_dps460-*"
- set temp1_max 80
- set temp2_max 80
+ set temp1_max 50
+ set temp2_max 50
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers.json.j2 b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers.json.j2
deleted file mode 100644
index 0b1cb2c541b6..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers.json.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-{%- set default_topo = 't1' %}
-{%- include 'buffers_config.j2' %}
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t0.j2 b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t0.j2
deleted file mode 100644
index 98ec91a9b694..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t0.j2
+++ /dev/null
@@ -1,37 +0,0 @@
-
-{%- set default_cable = '40m' %}
-
-{%- macro generate_buffer_pool_and_profiles() %}
- "BUFFER_POOL": {
- "ingress_lossless_pool": {
- "size": "28550336",
- "type": "ingress",
- "mode": "dynamic",
- "xoff": "4194112"
- },
- "egress_pool": {
- "size": "28550336",
- "type": "egress",
- "mode": "static"
- }
- },
- "BUFFER_PROFILE": {
- "ingress_lossy_profile": {
- "pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "size":"0",
- "dynamic_th":"3"
- },
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_pool]",
- "size":"0",
- "mode": "static",
- "static_th":"32744448"
- },
- "egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_pool]",
- "size":"0",
- "mode": "dynamic",
- "dynamic_th":"3"
- }
- },
-{%- endmacro %}
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t1.j2 b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t1.j2
deleted file mode 100644
index 98ec91a9b694..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/buffers_defaults_t1.j2
+++ /dev/null
@@ -1,37 +0,0 @@
-
-{%- set default_cable = '40m' %}
-
-{%- macro generate_buffer_pool_and_profiles() %}
- "BUFFER_POOL": {
- "ingress_lossless_pool": {
- "size": "28550336",
- "type": "ingress",
- "mode": "dynamic",
- "xoff": "4194112"
- },
- "egress_pool": {
- "size": "28550336",
- "type": "egress",
- "mode": "static"
- }
- },
- "BUFFER_PROFILE": {
- "ingress_lossy_profile": {
- "pool":"[BUFFER_POOL|ingress_lossless_pool]",
- "size":"0",
- "dynamic_th":"3"
- },
- "egress_lossless_profile": {
- "pool":"[BUFFER_POOL|egress_pool]",
- "size":"0",
- "mode": "static",
- "static_th":"32744448"
- },
- "egress_lossy_profile": {
- "pool":"[BUFFER_POOL|egress_pool]",
- "size":"0",
- "mode": "dynamic",
- "dynamic_th":"3"
- }
- },
-{%- endmacro %}
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/custom_led.bin b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/custom_led.bin
deleted file mode 100755
index 49e559cd9813..000000000000
Binary files a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/custom_led.bin and /dev/null differ
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/linkscan_led_fw.bin b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/linkscan_led_fw.bin
deleted file mode 100755
index c2fa94a2d8cb..000000000000
Binary files a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/linkscan_led_fw.bin and /dev/null differ
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini
deleted file mode 100644
index aedda37a8878..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-# PG lossless profiles.
-# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 90272 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 53248 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 96096 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/port_config.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/port_config.ini
deleted file mode 100644
index b7a336827ffe..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/port_config.ini
+++ /dev/null
@@ -1,59 +0,0 @@
-# name lanes alias index speed
-Ethernet0 1,2 fiftyGigE1/1/1 1 50000
-Ethernet2 3,4 fiftyGigE1/1/2 1 50000
-Ethernet4 5,6 fiftyGigE1/2/1 2 50000
-Ethernet6 7,8 fiftyGigE1/2/2 2 50000
-Ethernet8 9,10 fiftyGigE1/3/1 3 50000
-Ethernet10 11,12 fiftyGigE1/3/2 3 50000
-Ethernet12 13,14 fiftyGigE1/4/1 4 50000
-Ethernet14 15,16 fiftyGigE1/4/2 4 50000
-Ethernet16 17,18 fiftyGigE1/5/1 5 50000
-Ethernet18 19,20 fiftyGigE1/5/2 5 50000
-Ethernet20 21,22 fiftyGigE1/6/1 6 50000
-Ethernet22 23,24 fiftyGigE1/6/2 6 50000
-Ethernet24 25,26,27,28 hundredGigE1/7 7 100000
-Ethernet28 29,30,31,32 hundredGigE1/8 8 100000
-Ethernet32 33,34,35,36 hundredGigE1/9 9 100000
-Ethernet36 37,38,39,40 hundredGigE1/10 10 100000
-Ethernet40 41,42 fiftyGigE1/11/1 11 50000
-Ethernet42 43,44 fiftyGigE1/11/2 11 50000
-Ethernet44 45,46 fiftyGigE1/12/1 12 50000
-Ethernet46 47,48 fiftyGigE1/12/2 12 50000
-Ethernet48 49,50 fiftyGigE1/13/1 13 50000
-Ethernet50 51,52 fiftyGigE1/13/2 13 50000
-Ethernet52 53,54 fiftyGigE1/14/1 14 50000
-Ethernet54 55,56 fiftyGigE1/14/2 14 50000
-Ethernet56 57,58 fiftyGigE1/15/1 15 50000
-Ethernet58 59,60 fiftyGigE1/15/2 15 50000
-Ethernet60 61,62 fiftyGigE1/16/1 16 50000
-Ethernet62 63,64 fiftyGigE1/16/2 16 50000
-Ethernet64 65,66 fiftyGigE1/17/1 17 50000
-Ethernet66 67,68 fiftyGigE1/17/2 17 50000
-Ethernet68 69,70 fiftyGigE1/18/1 18 50000
-Ethernet70 71,72 fiftyGigE1/18/2 18 50000
-Ethernet72 73,74 fiftyGigE1/19/1 19 50000
-Ethernet74 75,76 fiftyGigE1/19/2 19 50000
-Ethernet76 77,78 fiftyGigE1/20/1 20 50000
-Ethernet78 79,80 fiftyGigE1/20/2 20 50000
-Ethernet80 81,82 fiftyGigE1/21/1 21 50000
-Ethernet82 83,84 fiftyGigE1/21/2 21 50000
-Ethernet84 85,86 fiftyGigE1/22/1 22 50000
-Ethernet86 87,88 fiftyGigE1/22/2 22 50000
-Ethernet88 89,90 fiftyGigE1/23/1 23 50000
-Ethernet90 91,92 fiftyGigE1/23/2 23 50000
-Ethernet92 93,94 fiftyGigE1/24/1 24 50000
-Ethernet94 95,96 fiftyGigE1/24/2 24 50000
-Ethernet96 97,98 fiftyGigE1/25/1 25 50000
-Ethernet98 99,100 fiftyGigE1/25/2 25 50000
-Ethernet100 101,102 fiftyGigE1/26/1 26 50000
-Ethernet102 103,104 fiftyGigE1/26/2 26 50000
-Ethernet104 105,106,107,108 hundredGigE1/27 27 100000
-Ethernet108 109,110,111,112 hundredGigE1/28 28 100000
-Ethernet112 113,114,115,116 hundredGigE1/29 29 100000
-Ethernet116 117,118,119,120 hundredGigE1/30 30 100000
-Ethernet120 121,122 fiftyGigE1/31/1 31 50000
-Ethernet122 123,124 fiftyGigE1/31/2 31 50000
-Ethernet124 125,126 fiftyGigE1/32/1 32 50000
-Ethernet126 127,128 fiftyGigE1/32/2 32 50000
-Ethernet128 129 tenGigE1/33 33 10000
-Ethernet129 128 tenGigE1/34 34 10000
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/qos.json.j2 b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/qos.json.j2
deleted file mode 100644
index 3e548325ea30..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/qos.json.j2
+++ /dev/null
@@ -1 +0,0 @@
-{%- include 'qos_config.j2' %}
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai.profile b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai.profile
deleted file mode 100644
index 0daed30c3bc2..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai.profile
+++ /dev/null
@@ -1 +0,0 @@
-SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/td3-s5232f-8x100G+48x50G.config.bcm
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai_preinit_cmd.soc b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai_preinit_cmd.soc
deleted file mode 100644
index 4d62900f898f..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/sai_preinit_cmd.soc
+++ /dev/null
@@ -1,2 +0,0 @@
-m0 load 0 0x0 /usr/share/sonic/hwsku/linkscan_led_fw.bin
-m0 load 0 0x3800 /usr/share/sonic/hwsku/custom_led.bin
diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/td3-s5232f-8x100G+48x50G.config.bcm b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/td3-s5232f-8x100G+48x50G.config.bcm
deleted file mode 100644
index cf0bfd043ee0..000000000000
--- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/td3-s5232f-8x100G+48x50G.config.bcm
+++ /dev/null
@@ -1,572 +0,0 @@
-os=unix
-
-core_clock_frequency=1525
-dpp_clock_ratio=2:3
-
-parity_enable=1
-parity_correction=1
-tdma_intr_enable=1
-schan_intr_enable=0
-tdma_intr_enable=1
-miim_intr_enable=1
-stat_if_parity_enable=1
-
-port_flex_enable=1
-port_flex_enable_66=0
-port_flex_enable_130=0
-phy_an_c73=3
-phy_an_c73_66=0
-phy_an_c73_130=0
-
-module_64ports=0
-table_dma_enable=1
-tdma_timeout_usec=5000000
-mmu_lossless=0
-pdma_descriptor_prefetch_enable=1
-pktdma_poll_mode_channel_bitmap=1
-
-l2xmsg_mode=1
-l2xmsg_hostbuf_size=8192
-ipv6_lpm_128b_enable=1
-max_vp_lags=0
-
-l3_alpm_enable=2
-l2_mem_entries=32768
-l3_mem_entries=16384
-l3_max_ecmp_mode=1
-
-bcm_tunnel_term_compatible_mode=1
-ifp_inports_support_enable=1
-
-stable_size=0x5500000
-
-oversubscribe_mode=1
-pbmp_oversubscribe=0x6fffffffffffffffdfffffffffffffffe
-pbmp_xport_xe=0x6fffffffffffffffdfffffffffffffffe
-
-
-portmap_1.0=1:50:2
-portmap_3.0=3:50:2
-portmap_5.0=5:50:2
-portmap_7.0=7:50:2
-portmap_9.0=9:50:2
-portmap_11.0=11:50:2
-portmap_13.0=13:50:2
-portmap_15.0=15:50:2
-portmap_17.0=17:50:2
-portmap_19.0=19:50:2
-portmap_21.0=21:50:2
-portmap_23.0=23:50:2
-portmap_25.0=25:100
-portmap_29.0=29:100
-portmap_33.0=33:100
-portmap_37.0=37:100
-portmap_41.0=41:50:2
-portmap_43.0=43:50:2
-portmap_45.0=45:50:2
-portmap_47.0=47:50:2
-portmap_49.0=49:50:2
-portmap_51.0=51:50:2
-portmap_53.0=53:50:2
-portmap_55.0=55:50:2
-portmap_57.0=57:50:2
-portmap_59.0=59:50:2
-portmap_61.0=61:50:2
-portmap_63.0=63:50:2
-portmap_67.0=65:50:2
-portmap_69.0=67:50:2
-portmap_71.0=69:50:2
-portmap_73.0=71:50:2
-portmap_75.0=73:50:2
-portmap_77.0=75:50:2
-portmap_79.0=77:50:2
-portmap_81.0=79:50:2
-portmap_83.0=81:50:2
-portmap_85.0=83:50:2
-portmap_87.0=85:50:2
-portmap_89.0=87:50:2
-portmap_91.0=89:50:2
-portmap_93.0=91:50:2
-portmap_95.0=93:50:2
-portmap_97.0=95:50:2
-portmap_99.0=97:50:2
-portmap_101.0=99:50:2
-portmap_103.0=101:50:2
-portmap_105.0=103:50:2
-portmap_107.0=105:100
-portmap_111.0=109:100
-portmap_115.0=113:100
-portmap_119.0=117:100
-portmap_123.0=121:50:2
-portmap_125.0=123:50:2
-portmap_127.0=125:50:2
-portmap_129.0=127:50:2
-portmap_130.0=128:10:m
-portmap_66.0=129:10:m
-
-
-phy_chain_tx_lane_map_physical{1.0}=0x0132
-phy_chain_rx_lane_map_physical{1.0}=0x3210
-phy_chain_tx_lane_map_physical{5.0}=0x2301
-phy_chain_rx_lane_map_physical{5.0}=0x2031
-phy_chain_tx_lane_map_physical{9.0}=0x0132
-phy_chain_rx_lane_map_physical{9.0}=0x3210
-phy_chain_tx_lane_map_physical{13.0}=0x3201
-phy_chain_rx_lane_map_physical{13.0}=0x2031
-phy_chain_tx_lane_map_physical{17.0}=0x0123
-phy_chain_rx_lane_map_physical{17.0}=0x3210
-phy_chain_tx_lane_map_physical{21.0}=0x2301
-phy_chain_rx_lane_map_physical{21.0}=0x2031
-phy_chain_tx_lane_map_physical{25.0}=0x0123
-phy_chain_rx_lane_map_physical{25.0}=0x3210
-phy_chain_tx_lane_map_physical{29.0}=0x3201
-phy_chain_rx_lane_map_physical{29.0}=0x2031
-phy_chain_tx_lane_map_physical{33.0}=0x0213
-phy_chain_rx_lane_map_physical{33.0}=0x1302
-phy_chain_tx_lane_map_physical{37.0}=0x1302
-phy_chain_rx_lane_map_physical{37.0}=0x2031
-phy_chain_tx_lane_map_physical{41.0}=0x0231
-phy_chain_rx_lane_map_physical{41.0}=0x3120
-phy_chain_tx_lane_map_physical{45.0}=0x1302
-phy_chain_rx_lane_map_physical{45.0}=0x2031
-phy_chain_tx_lane_map_physical{49.0}=0x2103
-phy_chain_rx_lane_map_physical{49.0}=0x3120
-phy_chain_tx_lane_map_physical{53.0}=0x2301
-phy_chain_rx_lane_map_physical{53.0}=0x2031
-phy_chain_tx_lane_map_physical{57.0}=0x0123
-phy_chain_rx_lane_map_physical{57.0}=0x2301
-phy_chain_tx_lane_map_physical{61.0}=0x3210
-phy_chain_rx_lane_map_physical{61.0}=0x1032
-phy_chain_tx_lane_map_physical{65.0}=0x3210
-phy_chain_rx_lane_map_physical{65.0}=0x1023
-phy_chain_tx_lane_map_physical{69.0}=0x0123
-phy_chain_rx_lane_map_physical{69.0}=0x1302
-phy_chain_tx_lane_map_physical{73.0}=0x2301
-phy_chain_rx_lane_map_physical{73.0}=0x1032
-phy_chain_tx_lane_map_physical{77.0}=0x2013
-phy_chain_rx_lane_map_physical{77.0}=0x3120
-phy_chain_tx_lane_map_physical{81.0}=0x1302
-phy_chain_rx_lane_map_physical{81.0}=0x2031
-phy_chain_tx_lane_map_physical{85.0}=0x0123
-phy_chain_rx_lane_map_physical{85.0}=0x2130
-phy_chain_tx_lane_map_physical{89.0}=0x2301
-phy_chain_rx_lane_map_physical{89.0}=0x2031
-phy_chain_tx_lane_map_physical{93.0}=0x0312
-phy_chain_rx_lane_map_physical{93.0}=0x2310
-phy_chain_tx_lane_map_physical{97.0}=0x2301
-phy_chain_rx_lane_map_physical{97.0}=0x1032
-phy_chain_tx_lane_map_physical{101.0}=0x0123
-phy_chain_rx_lane_map_physical{101.0}=0x3210
-phy_chain_tx_lane_map_physical{105.0}=0x2301
-phy_chain_rx_lane_map_physical{105.0}=0x1032
-phy_chain_tx_lane_map_physical{109.0}=0x0123
-phy_chain_rx_lane_map_physical{109.0}=0x3210
-phy_chain_tx_lane_map_physical{113.0}=0x2301
-phy_chain_rx_lane_map_physical{113.0}=0x2031
-phy_chain_tx_lane_map_physical{117.0}=0x0123
-phy_chain_rx_lane_map_physical{117.0}=0x3210
-phy_chain_tx_lane_map_physical{121.0}=0x2301
-phy_chain_rx_lane_map_physical{121.0}=0x1032
-phy_chain_tx_lane_map_physical{125.0}=0x0123
-phy_chain_rx_lane_map_physical{125.0}=0x3210
-phy_chain_tx_lane_map_physical{129.0}=0x3210
-phy_chain_rx_lane_map_physical{129.0}=0x0231
-phy_chain_tx_lane_map_physical{128.0}=0x3210
-phy_chain_rx_lane_map_physical{128.0}=0x0231
-phy_chain_tx_polarity_flip_physical{1.0}=0x0
-phy_chain_rx_polarity_flip_physical{1.0}=0x0
-phy_chain_tx_polarity_flip_physical{2.0}=0x0
-phy_chain_rx_polarity_flip_physical{2.0}=0x1
-phy_chain_tx_polarity_flip_physical{3.0}=0x0
-phy_chain_rx_polarity_flip_physical{3.0}=0x0
-phy_chain_tx_polarity_flip_physical{4.0}=0x1
-phy_chain_rx_polarity_flip_physical{4.0}=0x1
-phy_chain_tx_polarity_flip_physical{5.0}=0x0
-phy_chain_rx_polarity_flip_physical{5.0}=0x0
-phy_chain_tx_polarity_flip_physical{6.0}=0x1
-phy_chain_rx_polarity_flip_physical{6.0}=0x1
-phy_chain_tx_polarity_flip_physical{7.0}=0x0
-phy_chain_rx_polarity_flip_physical{7.0}=0x1
-phy_chain_tx_polarity_flip_physical{8.0}=0x1
-phy_chain_rx_polarity_flip_physical{8.0}=0x1
-phy_chain_tx_polarity_flip_physical{9.0}=0x0
-phy_chain_rx_polarity_flip_physical{9.0}=0x0
-phy_chain_tx_polarity_flip_physical{10.0}=0x0
-phy_chain_rx_polarity_flip_physical{10.0}=0x1
-phy_chain_tx_polarity_flip_physical{11.0}=0x0
-phy_chain_rx_polarity_flip_physical{11.0}=0x0
-phy_chain_tx_polarity_flip_physical{12.0}=0x1
-phy_chain_rx_polarity_flip_physical{12.0}=0x1
-phy_chain_tx_polarity_flip_physical{13.0}=0x0
-phy_chain_rx_polarity_flip_physical{13.0}=0x0
-phy_chain_tx_polarity_flip_physical{14.0}=0x1
-phy_chain_rx_polarity_flip_physical{14.0}=0x1
-phy_chain_tx_polarity_flip_physical{15.0}=0x0
-phy_chain_rx_polarity_flip_physical{15.0}=0x1
-phy_chain_tx_polarity_flip_physical{16.0}=0x0
-phy_chain_rx_polarity_flip_physical{16.0}=0x1
-phy_chain_tx_polarity_flip_physical{17.0}=0x0
-phy_chain_rx_polarity_flip_physical{17.0}=0x0
-phy_chain_tx_polarity_flip_physical{18.0}=0x1
-phy_chain_rx_polarity_flip_physical{18.0}=0x1
-phy_chain_tx_polarity_flip_physical{19.0}=0x0
-phy_chain_rx_polarity_flip_physical{19.0}=0x0
-phy_chain_tx_polarity_flip_physical{20.0}=0x1
-phy_chain_rx_polarity_flip_physical{20.0}=0x1
-phy_chain_tx_polarity_flip_physical{21.0}=0x0
-phy_chain_rx_polarity_flip_physical{21.0}=0x0
-phy_chain_tx_polarity_flip_physical{22.0}=0x1
-phy_chain_rx_polarity_flip_physical{22.0}=0x1
-phy_chain_tx_polarity_flip_physical{23.0}=0x0
-phy_chain_rx_polarity_flip_physical{23.0}=0x1
-phy_chain_tx_polarity_flip_physical{24.0}=0x1
-phy_chain_rx_polarity_flip_physical{24.0}=0x1
-phy_chain_tx_polarity_flip_physical{25.0}=0x0
-phy_chain_rx_polarity_flip_physical{25.0}=0x1
-phy_chain_tx_polarity_flip_physical{26.0}=0x1
-phy_chain_rx_polarity_flip_physical{26.0}=0x0
-phy_chain_tx_polarity_flip_physical{27.0}=0x0
-phy_chain_rx_polarity_flip_physical{27.0}=0x1
-phy_chain_tx_polarity_flip_physical{28.0}=0x1
-phy_chain_rx_polarity_flip_physical{28.0}=0x0
-phy_chain_tx_polarity_flip_physical{29.0}=0x1
-phy_chain_rx_polarity_flip_physical{29.0}=0x1
-phy_chain_tx_polarity_flip_physical{30.0}=0x1
-phy_chain_rx_polarity_flip_physical{30.0}=0x0
-phy_chain_tx_polarity_flip_physical{31.0}=0x0
-phy_chain_rx_polarity_flip_physical{31.0}=0x0
-phy_chain_tx_polarity_flip_physical{32.0}=0x0
-phy_chain_rx_polarity_flip_physical{32.0}=0x0
-phy_chain_tx_polarity_flip_physical{33.0}=0x1
-phy_chain_rx_polarity_flip_physical{33.0}=0x1
-phy_chain_tx_polarity_flip_physical{34.0}=0x0
-phy_chain_rx_polarity_flip_physical{34.0}=0x0
-phy_chain_tx_polarity_flip_physical{35.0}=0x0
-phy_chain_rx_polarity_flip_physical{35.0}=0x0
-phy_chain_tx_polarity_flip_physical{36.0}=0x1
-phy_chain_rx_polarity_flip_physical{36.0}=0x0
-phy_chain_tx_polarity_flip_physical{37.0}=0x1
-phy_chain_rx_polarity_flip_physical{37.0}=0x1
-phy_chain_tx_polarity_flip_physical{38.0}=0x1
-phy_chain_rx_polarity_flip_physical{38.0}=0x0
-phy_chain_tx_polarity_flip_physical{39.0}=0x1
-phy_chain_rx_polarity_flip_physical{39.0}=0x0
-phy_chain_tx_polarity_flip_physical{40.0}=0x0
-phy_chain_rx_polarity_flip_physical{40.0}=0x1
-phy_chain_tx_polarity_flip_physical{41.0}=0x1
-phy_chain_rx_polarity_flip_physical{41.0}=0x1
-phy_chain_tx_polarity_flip_physical{42.0}=0x0
-phy_chain_rx_polarity_flip_physical{42.0}=0x1
-phy_chain_tx_polarity_flip_physical{43.0}=0x1
-phy_chain_rx_polarity_flip_physical{43.0}=0x0
-phy_chain_tx_polarity_flip_physical{44.0}=0x1
-phy_chain_rx_polarity_flip_physical{44.0}=0x1
-phy_chain_tx_polarity_flip_physical{45.0}=0x1
-phy_chain_rx_polarity_flip_physical{45.0}=0x0
-phy_chain_tx_polarity_flip_physical{46.0}=0x1
-phy_chain_rx_polarity_flip_physical{46.0}=0x0
-phy_chain_tx_polarity_flip_physical{47.0}=0x1
-phy_chain_rx_polarity_flip_physical{47.0}=0x1
-phy_chain_tx_polarity_flip_physical{48.0}=0x0
-phy_chain_rx_polarity_flip_physical{48.0}=0x1
-phy_chain_tx_polarity_flip_physical{49.0}=0x1
-phy_chain_rx_polarity_flip_physical{49.0}=0x0
-phy_chain_tx_polarity_flip_physical{50.0}=0x1
-phy_chain_rx_polarity_flip_physical{50.0}=0x0
-phy_chain_tx_polarity_flip_physical{51.0}=0x0
-phy_chain_rx_polarity_flip_physical{51.0}=0x1
-phy_chain_tx_polarity_flip_physical{52.0}=0x1
-phy_chain_rx_polarity_flip_physical{52.0}=0x1
-phy_chain_tx_polarity_flip_physical{53.0}=0x0
-phy_chain_rx_polarity_flip_physical{53.0}=0x0
-phy_chain_tx_polarity_flip_physical{54.0}=0x1
-phy_chain_rx_polarity_flip_physical{54.0}=0x1
-phy_chain_tx_polarity_flip_physical{55.0}=0x0
-phy_chain_rx_polarity_flip_physical{55.0}=0x1
-phy_chain_tx_polarity_flip_physical{56.0}=0x1
-phy_chain_rx_polarity_flip_physical{56.0}=0x1
-phy_chain_tx_polarity_flip_physical{57.0}=0x1
-phy_chain_rx_polarity_flip_physical{57.0}=0x0
-phy_chain_tx_polarity_flip_physical{58.0}=0x1
-phy_chain_rx_polarity_flip_physical{58.0}=0x1
-phy_chain_tx_polarity_flip_physical{59.0}=0x0
-phy_chain_rx_polarity_flip_physical{59.0}=0x0
-phy_chain_tx_polarity_flip_physical{60.0}=0x1
-phy_chain_rx_polarity_flip_physical{60.0}=0x1
-phy_chain_tx_polarity_flip_physical{61.0}=0x0
-phy_chain_rx_polarity_flip_physical{61.0}=0x1
-phy_chain_tx_polarity_flip_physical{62.0}=0x1
-phy_chain_rx_polarity_flip_physical{62.0}=0x0
-phy_chain_tx_polarity_flip_physical{63.0}=0x0
-phy_chain_rx_polarity_flip_physical{63.0}=0x1
-phy_chain_tx_polarity_flip_physical{64.0}=0x0
-phy_chain_rx_polarity_flip_physical{64.0}=0x0
-phy_chain_tx_polarity_flip_physical{65.0}=0x1
-phy_chain_rx_polarity_flip_physical{65.0}=0x0
-phy_chain_tx_polarity_flip_physical{66.0}=0x0
-phy_chain_rx_polarity_flip_physical{66.0}=0x0
-phy_chain_tx_polarity_flip_physical{67.0}=0x1
-phy_chain_rx_polarity_flip_physical{67.0}=0x1
-phy_chain_tx_polarity_flip_physical{68.0}=0x0
-phy_chain_rx_polarity_flip_physical{68.0}=0x0
-phy_chain_tx_polarity_flip_physical{69.0}=0x1
-phy_chain_rx_polarity_flip_physical{69.0}=0x1
-phy_chain_tx_polarity_flip_physical{70.0}=0x0
-phy_chain_rx_polarity_flip_physical{70.0}=0x0
-phy_chain_tx_polarity_flip_physical{71.0}=0x1
-phy_chain_rx_polarity_flip_physical{71.0}=0x0
-phy_chain_tx_polarity_flip_physical{72.0}=0x0
-phy_chain_rx_polarity_flip_physical{72.0}=0x0
-phy_chain_tx_polarity_flip_physical{73.0}=0x0
-phy_chain_rx_polarity_flip_physical{73.0}=0x1
-phy_chain_tx_polarity_flip_physical{74.0}=0x1
-phy_chain_rx_polarity_flip_physical{74.0}=0x0
-phy_chain_tx_polarity_flip_physical{75.0}=0x0
-phy_chain_rx_polarity_flip_physical{75.0}=0x1
-phy_chain_tx_polarity_flip_physical{76.0}=0x1
-phy_chain_rx_polarity_flip_physical{76.0}=0x0
-phy_chain_tx_polarity_flip_physical{77.0}=0x0
-phy_chain_rx_polarity_flip_physical{77.0}=0x0
-phy_chain_tx_polarity_flip_physical{78.0}=0x0
-phy_chain_rx_polarity_flip_physical{78.0}=0x0
-phy_chain_tx_polarity_flip_physical{79.0}=0x1
-phy_chain_rx_polarity_flip_physical{79.0}=0x1
-phy_chain_tx_polarity_flip_physical{80.0}=0x1
-phy_chain_rx_polarity_flip_physical{80.0}=0x1
-phy_chain_tx_polarity_flip_physical{81.0}=0x0
-phy_chain_rx_polarity_flip_physical{81.0}=0x0
-phy_chain_tx_polarity_flip_physical{82.0}=0x0
-phy_chain_rx_polarity_flip_physical{82.0}=0x0
-phy_chain_tx_polarity_flip_physical{83.0}=0x1
-phy_chain_rx_polarity_flip_physical{83.0}=0x1
-phy_chain_tx_polarity_flip_physical{84.0}=0x1
-phy_chain_rx_polarity_flip_physical{84.0}=0x0
-phy_chain_tx_polarity_flip_physical{85.0}=0x1
-phy_chain_rx_polarity_flip_physical{85.0}=0x1
-phy_chain_tx_polarity_flip_physical{86.0}=0x0
-phy_chain_rx_polarity_flip_physical{86.0}=0x1
-phy_chain_tx_polarity_flip_physical{87.0}=0x1
-phy_chain_rx_polarity_flip_physical{87.0}=0x0
-phy_chain_tx_polarity_flip_physical{88.0}=0x0
-phy_chain_rx_polarity_flip_physical{88.0}=0x0
-phy_chain_tx_polarity_flip_physical{89.0}=0x1
-phy_chain_rx_polarity_flip_physical{89.0}=0x0
-phy_chain_tx_polarity_flip_physical{90.0}=0x0
-phy_chain_rx_polarity_flip_physical{90.0}=0x0
-phy_chain_tx_polarity_flip_physical{91.0}=0x1
-phy_chain_rx_polarity_flip_physical{91.0}=0x1
-phy_chain_tx_polarity_flip_physical{92.0}=0x0
-phy_chain_rx_polarity_flip_physical{92.0}=0x1
-phy_chain_tx_polarity_flip_physical{93.0}=0x1
-phy_chain_rx_polarity_flip_physical{93.0}=0x1
-phy_chain_tx_polarity_flip_physical{94.0}=0x1
-phy_chain_rx_polarity_flip_physical{94.0}=0x1
-phy_chain_tx_polarity_flip_physical{95.0}=0x0
-phy_chain_rx_polarity_flip_physical{95.0}=0x0
-phy_chain_tx_polarity_flip_physical{96.0}=0x0
-phy_chain_rx_polarity_flip_physical{96.0}=0x1
-phy_chain_tx_polarity_flip_physical{97.0}=0x1
-phy_chain_rx_polarity_flip_physical{97.0}=0x1
-phy_chain_tx_polarity_flip_physical{98.0}=0x0
-phy_chain_rx_polarity_flip_physical{98.0}=0x0
-phy_chain_tx_polarity_flip_physical{99.0}=0x1
-phy_chain_rx_polarity_flip_physical{99.0}=0x1
-phy_chain_tx_polarity_flip_physical{100.0}=0x0
-phy_chain_rx_polarity_flip_physical{100.0}=0x0
-phy_chain_tx_polarity_flip_physical{101.0}=0x1
-phy_chain_rx_polarity_flip_physical{101.0}=0x0
-phy_chain_tx_polarity_flip_physical{102.0}=0x0
-phy_chain_rx_polarity_flip_physical{102.0}=0x1
-phy_chain_tx_polarity_flip_physical{103.0}=0x1
-phy_chain_rx_polarity_flip_physical{103.0}=0x0
-phy_chain_tx_polarity_flip_physical{104.0}=0x0
-phy_chain_rx_polarity_flip_physical{104.0}=0x0
-phy_chain_tx_polarity_flip_physical{105.0}=0x1
-phy_chain_rx_polarity_flip_physical{105.0}=0x0
-phy_chain_tx_polarity_flip_physical{106.0}=0x0
-phy_chain_rx_polarity_flip_physical{106.0}=0x1
-phy_chain_tx_polarity_flip_physical{107.0}=0x1
-phy_chain_rx_polarity_flip_physical{107.0}=0x0
-phy_chain_tx_polarity_flip_physical{108.0}=0x0
-phy_chain_rx_polarity_flip_physical{108.0}=0x1
-phy_chain_tx_polarity_flip_physical{109.0}=0x1
-phy_chain_rx_polarity_flip_physical{109.0}=0x1
-phy_chain_tx_polarity_flip_physical{110.0}=0x0
-phy_chain_rx_polarity_flip_physical{110.0}=0x0
-phy_chain_tx_polarity_flip_physical{111.0}=0x1
-phy_chain_rx_polarity_flip_physical{111.0}=0x1
-phy_chain_tx_polarity_flip_physical{112.0}=0x0
-phy_chain_rx_polarity_flip_physical{112.0}=0x0
-phy_chain_tx_polarity_flip_physical{113.0}=0x1
-phy_chain_rx_polarity_flip_physical{113.0}=0x1
-phy_chain_tx_polarity_flip_physical{114.0}=0x0
-phy_chain_rx_polarity_flip_physical{114.0}=0x0
-phy_chain_tx_polarity_flip_physical{115.0}=0x1
-phy_chain_rx_polarity_flip_physical{115.0}=0x0
-phy_chain_tx_polarity_flip_physical{116.0}=0x0
-phy_chain_rx_polarity_flip_physical{116.0}=0x0
-phy_chain_tx_polarity_flip_physical{117.0}=0x1
-phy_chain_rx_polarity_flip_physical{117.0}=0x1
-phy_chain_tx_polarity_flip_physical{118.0}=0x0
-phy_chain_rx_polarity_flip_physical{118.0}=0x0
-phy_chain_tx_polarity_flip_physical{119.0}=0x1
-phy_chain_rx_polarity_flip_physical{119.0}=0x1
-phy_chain_tx_polarity_flip_physical{120.0}=0x0
-phy_chain_rx_polarity_flip_physical{120.0}=0x0
-phy_chain_tx_polarity_flip_physical{121.0}=0x1
-phy_chain_rx_polarity_flip_physical{121.0}=0x0
-phy_chain_tx_polarity_flip_physical{122.0}=0x0
-phy_chain_rx_polarity_flip_physical{122.0}=0x1
-phy_chain_tx_polarity_flip_physical{123.0}=0x1
-phy_chain_rx_polarity_flip_physical{123.0}=0x0
-phy_chain_tx_polarity_flip_physical{124.0}=0x0
-phy_chain_rx_polarity_flip_physical{124.0}=0x1
-phy_chain_tx_polarity_flip_physical{125.0}=0x1
-phy_chain_rx_polarity_flip_physical{125.0}=0x1
-phy_chain_tx_polarity_flip_physical{126.0}=0x0
-phy_chain_rx_polarity_flip_physical{126.0}=0x0
-phy_chain_tx_polarity_flip_physical{127.0}=0x1
-phy_chain_rx_polarity_flip_physical{127.0}=0x1
-phy_chain_tx_polarity_flip_physical{128.0}=0x0
-phy_chain_rx_polarity_flip_physical{128.0}=0x0
-phy_chain_tx_polarity_flip_physical{129.0}=0x1
-phy_chain_rx_polarity_flip_physical{129.0}=0x0
-phy_chain_tx_polarity_flip_physical{130.0}=0x0
-phy_chain_rx_polarity_flip_physical{130.0}=0x0
-phy_chain_tx_polarity_flip_physical{131.0}=0x1
-phy_chain_rx_polarity_flip_physical{131.0}=0x1
-phy_chain_tx_polarity_flip_physical{132.0}=0x0
-phy_chain_rx_polarity_flip_physical{132.0}=0x1
-dport_map_enable=1
-dport_map_port_1=1
-dport_map_port_2=2
-dport_map_port_3=3
-dport_map_port_4=4
-dport_map_port_5=5
-dport_map_port_6=6
-dport_map_port_7=7
-dport_map_port_8=8
-dport_map_port_9=9
-dport_map_port_10=10
-dport_map_port_11=11
-dport_map_port_12=12
-dport_map_port_13=13
-dport_map_port_14=14
-dport_map_port_15=15
-dport_map_port_16=16
-dport_map_port_17=17
-dport_map_port_18=18
-dport_map_port_19=19
-dport_map_port_20=20
-dport_map_port_21=21
-dport_map_port_22=22
-dport_map_port_23=23
-dport_map_port_24=24
-dport_map_port_25=25
-dport_map_port_26=26
-dport_map_port_27=27
-dport_map_port_28=28
-dport_map_port_29=29
-dport_map_port_30=30
-dport_map_port_31=31
-dport_map_port_32=32
-dport_map_port_33=33
-dport_map_port_34=34
-dport_map_port_35=35
-dport_map_port_36=36
-dport_map_port_37=37
-dport_map_port_38=38
-dport_map_port_39=39
-dport_map_port_40=40
-dport_map_port_41=41
-dport_map_port_42=42
-dport_map_port_43=43
-dport_map_port_44=44
-dport_map_port_45=45
-dport_map_port_46=46
-dport_map_port_47=47
-dport_map_port_48=48
-dport_map_port_49=49
-dport_map_port_50=50
-dport_map_port_51=51
-dport_map_port_52=52
-dport_map_port_53=53
-dport_map_port_54=54
-dport_map_port_55=55
-dport_map_port_56=56
-dport_map_port_57=57
-dport_map_port_58=58
-dport_map_port_59=59
-dport_map_port_60=60
-dport_map_port_61=61
-dport_map_port_62=62
-dport_map_port_63=63
-dport_map_port_64=64
-dport_map_port_67=65
-dport_map_port_68=66
-dport_map_port_69=67
-dport_map_port_70=68
-dport_map_port_71=69
-dport_map_port_72=70
-dport_map_port_73=71
-dport_map_port_74=72
-dport_map_port_75=73
-dport_map_port_76=74
-dport_map_port_77=75
-dport_map_port_78=76
-dport_map_port_79=77
-dport_map_port_80=78
-dport_map_port_81=79
-dport_map_port_82=80
-dport_map_port_83=81
-dport_map_port_84=82
-dport_map_port_85=83
-dport_map_port_86=84
-dport_map_port_87=85
-dport_map_port_88=86
-dport_map_port_89=87
-dport_map_port_90=88
-dport_map_port_91=89
-dport_map_port_92=90
-dport_map_port_93=91
-dport_map_port_94=92
-dport_map_port_95=93
-dport_map_port_96=94
-dport_map_port_97=95
-dport_map_port_98=96
-dport_map_port_99=97
-dport_map_port_100=98
-dport_map_port_101=99
-dport_map_port_102=100
-dport_map_port_103=101
-dport_map_port_104=102
-dport_map_port_105=103
-dport_map_port_106=104
-dport_map_port_107=105
-dport_map_port_108=106
-dport_map_port_109=107
-dport_map_port_110=108
-dport_map_port_111=109
-dport_map_port_112=110
-dport_map_port_113=111
-dport_map_port_114=112
-dport_map_port_115=113
-dport_map_port_116=114
-dport_map_port_117=115
-dport_map_port_118=116
-dport_map_port_119=117
-dport_map_port_120=118
-dport_map_port_121=119
-dport_map_port_122=120
-dport_map_port_123=121
-dport_map_port_124=122
-dport_map_port_125=123
-dport_map_port_126=124
-dport_map_port_127=125
-dport_map_port_129=126
-dport_map_port_66=127
-dport_map_port_130=128
-
-mmu_init_config="TD3-DEFAULT-LOSSLESS-P3P4"
-sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc
-
diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2
index 503c37e9be14..a29569191651 100644
--- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2
+++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2
@@ -62,7 +62,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }}
{% endblock vlan_advertisement %}
!
!
-{% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' %}
+{% if DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
redistribute connected route-map HIDE_INTERNAL
{% endif %}
!
diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/general/instance.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/general/instance.conf.j2
index aed32d291c76..148cfa390e01 100644
--- a/dockers/docker-fpm-frr/frr/bgpd/templates/general/instance.conf.j2
+++ b/dockers/docker-fpm-frr/frr/bgpd/templates/general/instance.conf.j2
@@ -15,21 +15,13 @@
!
{% if neighbor_addr | ipv4 %}
address-family ipv4
-{% if 'ASIC' in bgp_session['name'] %}
- neighbor {{ neighbor_addr }} peer-group PEER_V4_INT
-{% else %}
neighbor {{ neighbor_addr }} peer-group PEER_V4
-{% endif %}
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
neighbor {{ neighbor_addr }} route-map FROM_BGP_PEER_V4_INT in
{% endif %}
{% elif neighbor_addr | ipv6 %}
address-family ipv6
-{% if 'ASIC' in bgp_session['name'] %}
- neighbor {{ neighbor_addr }} peer-group PEER_V6_INT
-{% else %}
neighbor {{ neighbor_addr }} peer-group PEER_V6
-{% endif %}
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
neighbor {{ neighbor_addr }} route-map FROM_BGP_PEER_V6_INT in
{% endif %}
diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2
index b0acd1b2a460..8c02eeacbdb4 100644
--- a/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2
+++ b/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2
@@ -2,38 +2,28 @@
! template: bgpd/templates/general/peer-group.conf.j2
!
neighbor PEER_V4 peer-group
- neighbor PEER_V4_INT peer-group
neighbor PEER_V6 peer-group
- neighbor PEER_V6_INT peer-group
address-family ipv4
{% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %}
neighbor PEER_V4 allowas-in 1
- neighbor PEER_V4_INT allowas-in 1
{% endif %}
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
- neighbor PEER_V4_INT route-reflector-client
+ neighbor PEER_V4 route-reflector-client
{% endif %}
neighbor PEER_V4 soft-reconfiguration inbound
neighbor PEER_V4 route-map FROM_BGP_PEER_V4 in
neighbor PEER_V4 route-map TO_BGP_PEER_V4 out
- neighbor PEER_V4_INT soft-reconfiguration inbound
- neighbor PEER_V4_INT route-map FROM_BGP_PEER_V4 in
- neighbor PEER_V4_INT route-map TO_BGP_PEER_V4 out
exit-address-family
address-family ipv6
{% if CONFIG_DB__DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %}
neighbor PEER_V6 allowas-in 1
- neighbor PEER_V6_INT allowas-in 1
{% endif %}
{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %}
- neighbor PEER_V6_INT route-reflector-client
+ neighbor PEER_V6 route-reflector-client
{% endif %}
neighbor PEER_V6 soft-reconfiguration inbound
neighbor PEER_V6 route-map FROM_BGP_PEER_V6 in
neighbor PEER_V6 route-map TO_BGP_PEER_V6 out
- neighbor PEER_V6_INT soft-reconfiguration inbound
- neighbor PEER_V6_INT route-map FROM_BGP_PEER_V6 in
- neighbor PEER_V6_INT route-map TO_BGP_PEER_V6 out
exit-address-family
!
! end of template: bgpd/templates/general/peer-group.conf.j2
diff --git a/dockers/docker-lldp-sv2/Dockerfile.j2 b/dockers/docker-lldp-sv2/Dockerfile.j2
index af2b0373c373..6a720514ef9b 100644
--- a/dockers/docker-lldp-sv2/Dockerfile.j2
+++ b/dockers/docker-lldp-sv2/Dockerfile.j2
@@ -35,13 +35,12 @@ RUN apt-get purge -y python-pip && \
/python-wheels \
~/.cache
-COPY ["docker-lldp-init.sh", "/usr/bin/"]
COPY ["start.sh", "/usr/bin/"]
-COPY ["supervisord.conf.j2", "/usr/share/sonic/templates/"]
+COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
COPY ["lldpd.conf.j2", "/usr/share/sonic/templates/"]
COPY ["lldpd", "/etc/default/"]
COPY ["lldpmgrd", "/usr/bin/"]
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
COPY ["critical_processes", "/etc/supervisor"]
-ENTRYPOINT ["/usr/bin/docker-lldp-init.sh"]
+ENTRYPOINT ["/usr/bin/supervisord"]
diff --git a/dockers/docker-lldp-sv2/docker-lldp-init.sh b/dockers/docker-lldp-sv2/docker-lldp-init.sh
deleted file mode 100755
index ae507e8f506a..000000000000
--- a/dockers/docker-lldp-sv2/docker-lldp-init.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-#Generate supervisord.conf based on device metadata
-mkdir -p /etc/supervisor/conf.d/
-sonic-cfggen -d -t /usr/share/sonic/templates/supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf
-exec /usr/bin/supervisord
diff --git a/dockers/docker-lldp-sv2/supervisord.conf.j2 b/dockers/docker-lldp-sv2/supervisord.conf
similarity index 87%
rename from dockers/docker-lldp-sv2/supervisord.conf.j2
rename to dockers/docker-lldp-sv2/supervisord.conf
index beae3aa9425e..73ff52f4420e 100644
--- a/dockers/docker-lldp-sv2/supervisord.conf.j2
+++ b/dockers/docker-lldp-sv2/supervisord.conf
@@ -31,11 +31,7 @@ stderr_logfile=syslog
# - `-dd` means to stay in foreground, log warnings to console
# - `-ddd` means to stay in foreground, log warnings and info to console
# - `-dddd` means to stay in foreground, log all to console
-{% if DEVICE_METADATA['localhost']['sub_role'] is defined and DEVICE_METADATA['localhost']['sub_role']|length %}
-command=/usr/sbin/lldpd -d -I Ethernet* -C Ethernet*
-{% else %}
command=/usr/sbin/lldpd -d -I Ethernet*,eth0 -C eth0
-{% endif %}
priority=3
autostart=false
autorestart=false
diff --git a/files/build_templates/lldp.service.j2 b/files/build_templates/lldp.service.j2
deleted file mode 120000
index 1adb318b9154..000000000000
--- a/files/build_templates/lldp.service.j2
+++ /dev/null
@@ -1 +0,0 @@
-per_namespace/lldp.service.j2
\ No newline at end of file
diff --git a/files/image_config/config-setup/config-setup b/files/image_config/config-setup/config-setup
index 1f95a10bb053..afff97806518 100755
--- a/files/image_config/config-setup/config-setup
+++ b/files/image_config/config-setup/config-setup
@@ -26,11 +26,7 @@
# Initialize constants
UPDATEGRAPH_CONF=/etc/sonic/updategraph.conf
-INIT_CFG_JSON=/etc/sonic/init_cfg.json
CONFIG_DB_JSON=/etc/sonic/config_db.json
-CONFIG_DB_PATH=/etc/sonic/
-CONFIG_DB_PREFIX=config_db
-CONFIG_DB_SUFFIX=.json
MINGRAPH_FILE=/etc/sonic/minigraph.xml
TMP_ZTP_CONFIG_DB_JSON=/tmp/ztp_config_db.json
FACTORY_DEFAULT_HOOKS=/etc/config-setup/factory-default-hooks.d
@@ -107,16 +103,24 @@ run_hookdir() {
reload_minigraph()
{
echo "Reloading minigraph..."
- config load_minigraph -y -n
- config save -y
-}
+ if [ ! -f /etc/sonic/init_cfg.json ]; then
+ echo "{}" > /etc/sonic/init_cfg.json
+ fi
+ sonic-db-cli CONFIG_DB FLUSHDB
+ sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --write-to-db
+ sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
+ if [ -f /etc/sonic/acl.json ]; then
+ acl-loader update full /etc/sonic/acl.json
+ fi
+ config qos reload
+ pfcwd start_default
-# Reload exisitng config db file on disk
-reload_configdb()
-{
- echo "Reloading existing config db..."
- config reload -y -n
+ if [[ -x /usr/bin/db_migrator.py ]]; then
+ # Set latest version number
+ /usr/bin/db_migrator.py -o set_version
+ fi
}
+
# Restore SONiC configuration from a backup copy
function copy_config_files_and_directories()
{
@@ -277,49 +281,15 @@ copy_post_migration_hooks()
fi
}
-# Get the list of config db for both
-# single and multi-npu platforms
-get_config_db_file_list()
-{
- config_db_file_list=${CONFIG_DB_PREFIX}${CONFIG_DB_SUFFIX}
- asic_num=0
- while [[ ($asic_num -lt $NUM_ASIC) && ($NUM_ASIC -gt 1) ]]; do
- config_db_file_list+=' '${CONFIG_DB_PREFIX}$asic_num${CONFIG_DB_SUFFIX}
- ((asic_num = asic_num + 1))
- done
-
- echo $config_db_file_list
-}
-# Check if all needed config db are prsesnt for both
-# single and multi-npu platforms
-check_all_config_db_present()
-{
- if [[ ! -r ${CONFIG_DB_JSON} ]]; then
- return 1
- fi
- asic_num=0
- while [[ ($asic_num -lt $NUM_ASIC) && ($NUM_ASIC -gt 1) ]]; do
- if [[ ! -r ${CONFIG_DB_PATH}${CONFIG_DB_PREFIX}$asic_num${CONFIG_DB_SUFFIX} ]]; then
- return 1
- fi
- ((asic_num = asic_num + 1))
- done
-
- return 0
-}
-
# Perform configuration migration from backup copy.
# - This step is performed when a new image is installed and SONiC switch boots into it
do_config_migration()
{
# Identify list of files to migrate
- copy_list="minigraph.xml snmp.yml acl.json frr"
+ copy_list="minigraph.xml snmp.yml acl.json config_db.json frr"
# Migrate all configuration files from old to new
copy_config_files_and_directories $copy_list
-
- # Migrate all config_db from old to new
- copy_config_files_and_directories $(get_config_db_file_list)
# Migrate post-migration hooks
copy_post_migration_hooks
@@ -332,14 +302,19 @@ do_config_migration()
disable_updategraph
rm -f /tmp/pending_config_migration
exit 0
- elif check_all_config_db_present; then
+ elif [ -r ${CONFIG_DB_JSON} ]; then
echo "Use config_db.json from old system..."
- reload_configdb
- # Disable updategraph
- disable_updategraph
+ sonic-cfggen -j ${CONFIG_DB_JSON} --write-to-db
+
+ if [[ -x /usr/bin/db_migrator.py ]]; then
+ # Migrate the DB to the latest schema version if needed
+ /usr/bin/db_migrator.py -o migrate
+ fi
elif [ -r ${MINGRAPH_FILE} ]; then
echo "Use minigraph.xml from old system..."
reload_minigraph
+ sonic-cfggen -d --print-data > ${CONFIG_DB_JSON}
+
# Disable updategraph
disable_updategraph
else
@@ -374,14 +349,6 @@ boot_config()
do_config_migration
fi
- # For multi-npu platfrom we don't support config initlaiztion. Assumption
- # is there should be existing minigraph or config_db from previous image
- # file system to trigger. pending_config_initialization will remain set
- # for multi-npu platforms if we reach this case.
- if [[ ($NUM_ASIC -gt 1) ]]; then
- return 0
- fi
-
if [ -e /tmp/pending_config_initialization ] || [ -e ${CONFIG_SETUP_INITIALIZATION_FLAG} ]; then
do_config_initialization
fi
@@ -404,13 +371,6 @@ boot_config()
}
### Execution starts here ###
-PLATFORM=`sonic-cfggen -H -v DEVICE_METADATA.localhost.platform`
-# Parse the device specific asic conf file, if it exists
-ASIC_CONF=/usr/share/sonic/device/$PLATFORM/asic.conf
-if [[ -f "$ASIC_CONF" ]]; then
- source $ASIC_CONF
-fi
-
CMD=$1
# Default command is boot
diff --git a/files/image_config/ntp/ntp-config.sh b/files/image_config/ntp/ntp-config.sh
index 7ab84174dcaa..601b7bd421f0 100755
--- a/files/image_config/ntp/ntp-config.sh
+++ b/files/image_config/ntp/ntp-config.sh
@@ -1,37 +1,5 @@
#!/bin/bash
-ntp_default_file='/etc/default/ntp'
-ntp_temp_file='/tmp/ntp.orig'
-
-reboot_type='cold'
-
-function get_database_reboot_type()
-{
- SYSTEM_WARM_START=`sonic-db-cli STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable`
- SYSTEM_FAST_START=`sonic-db-cli STATE_DB get "FAST_REBOOT|system"`
-
- if [[ x"${SYSTEM_WARM_START}" == x"true" ]]; then
- reboot_type='warm'
- elif [[ x"${SYSTEM_FAST_START}" == x"1" ]]; then
- reboot_type='fast'
- fi
-}
-
-function modify_ntp_default
-{
- cp ${ntp_default_file} ${ntp_temp_file}
- sed -e "$1" ${ntp_temp_file} >${ntp_default_file}
-}
-
sonic-cfggen -d -t /usr/share/sonic/templates/ntp.conf.j2 >/etc/ntp.conf
-get_database_reboot_type
-if [[ x"${reboot_type}" == x"cold" ]]; then
- echo "Enabling NTP long jump for reboot type ${reboot_type} ..."
- modify_ntp_default "s/NTPD_OPTS='-x'/NTPD_OPTS='-g'/"
-else
- echo "Disabling NTP long jump for reboot type ${reboot_type} ..."
- modify_ntp_default "s/NTPD_OPTS='-g'/NTPD_OPTS='-x'/"
-fi
-
systemctl restart ntp
diff --git a/files/image_config/updategraph/updategraph b/files/image_config/updategraph/updategraph
index 86ee8a800ae1..a24d452b1ad2 100755
--- a/files/image_config/updategraph/updategraph
+++ b/files/image_config/updategraph/updategraph
@@ -3,8 +3,25 @@
reload_minigraph()
{
echo "Reloading minigraph..."
- config load_minigraph -y -n
- config save -y
+ if [ ! -f /etc/sonic/init_cfg.json ]; then
+ echo "{}" > /etc/sonic/init_cfg.json
+ fi
+ sonic-db-cli CONFIG_DB FLUSHDB
+ sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --write-to-db
+ sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
+ if [ -f /etc/sonic/acl.json ]; then
+ acl-loader update full /etc/sonic/acl.json
+ fi
+ config qos reload
+ DEVICE_TYPE=`sonic-cfggen -m -v DEVICE_METADATA.localhost.type`
+ if [ "${DEVICE_TYPE}" != "MgmtToRRouter" ]; then
+ pfcwd start_default
+ fi
+
+ if [[ -x /usr/bin/db_migrator.py ]]; then
+ # Set latest version number
+ /usr/bin/db_migrator.py -o set_version
+ fi
}
if [ ! -f /etc/sonic/updategraph.conf ]; then
@@ -124,6 +141,7 @@ else
fi
reload_minigraph
+sonic-cfggen -d --print-data > /etc/sonic/config_db.json
# Mark as disabled after graph is successfully downloaded
sed -i "/enabled=/d" /etc/sonic/updategraph.conf
diff --git a/platform/barefoot/bfn-platform.mk b/platform/barefoot/bfn-platform.mk
index d2bc97d1496c..1abbedffd6c6 100644
--- a/platform/barefoot/bfn-platform.mk
+++ b/platform/barefoot/bfn-platform.mk
@@ -1,4 +1,4 @@
-BFN_PLATFORM = bfnplatform_20200507_deb9.deb
+BFN_PLATFORM = bfnplatform_20200407_deb9.deb
$(BFN_PLATFORM)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_PLATFORM)"
SONIC_ONLINE_DEBS += $(BFN_PLATFORM)
diff --git a/platform/barefoot/bfn-sai.mk b/platform/barefoot/bfn-sai.mk
index d899779025df..b58cce6fcf47 100644
--- a/platform/barefoot/bfn-sai.mk
+++ b/platform/barefoot/bfn-sai.mk
@@ -1,4 +1,4 @@
-BFN_SAI = bfnsdk_20200507_deb9.deb
+BFN_SAI = bfnsdk_20200407_deb9.deb
$(BFN_SAI)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_SAI)"
$(BFN_SAI)_DEPENDS += $(LIBNL_GENL3_DEV)
diff --git a/platform/broadcom/sonic-platform-modules-dell/s6000/scripts/s6000_platform.sh b/platform/broadcom/sonic-platform-modules-dell/s6000/scripts/s6000_platform.sh
index 98fb13b1522f..bf6c730425e7 100755
--- a/platform/broadcom/sonic-platform-modules-dell/s6000/scripts/s6000_platform.sh
+++ b/platform/broadcom/sonic-platform-modules-dell/s6000/scripts/s6000_platform.sh
@@ -60,20 +60,6 @@ remove_i2c_devices() {
done
}
-# Enable/Disable low power mode on all QSFP ports
-switch_board_qsfp_lpmode() {
- case $1 in
- "enable") value=0xffff
- ;;
- "disable") value=0x0
- ;;
- *) echo "s6000_platform: switch_board_qsfp_lpmode: invalid command $1!"
- return
- ;;
- esac
- echo $value > /sys/bus/platform/devices/dell-s6000-cpld.0/qsfp_lpmode
-}
-
install_python_api_package() {
device="/usr/share/sonic/device"
platform=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform)
@@ -100,7 +86,6 @@ if [[ "$1" == "init" ]]; then
add_i2c_devices
/usr/local/bin/set-fan-speed 15000
- switch_board_qsfp_lpmode "disable"
/usr/local/bin/reset-qsfp
elif [[ "$1" == "deinit" ]]; then
remove_i2c_devices
diff --git a/rules/frr.mk b/rules/frr.mk
index df924c8af711..6dc25b30dfff 100644
--- a/rules/frr.mk
+++ b/rules/frr.mk
@@ -3,8 +3,8 @@
FRR_VERSION = 7.2.1
FRR_SUBVERSION = 0
FRR_BRANCH = frr/7.2
-FRR_TAG = frr-7.2.1-s3
-export FRR_VERSION FRR_SUBVERSION FRR_BRANCH FRR_TAG
+FRR_TAG = frr-7.2.1-s2
+export FRR_VERSION FRR_SUBVERSION FRR_BRANCH
FRR = frr_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_$(CONFIGURED_ARCH).deb
diff --git a/sonic-slave-jessie/Dockerfile.j2 b/sonic-slave-jessie/Dockerfile.j2
index 23186d175620..dce30193420c 100644
--- a/sonic-slave-jessie/Dockerfile.j2
+++ b/sonic-slave-jessie/Dockerfile.j2
@@ -276,7 +276,7 @@ RUN apt-get update && apt-get install -y \
RUN apt-get -y build-dep linux
# For gobgp and telemetry build
-RUN export VERSION=1.14.2 \
+RUN export VERSION=1.11.5 \
{%- if CONFIGURED_ARCH == "armhf" %}
&& wget https://storage.googleapis.com/golang/go$VERSION.linux-armv6l.tar.gz \
&& tar -C /usr/local -xzf go$VERSION.linux-armv6l.tar.gz \
diff --git a/sonic-slave-stretch/Dockerfile.j2 b/sonic-slave-stretch/Dockerfile.j2
index a3936539bc77..f9e96791464d 100644
--- a/sonic-slave-stretch/Dockerfile.j2
+++ b/sonic-slave-stretch/Dockerfile.j2
@@ -315,7 +315,7 @@ RUN apt-get -t stretch-backports install -y debhelper
RUN apt-get -y build-dep linux
# For gobgp and telemetry build
-RUN export VERSION=1.14.2 \
+RUN export VERSION=1.11.5 \
{%- if CONFIGURED_ARCH == "armhf" %}
&& wget https://storage.googleapis.com/golang/go$VERSION.linux-armv6l.tar.gz \
&& tar -C /usr/local -xzf go$VERSION.linux-armv6l.tar.gz \
@@ -420,8 +420,8 @@ RUN add-apt-repository \
stable"
RUN apt-get update
{%- if CONFIGURED_ARCH == "amd64" %}
-RUN apt-get install -y docker-ce=5:18.09.5~3-0~debian-stretch docker-ce-cli=5:18.09.5~3-0~debian-stretch
+RUN apt-get install -y docker-ce=5:18.09.5~3-0~debian-stretch
{%- else %}
-RUN apt-get install -y docker-ce=18.06.3~ce~3-0~debian docker-ce-cli=18.06.3~ce~3-0~debian
+RUN apt-get install -y docker-ce=18.06.3~ce~3-0~debian
{%- endif %}
RUN echo "DOCKER_OPTS=\"--experimental --storage-driver=vfs\"" >> /etc/default/docker
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 94ac39dbabde..c81258bee531 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -35,11 +35,7 @@
VLAN_SUB_INTERFACE_SEPARATOR = '.'
VLAN_SUB_INTERFACE_VLAN_ID = '10'
-FRONTEND_ASIC_SUB_ROLE = 'FrontEnd'
-BACKEND_ASIC_SUB_ROLE = 'BackEnd'
-BACKEND_ASIC_INTERFACE_NAME_PREFIX = 'Ethernet-BP'
-
-# Default Virtual Network Index (VNI)
+# Default Virtual Network Index (VNI)
vni_default = 8000
###############################################################################
@@ -252,24 +248,14 @@ def parse_asic_png(png, asic_name, hostname):
return (neighbors, devices, port_speeds)
def parse_dpg(dpg, hname):
- aclintfs = None
- mgmtintfs = None
for child in dpg:
- """
- In Multi-NPU platforms the acl intfs are defined only for the host not for individual asic.
+ """In Multi-NPU platforms the acl intfs are defined only for the host not for individual asic.
There is just one aclintf node in the minigraph
- Get the aclintfs node first.
+ Get the aclintfs node first.
"""
- if aclintfs is None and child.find(str(QName(ns, "AclInterfaces"))) is not None:
+ if child.find(str(QName(ns, "AclInterfaces"))) is not None:
aclintfs = child.find(str(QName(ns, "AclInterfaces")))
- """
- In Multi-NPU platforms the mgmt intfs are defined only for the host not for individual asic
- There is just one mgmtintf node in the minigraph
- Get the mgmtintfs node first. We need mgmt intf to get mgmt ip in per asic dockers.
- """
- if mgmtintfs is None and child.find(str(QName(ns, "ManagementIPInterfaces"))) is not None:
- mgmtintfs = child.find(str(QName(ns, "ManagementIPInterfaces")))
-
+
hostname = child.find(str(QName(ns, "Hostname")))
if hostname.text.lower() != hname.lower():
continue
@@ -305,6 +291,7 @@ def parse_dpg(dpg, hname):
mvrf_en_flag = mv.find(str(QName(ns, "mgmtVrfEnabled"))).text
mvrf["vrf_global"] = {"mgmtVrfEnabled": mvrf_en_flag}
+ mgmtintfs = child.find(str(QName(ns, "ManagementIPInterfaces")))
mgmt_intf = {}
for mgmtintf in mgmtintfs.findall(str(QName(ns1, "ManagementIPInterface"))):
intfname = mgmtintf.find(str(QName(ns, "AttachTo"))).text
@@ -393,8 +380,8 @@ def parse_dpg(dpg, hname):
# Give a warning if trying to attach ACL to a LAG member interface, correct way is to attach ACL to the LAG interface
if port_alias_map[member] in intfs_inpc:
print >> sys.stderr, "Warning: ACL " + aclname + " is attached to a LAG member interface " + port_alias_map[member] + ", instead of LAG interface"
- elif member.lower().startswith('erspan') or member.lower().startswith('egress_erspan'):
- if member.lower().startswith('erspanv6') or member.lower().startswith('egress_erspanv6'):
+ elif member.lower().startswith('erspan'):
+ if member.lower().startswith('erspanv6'):
is_mirror_v6 = True
else:
is_mirror = True
@@ -405,9 +392,7 @@ def parse_dpg(dpg, hname):
# later after the rest of the minigraph has been parsed.
acl_intfs = pc_intfs[:]
for panel_port in port_alias_map.values():
- # because of port_alias_asic_map we can have duplicate in port_alias_map
- # so check if already present do not add
- if panel_port not in intfs_inpc and panel_port not in acl_intfs:
+ if panel_port not in intfs_inpc:
acl_intfs.append(panel_port)
break
if acl_intfs:
@@ -554,39 +539,6 @@ def parse_meta(meta, hname):
region = value
return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region
-
-def parse_linkmeta(meta, hname):
- link = meta.find(str(QName(ns, "Link")))
- linkmetas = {}
- for linkmeta in link.findall(str(QName(ns1, "LinkMetadata"))):
- port = None
- fec_disabled = None
-
- # Sample: ARISTA05T1:Ethernet1/33;switch-t0:fortyGigE0/4
- key = linkmeta.find(str(QName(ns1, "Key"))).text
- endpoints = key.split(';')
- for endpoint in endpoints:
- t = endpoint.split(':')
- if len(t) == 2 and t[0].lower() == hname.lower():
- port = t[1]
- break
- else:
- # Cannot find a matching hname, something went wrong
- continue
-
- properties = linkmeta.find(str(QName(ns1, "Properties")))
- for device_property in properties.findall(str(QName(ns1, "DeviceProperty"))):
- name = device_property.find(str(QName(ns1, "Name"))).text
- value = device_property.find(str(QName(ns1, "Value"))).text
- if name == "FECDisabled":
- fec_disabled = value
-
- linkmetas[port] = {}
- if fec_disabled:
- linkmetas[port]["FECDisabled"] = fec_disabled
- return linkmetas
-
-
def parse_asic_meta(meta, hname):
sub_role = None
device_metas = meta.find(str(QName(ns, "Devices")))
@@ -693,76 +645,27 @@ def parse_spine_chassis_fe(results, vni, lo_intfs, phyport_intfs, pc_intfs, pc_m
#
###############################################################################
-def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role):
- filter_acls = {}
-
- # If the asic role is BackEnd no ACL Table (Ctrl/Data/Everflow) is binded.
- # This will be applicable in Multi-NPU Platforms.
-
- if sub_role == BACKEND_ASIC_SUB_ROLE:
- return filter_acls
-
- front_port_channel_intf = []
-
- # Get the front panel port channel. It will use port_alias_asic_map
- # which will get populated from port_config.ini for Multi-NPU
- # architecture
- for port_channel_intf in port_channels:
- backend_port_channel = any(lag_member in port_alias_asic_map \
- and lag_member.startswith(BACKEND_ASIC_INTERFACE_NAME_PREFIX) \
- for lag_member in port_channels[port_channel_intf]['members'])
- if not backend_port_channel:
- front_port_channel_intf.append(port_channel_intf)
+def filter_acl_mirror_table_bindings(acls, neighbors, port_channels):
+ """
+ Filters out inactive front-panel ports from the binding list for mirror
+ ACL tables. We define an "active" port as one that is a member of a
+ port channel or one that is connected to a neighboring device.
+ """
for acl_table, group_params in acls.iteritems():
group_type = group_params.get('type', None)
- filter_acls[acl_table] = acls[acl_table]
- # For Control Plane and Data ACL no filtering is needed
- # Control Plane ACL has no Interface associated and
- # Data Plane ACL Interface are attached via minigraph
- # AclInterface.
if group_type != 'MIRROR' and group_type != 'MIRRORV6':
continue
- # Filters out back-panel ports from the binding list for Everflow (Mirror)
- # ACL tables. We define an "back-panel" port as one that is a member of a
- # port channel connected to back asic or directly connected to back asic.
- # This will be applicable in Multi-NPU Platforms.
- front_panel_ports = []
- for port in group_params.get('ports', []):
- if port in port_alias_asic_map and port.startswith(BACKEND_ASIC_INTERFACE_NAME_PREFIX):
- continue
- if port in port_channels and port not in front_port_channel_intf:
- continue
- front_panel_ports.append(port)
-
- # Filters out inactive front-panel ports from the binding list for mirror
- # ACL tables. We define an "active" port as one that is a member of a
- # front pannel port channel or one that is connected to a neighboring device via front panel port.
- active_ports = [port for port in front_panel_ports if port in neighbors.keys() or port in front_port_channel_intf]
-
+ active_ports = [ port for port in group_params.get('ports', []) if port in neighbors.keys() or port in port_channels ]
+
if not active_ports:
print >> sys.stderr, 'Warning: mirror table {} in ACL_TABLE does not have any ports bound to it'.format(acl_table)
- filter_acls[acl_table]['ports'] = active_ports
+ acls[acl_table]['ports'] = active_ports
- return filter_acls
-
-def enable_internal_bgp_session(bgp_sessions, filename, asic_name):
- '''
- In Multi-NPU session the internal sessions will always be up.
- So adding the admin-status 'up' configuration to bgp sessions
- BGP session between FrontEnd and BackEnd Asics are internal bgp sessions
- '''
- local_sub_role = parse_asic_sub_role(filename, asic_name)
-
- for peer_ip in bgp_sessions.keys():
- peer_name = bgp_sessions[peer_ip]['name']
- peer_sub_role = parse_asic_sub_role(filename, peer_name)
- if ((local_sub_role == FRONTEND_ASIC_SUB_ROLE and peer_sub_role == BACKEND_ASIC_SUB_ROLE) or
- (local_sub_role == BACKEND_ASIC_SUB_ROLE and peer_sub_role == FRONTEND_ASIC_SUB_ROLE)):
- bgp_sessions[peer_ip].update({'admin_status': 'up'})
+ return acls
###############################################################################
#
@@ -780,6 +683,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
generate asic specific configuration.
"""
root = ET.parse(filename).getroot()
+ mini_graph_path = filename
u_neighbors = None
u_devices = None
@@ -813,9 +717,8 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
deployment_id = None
region = None
hostname = None
- linkmetas = {}
- # hostname is the asic_name, get the asic_id from the asic_name
+ #hostname is the asic_name, get the asic_id from the asic_name
if asic_name is not None:
asic_id = get_npu_id_from_name(asic_name)
else:
@@ -848,8 +751,6 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
(syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region) = parse_meta(child, hostname)
- elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
- linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
(port_speeds_default, port_descriptions) = parse_deviceinfo(child, hwsku)
else:
@@ -857,22 +758,19 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
(intfs, lo_intfs, mvrf, mgmt_intf, vlans, vlan_members, pcs, pc_members, acls, vni) = parse_dpg(child, asic_name)
elif child.tag == str(QName(ns, "CpgDec")):
(bgp_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, asic_name)
- enable_internal_bgp_session(bgp_sessions, filename, asic_name)
elif child.tag == str(QName(ns, "PngDec")):
(neighbors, devices, port_speed_png) = parse_asic_png(child, asic_name, hostname)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
(sub_role) = parse_asic_meta(child, asic_name)
- elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
- linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
(port_speeds_default, port_descriptions) = parse_deviceinfo(child, hwsku)
- # set the host device type in asic metadata also
- device_type = [devices[key]['type'] for key in devices if key.lower() == hostname.lower()][0]
if asic_name is None:
current_device = [devices[key] for key in devices if key.lower() == hostname.lower()][0]
+ name = hostname
else:
current_device = [devices[key] for key in devices if key.lower() == asic_name.lower()][0]
+ name = asic_name
results = {}
results['DEVICE_METADATA'] = {'localhost': {
@@ -880,9 +778,9 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
'deployment_id': deployment_id,
'region': region,
'docker_routing_config_mode': docker_routing_config_mode,
- 'hostname': hostname,
+ 'hostname': name,
'hwsku': hwsku,
- 'type': device_type
+ 'type': current_device['type']
}
}
# for this hostname, if sub_role is defined, add sub_role in
@@ -890,7 +788,6 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
if sub_role is not None:
current_device['sub_role'] = sub_role
results['DEVICE_METADATA']['localhost']['sub_role'] = sub_role
- results['DEVICE_METADATA']['localhost']['asic_name'] = asic_name
results['BGP_NEIGHBOR'] = bgp_sessions
results['BGP_MONITORS'] = bgp_monitors
results['BGP_PEER_RANGE'] = bgp_peers_with_range
@@ -951,7 +848,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
for port_name in port_speed_png:
# not consider port not in port_config.ini
- # If no port_config_file is found ports is empty so ignore this error
+ #If no port_config_file is found ports is empty so ignore this error
if port_config_file is not None:
if port_name not in ports:
print >> sys.stderr, "Warning: ignore interface '%s' as it is not in the port_config.ini" % port_name
@@ -960,14 +857,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
ports.setdefault(port_name, {})['speed'] = port_speed_png[port_name]
for port_name, port in ports.items():
- # get port alias from port_config.ini
- if port_config_file:
- alias = port.get('alias')
- else:
- alias = port_name
- # generate default 100G FEC
- # Note: FECDisabled only be effective on 100G port right now
- if port.get('speed') == '100000' and linkmetas.get(alias, {}).get('FECDisabled', '').lower() != 'true':
+ if port.get('speed') == '100000':
port['fec'] = 'rs'
# set port description if parsed from deviceinfo
@@ -1078,7 +968,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers)
results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers)
results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers)
- results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role)
+ results['ACL_TABLE'] = filter_acl_mirror_table_bindings(acls, neighbors, pcs)
results['FEATURE'] = {
'telemetry': {
'status': 'enabled'
diff --git a/src/sonic-config-engine/sonic_device_util.py b/src/sonic-config-engine/sonic_device_util.py
index cf1edfd59bfb..994eeb8ae395 100644
--- a/src/sonic-config-engine/sonic_device_util.py
+++ b/src/sonic-config-engine/sonic_device_util.py
@@ -5,8 +5,6 @@
import re
from natsort import natsorted
import glob
-from swsssdk import ConfigDBConnector, SonicDBConfig
-
DOCUMENTATION = '''
---
module: sonic_device_util
@@ -23,9 +21,6 @@
SONIC_DEVICE_PATH = '/usr/share/sonic/device'
NPU_NAME_PREFIX = 'asic'
NAMESPACE_PATH_GLOB = '/run/netns/*'
-ASIC_CONF_FILENAME = 'asic.conf'
-FRONTEND_ASIC_SUB_ROLE = 'FrontEnd'
-BACKEND_ASIC_SUB_ROLE = 'BackEnd'
def get_machine_info():
if not os.path.isfile('/host/machine.conf'):
return None
@@ -46,9 +41,7 @@ def get_npu_id_from_name(npu_name):
def get_num_npus():
platform = get_platform_info(get_machine_info())
- if not platform:
- return 1
- asic_conf_file_path = os.path.join(SONIC_DEVICE_PATH, platform, ASIC_CONF_FILENAME)
+ asic_conf_file_path = os.path.join(SONIC_DEVICE_PATH, platform, 'asic.conf')
if not os.path.isfile(asic_conf_file_path):
return 1
with open(asic_conf_file_path) as asic_conf_file:
@@ -58,7 +51,7 @@ def get_num_npus():
continue
if tokens[0].lower() == 'num_asic':
num_npus = tokens[1].strip()
- return int(num_npus)
+ return num_npus
def get_namespaces():
"""
@@ -71,52 +64,6 @@ def get_namespaces():
ns_list.append(ns)
return natsorted(ns_list)
-def get_hwsku():
- config_db = ConfigDBConnector()
- config_db.connect()
- metadata = config_db.get_table('DEVICE_METADATA')
- return metadata['localhost']['hwsku']
-
-def get_platform():
- if not os.path.isfile('/host/machine.conf'):
- return ''
-
- with open('/host/machine.conf') as machine_conf:
- for line in machine_conf:
- tokens = line.split('=')
- if tokens[0].strip() == 'onie_platform' or tokens[0].strip() == 'aboot_platform':
- return tokens[1].strip()
- return ''
-
-def is_multi_npu():
- num_npus = get_num_npus()
- return (num_npus > 1)
-
-def get_all_namespaces():
- """
- In case of Multi-Asic platform, Each ASIC will have a linux network namespace created.
- So we loop through the databases in different namespaces and depending on the sub_role
- decide whether this is a front end ASIC/namespace or a back end one.
- """
- front_ns = []
- back_ns = []
- num_npus = get_num_npus()
- SonicDBConfig.load_sonic_global_db_config()
-
- if is_multi_npu():
- for npu in range(num_npus):
- namespace = "{}{}".format(NPU_NAME_PREFIX, npu)
- config_db = ConfigDBConnector(use_unix_socket_path=True, namespace=namespace)
- config_db.connect()
-
- metadata = config_db.get_table('DEVICE_METADATA')
- if metadata['localhost']['sub_role'] == FRONTEND_ASIC_SUB_ROLE:
- front_ns.append(namespace)
- elif metadata['localhost']['sub_role'] == BACKEND_ASIC_SUB_ROLE:
- back_ns.append(namespace)
-
- return {'front_ns':front_ns, 'back_ns':back_ns}
-
def get_platform_info(machine_info):
if machine_info != None:
if machine_info.has_key('onie_platform'):
diff --git a/src/sonic-config-engine/tests/multi_npu_data/sample-minigraph.xml b/src/sonic-config-engine/tests/multi_npu_data/sample-minigraph.xml
index 8ca17925c6ec..118202d9b52e 100644
--- a/src/sonic-config-engine/tests/multi_npu_data/sample-minigraph.xml
+++ b/src/sonic-config-engine/tests/multi_npu_data/sample-minigraph.xml
@@ -650,14 +650,14 @@
05T2
Ethernet1
multi_npu_platform_01
- Ethernet1/5
+ Ethernet1/8
DeviceInterfaceLink
05T2
Ethernet2
multi_npu_platform_01
- Ethernet1/6
+ Ethernet1/9
DeviceInterfaceLink
diff --git a/src/sonic-config-engine/tests/t0-sample-graph.xml b/src/sonic-config-engine/tests/t0-sample-graph.xml
index 5e4a68db0e87..47985f870e50 100644
--- a/src/sonic-config-engine/tests/t0-sample-graph.xml
+++ b/src/sonic-config-engine/tests/t0-sample-graph.xml
@@ -303,11 +303,6 @@
everflowV6
Everflow
-
- EGRESS_ERSPAN
- everflow_egress
- Everflow
-
PortChannel01;PortChannel02;PortChannel03;PortChannel04
DataAclIngress
@@ -381,14 +376,13 @@
Ethernet1/1
switch-t0
fortyGigE0/124
- 100000
DeviceInterfaceLink
true
- 100000
+ 10000
switch-t0
- fortyGigE0/4
+ fortyGigE0/2
true
ARISTA05T1
Ethernet1/33
@@ -440,32 +434,6 @@
-
-
-
-
-
-
- FECDisabled
-
- True
-
-
- ARISTA05T1:Ethernet1/33;switch-t0:fortyGigE0/4
-
-
-
-
-
- FECDisabled
-
- True
-
-
- ARISTA06T1:Ethernet1/34;switch-t0:fortyGigE0/8
-
-
-
switch-t0
Force10-S6000
diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py
index 816575f84171..07769e0bf613 100644
--- a/src/sonic-config-engine/tests/test_cfggen.py
+++ b/src/sonic-config-engine/tests/test_cfggen.py
@@ -107,9 +107,10 @@ def test_minigraph_acl(self):
argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v ACL_TABLE'
output = self.run_script(argument, True)
self.assertEqual(output.strip(), "Warning: Ignoring Control Plane ACL NTP_ACL without type\n"
+ "Warning: ignore interface 'fortyGigE0/2' as it is not in the port_config.ini\n"
+ "Warning: ignore interface 'fortyGigE0/2' in DEVICE_NEIGHBOR as it is not in the port_config.ini\n"
"{'NTP_ACL': {'services': ['NTP'], 'type': 'CTRLPLANE', 'policy_desc': 'NTP_ACL', 'stage': 'ingress'}, "
"'EVERFLOW': {'stage': 'ingress', 'type': 'MIRROR', 'ports': ['PortChannel01', 'PortChannel02', 'PortChannel03', 'PortChannel04', 'Ethernet4'], 'policy_desc': 'EVERFLOW'}, "
- "'EVERFLOW_EGRESS': {'stage': 'egress', 'type': 'MIRROR', 'ports': ['PortChannel01', 'PortChannel02', 'PortChannel03', 'PortChannel04', 'Ethernet4'], 'policy_desc': 'EVERFLOW_EGRESS'}, "
"'ROUTER_PROTECT': {'services': ['SSH', 'SNMP'], 'type': 'CTRLPLANE', 'policy_desc': 'ROUTER_PROTECT', 'stage': 'ingress'}, "
"'DATAACLINGRESS': {'stage': 'ingress', 'type': 'L3', 'ports': ['PortChannel01', 'PortChannel02', 'PortChannel03', 'PortChannel04'], 'policy_desc': 'DATAACLINGRESS'}, "
"'SNMP_ACL': {'services': ['SNMP'], 'type': 'CTRLPLANE', 'policy_desc': 'SNMP_ACL', 'stage': 'ingress'}, "
@@ -189,18 +190,7 @@ def test_minigraph_extra_neighbors(self):
def test_minigraph_port_description(self):
argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"'
output = self.run_script(argument)
- self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'fec': 'rs', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up', 'speed': '100000', 'description': 'ARISTA04T1:Ethernet1/1'}")
-
- def test_minigraph_port_fec_disabled(self):
- # Test for FECDisabled
- argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet4\']"'
- output = self.run_script(argument)
- self.assertEqual(output.strip(), "{'lanes': '25,26,27,28', 'description': 'Servers0:eth0', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/4', 'admin_status': 'up', 'speed': '100000'}")
-
- def test_minigraph_port_rs(self):
- argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"'
- output = self.run_script(argument)
- self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'fec': 'rs', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up', 'speed': '100000', 'description': 'ARISTA04T1:Ethernet1/1'}")
+ self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'description': 'ARISTA04T1:Ethernet1/1', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up'}")
def test_minigraph_bgp(self):
argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v "BGP_NEIGHBOR[\'10.0.0.59\']"'
diff --git a/src/sonic-config-engine/tests/test_multinpu_cfggen.py b/src/sonic-config-engine/tests/test_multinpu_cfggen.py
index c3307b482b79..6facae0451db 100644
--- a/src/sonic-config-engine/tests/test_multinpu_cfggen.py
+++ b/src/sonic-config-engine/tests/test_multinpu_cfggen.py
@@ -9,7 +9,7 @@
ASIC_SKU = 'multi-npu-asic'
NUM_ASIC = 4
HOSTNAME = 'multi_npu_platform_01'
-DEVICE_TYPE = 'LeafRouter'
+
class TestMultiNpuCfgGen(TestCase):
@@ -116,7 +116,7 @@ def test_mgmt_port(self):
self.assertDictEqual(output, {'eth0': {'alias': 'eth0', 'admin_status': 'up'}})
for asic in range(NUM_ASIC):
output = json.loads(self.run_script_for_asic(argument, asic, self.port_config[asic]))
- self.assertDictEqual(output, {'eth0': {'alias': 'eth0', 'admin_status': 'up'}})
+ self.assertDictEqual(output, {})
def test_frontend_asic_portchannels(self):
argument = "-m {} -p {} -n asic0 --var-json \"PORTCHANNEL\"".format(self.sample_graph, self.port_config[0])
@@ -197,51 +197,25 @@ def test_frontend_bgp_neighbor(self):
output = json.loads(self.run_script(argument))
self.assertDictEqual(output, \
{'10.0.0.1': {'rrclient': 0, 'name': '01T2', 'local_addr': '10.0.0.0', 'nhopself': 0, 'holdtime': '10', 'asn': '65200', 'keepalive': '3'},
- '10.1.0.0': {'rrclient': 0, 'name': 'ASIC2', 'local_addr': '10.1.0.1', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0', 'admin_status': 'up'},
+ '10.1.0.0': {'rrclient': 0, 'name': 'ASIC2', 'local_addr': '10.1.0.1', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0'},
'fc00::2': {'rrclient': 0, 'name': '01T2', 'local_addr': 'fc00::1', 'nhopself': 0, 'holdtime': '10', 'asn': '65200', 'keepalive': '3'},
- '10.1.0.2': {'rrclient': 0, 'name': 'ASIC3', 'local_addr': '10.1.0.3', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0', 'admin_status': 'up'}})
+ '10.1.0.2': {'rrclient': 0, 'name': 'ASIC3', 'local_addr': '10.1.0.3', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}})
def test_backend_asic_bgp_neighbor(self):
argument = "-m {} -p {} -n asic3 --var-json \"BGP_NEIGHBOR\"".format(self.sample_graph, self.port_config[3])
output = json.loads(self.run_script(argument))
self.assertDictEqual(output, \
- {'10.1.0.7': {'rrclient': 0, 'name': 'ASIC1', 'local_addr': '10.1.0.6', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0', 'admin_status': 'up'},
- '10.1.0.3': {'rrclient': 0, 'name': 'ASIC0', 'local_addr': '10.1.0.2', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0', 'admin_status': 'up'}})
+ {'10.1.0.7': {'rrclient': 0, 'name': 'ASIC1', 'local_addr': '10.1.0.6', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0'},
+ '10.1.0.3': {'rrclient': 0, 'name': 'ASIC0', 'local_addr': '10.1.0.2', 'nhopself': 0, 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}})
def test_device_asic_metadata(self):
argument = "-m {} --var-json DEVICE_METADATA".format(self.sample_graph)
for asic in range(NUM_ASIC):
output = json.loads(self.run_script_for_asic(argument, asic,self.port_config[asic]))
asic_name = "asic{}".format(asic)
- self.assertEqual(output['localhost']['hostname'], 'multi_npu_platform_01')
- self.assertEqual(output['localhost']['asic_name'], asic_name)
- self.assertEqual(output['localhost']['type'], DEVICE_TYPE)
+ self.assertEqual(output['localhost']['hostname'], asic_name)
+ self.assertEqual(output['localhost']['type'], 'Asic')
if asic == 0 or asic == 1:
self.assertEqual(output['localhost']['sub_role'], 'FrontEnd')
else:
self.assertEqual(output['localhost']['sub_role'], 'BackEnd')
-
- def test_global_asic_acl(self):
- argument = "-m {} --var-json \"ACL_TABLE\"".format(self.sample_graph)
- output = json.loads(self.run_script(argument))
- self.assertDictEqual(output, {\
- 'DATAACL': {'policy_desc': 'DATAACL', 'ports': ['PortChannel0002','PortChannel0008'], 'stage': 'ingress', 'type': 'L3'},
- 'EVERFLOW': {'policy_desc': 'EVERFLOW', 'ports': ['PortChannel0002','PortChannel0008'], 'stage': 'ingress', 'type': 'MIRROR'},
- 'EVERFLOWV6':{'policy_desc': 'EVERFLOWV6', 'ports': ['PortChannel0002','PortChannel0008'], 'stage': 'ingress', 'type': 'MIRRORV6'},
- 'SNMP_ACL': {'policy_desc': 'SNMP_ACL', 'services': ['SNMP'], 'stage': 'ingress', 'type': 'CTRLPLANE'},
- 'SSH_ONLY': {'policy_desc': 'SSH_ONLY', 'services': ['SSH'], 'stage': 'ingress', 'type': 'CTRLPLANE'}})
-
- def test_front_end_asic_acl(self):
- argument = "-m {} -p {} -n asic0 --var-json \"ACL_TABLE\"".format(self.sample_graph, self.port_config[0])
- output = json.loads(self.run_script(argument))
- self.assertDictEqual(output, {\
- 'DATAACL': {'policy_desc': 'DATAACL', 'ports': ['PortChannel0002'], 'stage': 'ingress', 'type': 'L3'},
- 'EVERFLOW': {'policy_desc': 'EVERFLOW', 'ports': ['PortChannel0002'], 'stage': 'ingress', 'type': 'MIRROR'},
- 'EVERFLOWV6':{'policy_desc': 'EVERFLOWV6', 'ports': ['PortChannel0002'], 'stage': 'ingress', 'type': 'MIRRORV6'},
- 'SNMP_ACL': {'policy_desc': 'SNMP_ACL', 'services': ['SNMP'], 'stage': 'ingress', 'type': 'CTRLPLANE'},
- 'SSH_ONLY': {'policy_desc': 'SSH_ONLY', 'services': ['SSH'], 'stage': 'ingress', 'type': 'CTRLPLANE'}})
-
- def test_back_end_asic_acl(self):
- argument = "-m {} -p {} -n asic3 --var-json \"ACL_TABLE\"".format(self.sample_graph, self.port_config[3])
- output = json.loads(self.run_script(argument))
- self.assertDictEqual(output, {})
diff --git a/src/sonic-frr/frr b/src/sonic-frr/frr
index 2f3f691f44ea..e1b0c939960c 160000
--- a/src/sonic-frr/frr
+++ b/src/sonic-frr/frr
@@ -1 +1 @@
-Subproject commit 2f3f691f44ea0194a145aed59606fdd0f33ecdb4
+Subproject commit e1b0c939960c49eba05e972a68d50ca32dd09303
diff --git a/src/sonic-restapi b/src/sonic-restapi
index 95e6bf8dcbf9..c219e3da28fb 160000
--- a/src/sonic-restapi
+++ b/src/sonic-restapi
@@ -1 +1 @@
-Subproject commit 95e6bf8dcbf9a3052c01cb8264f0a750eda91625
+Subproject commit c219e3da28fb20b63b065ceb1828125593d73f14
diff --git a/src/sonic-swss b/src/sonic-swss
index 62d4af4f1e0b..2218ed4cc50a 160000
--- a/src/sonic-swss
+++ b/src/sonic-swss
@@ -1 +1 @@
-Subproject commit 62d4af4f1e0bd4115ba139a215847294c9f3a90a
+Subproject commit 2218ed4cc50aebba681b42f300869c84c90be613
diff --git a/src/sonic-utilities b/src/sonic-utilities
index 3d77d5a9c49d..42e4fdc623ad 160000
--- a/src/sonic-utilities
+++ b/src/sonic-utilities
@@ -1 +1 @@
-Subproject commit 3d77d5a9c49d764f9d7c479ec8446a2b8aec4925
+Subproject commit 42e4fdc623adb4be5b1ed6eaa6e8d7763951fbb1