Skip to content
Closed
Changes from 9 commits
Commits
Show all changes
379 commits
Select commit Hold shift + click to select a range
2a61142
Add a check for ensuring mirror session ACLs are programmed to ASIC (…
ryanzhu706 Jun 3, 2024
3e9ff3d
Don't exit immediately if running a command under alias mode (#3353)
saiarcot895 Jun 4, 2024
4685761
[chassis][voq] Added support for Voq Counters(SAI_SWITCH_STAT_PACKET_…
saksarav-nokia Jun 5, 2024
a59ac2e
Add W-ECMP CLI (#3253)
nazariig Jun 5, 2024
8681114
Fix show fabric monitor capacity command when the feature is disabled…
jfeng-arista Jun 5, 2024
2fbb377
[consutil] Fix consule CLI and enhance unittest (#3360)
lizhijianrd Jun 9, 2024
877a337
[DPB]Fixing return code of breakout command on failure (#3357)
dgsudharsan Jun 10, 2024
0e954fb
Add Checkpoint and Rollback for Multi ASIC. (#3299)
xincunli-sonic Jun 14, 2024
d4f11da
Improve load_mingraph to wait eth0 restart before exit (#3365)
liuh-80 Jun 18, 2024
476df50
[config]Support single file reload for multiasic (#3349)
wen587 Jun 18, 2024
243aea5
[config] no op if Golden Config is invalid (#3367)
wen587 Jun 18, 2024
6d44a02
Update TRANSCEIVER_FIRMWARE_INFO table for all targets in sfputil (#3…
mihirpat1 Jun 18, 2024
1b5812e
[chassis][mutli-asic][lldp] "show lldp table/neighbors" displays erro…
mlok-nokia Jun 19, 2024
cbdcade
Add the definition of `log` in `script decode-syseeprom` (#3383)
yutongzhang-microsoft Jun 21, 2024
b2a4571
fix: fix show bgp summary output typo (#3375)
cyw233 Jun 24, 2024
eab3806
[fast-reboot] Backup database after syncd/swss stopped (#3342)
stepanblyschak Jun 24, 2024
43f523f
[pbh]: Fix show PBH counters when cache is partial (#3356)
nazariig Jun 27, 2024
7916ae0
[Mellanox] Add support for ACS-4280 (#3368)
vivekrnv Jun 28, 2024
519ab30
Remove suppress-fib-pending CLI and make route_check.py check suppres…
stepanblyschak Jul 1, 2024
b0166c0
[DPB]Fix return code in case of failure (#3389)
dgsudharsan Jul 1, 2024
f4636f8
Remove secret from golden_config_db.json and old_config files (#3390)
liuh-80 Jul 4, 2024
39dc324
Add Parallel option for apply-patch (#3373)
xincunli-sonic Jul 9, 2024
ecc6b63
Fix multi-asic behaviour for pg-drop (#3058)
bktsim-arista Jul 10, 2024
2d002d8
[sfputil] Add loopback sub-command for debugging and module diagnosti…
xinyulin Jul 12, 2024
c54d597
Revert "fix: fix show bgp summary output typo" (#3423)
yejianquan Jul 16, 2024
ab6f427
[Bug Fix] Fix disk check test and drops group test (#3424)
BYGX-wcr Jul 16, 2024
cb9829e
Enable show ip bgp on sup and -n all for show ip bgp network (#3417)
BYGX-wcr Jul 18, 2024
4edc678
[SfpUtil] sfp eeprom with option dom is not working on Xcvrs with fla…
mihirpat1 Jul 18, 2024
8b99b92
Update DB version to 202411 on master branch. (#3414)
ryanzhu706 Jul 19, 2024
c72e7d4
fix show techsupport date issue (#3437)
ganglyu Jul 23, 2024
41ed473
IP Assignment Issue (#3408)
ridahanif96 Jul 23, 2024
73fbfcf
Fix multi-asic behaviour for dropstat (#3059)
bktsim-arista Jul 24, 2024
dfc4aec
Add sfputil power enable/disable command (#3418)
AnoopKamath Jul 26, 2024
85e9041
Change the default behavior of show ip bgp network (#3447)
BYGX-wcr Jul 26, 2024
a062307
Add namespace check for multiasic (#3458)
xincunli-sonic Jul 30, 2024
b5f0994
Update README.md (#3406)
BYGX-wcr Aug 2, 2024
d18f30f
Fix to use IPv6 linklocal address as snmp agent address (#3215)
SuvarnaMeenakshi Aug 5, 2024
af22cf3
[Mellanox] Add support for Mellanox-SN4700-O32 and Mellanox-SN4700-V6…
ayurkiv-nvda Aug 5, 2024
2ef202f
Fix kexec_unload failure on secure boot enabled platforms (#3439)
vivekrnv Aug 5, 2024
76a4a93
Skip default lanes dup check (#3489)
xincunli-sonic Aug 16, 2024
8251fcb
Add lock to config reload/load_minigraph (#3475)
lolyu Aug 20, 2024
beee7ee
Add timeout for rexec's get_password (#3484)
BYGX-wcr Aug 20, 2024
5602145
Fix multi-asic behaviour for ecnconfig (#3062)
bktsim-arista Aug 22, 2024
d1f70c6
Enable show interfacess counters on chassis supervisor (#3488)
BYGX-wcr Aug 28, 2024
1b33818
Revert "Remove suppress-fib-pending CLI and make route_check.py check…
dgsudharsan Sep 2, 2024
0e65caf
[reboot]: Allow reboot to happen regardless vendor hook errors (#3454)
nazariig Sep 3, 2024
9fbee7e
[Mellanox] Add CMIS Host Management Files to 'show techsupport' Dumps…
tshalvi Sep 3, 2024
4a02f3c
Add back the option f to the reboot script (#3492)
DavidZagury Sep 3, 2024
b4367ef
[qos reload] Fix "config qos reload" overriding entire CONFIG_DB (#3479)
stepanblyschak Sep 3, 2024
a3fe107
[chassis][cli] Fix config chassis module startup/shutdown command for…
mlok-nokia Sep 3, 2024
2e6fb56
Revert "[wol] Implement wol command line utility" (#3515)
w1nda Sep 4, 2024
754fa7d
Remove redundant mmuconfig file (#3446)
arista-hpandya Sep 4, 2024
43d41f1
Exit early if YANG validation fails in Golden Config (#3490)
wen587 Sep 4, 2024
710ad66
Fix multi-asic behaviour for mmuconfig (#3061)
bktsim-arista Sep 5, 2024
bad694d
Fix multi-asic support to PFC config/show (#3521)
arista-hpandya Sep 5, 2024
ef6ef7b
Add show CLI for bmp related dataset. (#3289)
FengPan-Frank Sep 6, 2024
f1d9eda
[chassis] Modify the show ip route to hide the Ethernet-IB port in th…
arlakshm Sep 9, 2024
e35a14a
Fix ntp conf file path (#3525)
vivekrnv Sep 9, 2024
38acd5c
[Mellanox] Add new SKU Mellanox-SN5600-C256 (#3431)
DavidZagury Sep 9, 2024
39dfc85
[show][interface][counters] Add proposal and changes for fec-histogra…
vdahiya12 Sep 10, 2024
5ceda92
sonic-installer: enhance next image detection for Aboot (#3433)
Staphylo Sep 11, 2024
c55ad97
[Mellanox] Add SPC5 to generic config updater file (#3542)
noaOrMlnx Sep 11, 2024
70a9fb2
[VoQ chassis] : Script to debug packet drops (#3536)
vmittal-msft Sep 11, 2024
4c4797b
[sfputil] Configure the debug loopback mode only on the relevant lane…
xinyulin Sep 11, 2024
ae6c021
[spm]: Clean up timers auto generation logic. (#3523)
nazariig Sep 15, 2024
0bfb9d7
Move from bootctl to mokutil when checking for Secure Boot status (#3…
DavidZagury Sep 15, 2024
6fc974c
SONIC CLI for CLI-Sessions feature (#3175)
i-davydenko Sep 16, 2024
70ea9ad
Fix multi-asic behaviour for watermarkstat (#3060)
bktsim-arista Sep 17, 2024
439d5da
[DASH] Add support for ENI counters (#3496)
vivekrnv Sep 18, 2024
c4ac296
Upgrade pyroute2 and improve cli response time (#3513)
vivekrnv Sep 24, 2024
8f704c2
[Nokia] Add J2C+/H3/H4/H5 to GCU validator (#3495)
dgodwin-nokia Sep 25, 2024
e424eb9
[dpu_tty]: Add a DPU TTY console utility (#3535)
wenchungw Sep 25, 2024
770d1a0
Enhance multi-asic support for queuestat (#3554)
arista-hpandya Sep 27, 2024
586cd98
[fast/warm-reboot] Improve retry mechanism to check if SAI_OBJECT_TY…
ayurkiv-nvda Sep 30, 2024
b24d3a9
Add Unit Test for portstat (#3564)
BYGX-wcr Oct 2, 2024
27591fa
Fix key error when checking for UTILITIES_UNIT_TESTING env var (#3563)
arista-hpandya Oct 7, 2024
57f90ab
[Mellanox] Rename SKU to Mellanox-SN5600-C256X1 (#3546)
DavidZagury Oct 9, 2024
57af667
Add a command to update log level and refresh configuration (#3428)
Junchao-Mellanox Oct 12, 2024
d8a9dde
[fast/warm-reboot] add cpufreq.default_governor=performance to BOOT_O…
stepanblyschak Oct 14, 2024
8f9ed9e
Update the .NET core version to 8.0 (#3280)
saiarcot895 Oct 16, 2024
4de20b3
[doc] correct the fec histogram output for show int counters fec-hist…
vdahiya12 Oct 18, 2024
619f78b
Add YANG validation for config reload if file is given (#3576)
wen587 Oct 21, 2024
13af66e
[Mellanox]Remove deprecated sdk sniffer cli and collect sdk dump in s…
yuazhe Oct 22, 2024
68e0217
Revert "Skip default lanes dup check (#3489)" (#3572)
xincunli-sonic Oct 22, 2024
88bfeb2
Record and warn tables which not covered by YANG (#3583)
wen587 Oct 23, 2024
e366e5c
Revert "Record and warn tables which not covered by YANG (#3583)" (#3…
wen587 Oct 23, 2024
8a589e9
[Banner] Added CLI commands to configure Banner and display current c…
SviatoslavBoichuk Oct 26, 2024
7c778dd
Adds logic to get default disk and check disk type (#3399)
ashwnsri Oct 28, 2024
53b684e
Vnet_route_check TCP socket for DB connection. (#3578)
siqbal1986 Oct 29, 2024
d1460d2
Add CLI for bmp configdb entity Enable/Disable (#3286)
FengPan-Frank Oct 30, 2024
ef86569
Add support of the pensando-dpu platform to generate-dump utility. (#…
Siddhu27 Oct 30, 2024
de02a35
Speed up route_check script (#3544)
deepak-singhal0408 Nov 3, 2024
210a468
[config] Bypass standard input for reload (#3597)
wen587 Nov 6, 2024
f44b740
Fix for integer overflow of counter value if its too large (#3596)
harjotsinghpawra Nov 7, 2024
434e2e4
Consolidate the get running config way. (#3585)
xincunli-sonic Nov 7, 2024
8a8d5f0
Fix slash in path. (#3573)
xincunli-sonic Nov 8, 2024
e0d060c
[SPM] Add logic to disable the feature before stopping it and enablin…
vadymhlushko-mlnx Nov 11, 2024
3d76f6b
[Mellanox] Update C256X1 SKU to be C256S1 in gcu_field.json (#3611)
noaOrMlnx Nov 12, 2024
c02e0f1
Run yang validation in db migrator (#3102)
ganglyu Nov 13, 2024
c495721
[warm-reboot] Add support to pass extra kernel cmdline parameters (#3…
pavannaregundi Nov 13, 2024
31663e9
Refresh dump file modify timestamp before cleanup call (#3595)
anamehra Nov 13, 2024
3c6edf6
PVST Feature commit (#3567)
divyachandralekha Nov 14, 2024
d2f8e14
[Mellanox] Add Mellanox-SN5600-C224O8 to gcu_field.json (#3612)
noaOrMlnx Nov 14, 2024
603fd11
platform/innovium renaming to platform/marvell-teralynx (#3474)
krismarvell Nov 20, 2024
cce4bb8
[ARM64][Warm-Reboot]: Get boot arguments from uboot environment (#3613)
marvellparthiv Nov 20, 2024
f7de2a5
Supports FRR-VRRP configuration (#2949)
micas-net Nov 21, 2024
f37afcf
Add port FEC BER show changes (#3607)
vincentpcng Nov 25, 2024
9b5b6e9
Extra delay between running firmware and updating firmware version (#…
stephenxs Nov 25, 2024
6496305
Fix counterpoll show for ENI Counters (#3618)
vivekrnv Nov 27, 2024
b7e3625
[Mellanox] Update the save_file command in generate_dump to handle fo…
DavidZagury Nov 27, 2024
d8e58d1
Validate interface name length in CLI (#3580)
stepanblyschak Dec 2, 2024
4c9dfd0
Debug dump utility dash objects update (#3387)
gpunathilell Dec 2, 2024
bc61f78
Fix show command column change issue (#3645)
FengPan-Frank Dec 2, 2024
c8a0dee
[cisco|express-boot]: Add support for cisco express boot in sonic-uti…
jhli-cisco Dec 3, 2024
a83517f
[show_tech] Filter out a list of commands in generate_dump script whi…
mlok-nokia Dec 5, 2024
657241e
Update PR checker pipeline to point to bookworm (#3651)
bingwang-ms Dec 5, 2024
1d70e7f
Update gcu_field_operation_validators.conf.json with Arista-7260CX3-D…
developfast Dec 6, 2024
a57cd50
[config]Restrict YANG validation to Golden Config (#3656)
wen587 Dec 6, 2024
e4f1d3f
Revert "Speed up route_check script" (#3653)
xwjiang-ms Dec 6, 2024
157cf3a
Fix save_file command in generate_dump (#3647)
DavidZagury Dec 6, 2024
e3c0b1d
Update DB migrator script to next branch 202505 (#3664)
kperumalbfn Dec 7, 2024
d8c4327
Support empty golden config file for multi-asic (#3670)
ganglyu Dec 10, 2024
5bf0d2f
[GCU] Add data acl table and rule check (#3668)
wen587 Dec 11, 2024
7ffde34
[show][interfaces] Add proposal for show interface errors {port} (#3623)
vdahiya12 Dec 12, 2024
6a2c26e
[config db] Trim garbage charactor in "DEVICE_METADATA" of config db …
wenyiz2021 Dec 12, 2024
27649ef
Fixed the issues with sonic-clear queuecounter for egress queue and v…
saksarav-nokia Dec 12, 2024
d6fb602
Speed up route_check script (#3678)
deepak-singhal0408 Dec 13, 2024
2b76671
Add scope to field validator. (#3675)
xincunli-sonic Dec 16, 2024
45e910e
platform/marvell renaming to platform/marvell-prestera (#3622)
krismarvell Dec 16, 2024
ae354f5
Disable routeCheck monit as part of config reload/minigraph stop serv…
abdosi Dec 17, 2024
7845b5e
add sonic_asic_platform in the render context when rendering docker_i…
BYGX-wcr Dec 17, 2024
cac3dd4
Optimize techsupport reducing number of vtysh calls in scale sceario …
dgsudharsan Dec 18, 2024
1294488
Revert PR: Add scope to field validator (#3689)
xwjiang-ms Dec 19, 2024
2fb69a6
[counterpoll] make the 'eni' command functional only on the DPU (#3679)
Yakiv-Huryk Dec 24, 2024
0a225b7
Fix monit connection failure when doing routeCheck/contianerCheck mo…
abdosi Dec 26, 2024
c50dd46
Fixed show interface counters on supervisor for packet chassis (#3703)
abdosi Jan 4, 2025
1ae5f24
Enable multi asic golden config YANG validation. (#3685)
xincunli-sonic Jan 6, 2025
27e06a5
Delete TRSNCEIVER tables while config reload (#3680)
noaOrMlnx Jan 6, 2025
055a761
[show_tech] modify generate_dump to includes BERT data and also the p…
mlok-nokia Jan 7, 2025
79e0bb2
show ip interfaces: fix exception with BGP unnumbered (#3695)
bradh352 Jan 8, 2025
8778e68
[db_migrator] Migrate tunnel table (#3704)
lolyu Jan 10, 2025
f87274f
[Mellanox] Add Mellanox-SN5610N-C256S2, Mellanox-SN5610N-C224O8 to GC…
noaOrMlnx Jan 14, 2025
3a58e7c
sonic-utilities: add th5 hwskus to gcu conf file (#3714)
ccroy-arista Jan 15, 2025
5f24c66
[show][interfaces] Add proposal for show interfaces flap (#3627)
vdahiya12 Jan 15, 2025
6960cdb
[yang] Enforce yang full support in full config command (#3716)
wen587 Jan 17, 2025
26b40a6
[ssdhealth] Check for default device before falling back to discovery…
vivekrnv Jan 21, 2025
aac73f7
Remove debug dump import by default (#3715)
vivekrnv Jan 21, 2025
4cdc148
[config] Exit with non-zero when qos reload fail (#3710)
jianyuewu Jan 21, 2025
78454de
[show][interface] Add changes for show interface errors command (#3721)
vdahiya12 Jan 23, 2025
7cb1b32
[show][interface] Add changes for show interface flap command (#3724)
vdahiya12 Jan 27, 2025
33e0373
[ACL] Display rule and table info written to APP DB (#3713)
vivekrnv Jan 27, 2025
5a3f2b4
CLI support for SmartSwitch PMON (#3271)
rameshraghupathy Jan 27, 2025
4bc1969
Remove partially installer image when image install failed. (#3712)
liuh-80 Jan 28, 2025
8d7dfc5
Add recover asic_id config if load golden config. (#3711)
xincunli-sonic Jan 29, 2025
6817b21
Fix show interface counters for Chassis Packet Supervisor (#3734)
anamehra Jan 30, 2025
00ef4a4
Fix ssdhealth failure on VS platform (#3743)
vivekrnv Jan 31, 2025
a97e40b
Make 'show ip bgp summary' work even when we don't have any peer grou…
kalash-nexthop Feb 3, 2025
9b50790
Fix call for spanning-tree commands in dump script (#3723)
DavidZagury Feb 3, 2025
95372fc
sonic-utilities: WRED stats feature changes on sonic-utilities (#2807)
rpmarvell Feb 4, 2025
1a1695d
[show_techsupport][pstore] Archive /var/lib/systemd/pstore info to te…
mlok-nokia Feb 5, 2025
aca8b17
[Mellanox] Add new SN5640 platform and HwSKU (#3742)
noaOrMlnx Feb 5, 2025
5425e0b
display proper message with proper errno for kvm. (#3750)
hdwhdw Feb 7, 2025
001cab4
Optimize lag_keepalive by crafting the LACPDU packet ourselves (#3170)
saiarcot895 Feb 8, 2025
e9d3075
Fixing 'show ip bgp neighbor <ip>' in frr unified config mode (#3738)
kalash-nexthop Feb 8, 2025
aca3aba
[QOS] Skip showing unnecessary warning message (#3708)
vivekrnv Feb 10, 2025
9eca6de
Improve SONiC disk checker to handle disk full case and mount overlay…
liuh-80 Feb 10, 2025
62138d7
[FC] remove FC delay field (#3577)
stepanblyschak Feb 11, 2025
230f8e9
enable pfcwd for backplane ports (#3759)
sdszhang Feb 14, 2025
76c99c0
Revert "enable pfcwd for backplane ports (#3759)" (#3767)
sdszhang Feb 17, 2025
74593f4
Fix `vnet_route_check` for active and inactive routes, add `--all` op…
mramezani95 Feb 20, 2025
5ae1360
Add golden config check (#3770)
xincunli-sonic Feb 26, 2025
7c11649
Add multi-asic support for dropconfig (#3735)
arista-hpandya Feb 26, 2025
c374dc6
Utilities Changes for DHCP DoS Mitigation Feature (#3301)
asraza07 Feb 26, 2025
d47ddd0
Memory Statistics Config and Show Commands (#3575)
kanza-latif Feb 27, 2025
1cd8914
Remove Multi ASIC namespace Check. (#3783)
xincunli-sonic Feb 27, 2025
34fe1bc
Fix the interface name length validation for subinterface (#3774)
dgsudharsan Mar 2, 2025
30b6b3b
Add namespace support for show interface neighbor expected (#3781)
auspham Mar 3, 2025
deda670
Fix command docker ps showing issue. (#3791)
liushilongbuaa Mar 4, 2025
b15f73a
Enhance list-checkpoints CLI (#3746)
xincunli-sonic Mar 5, 2025
53a0ec8
revert YANG check in db_migrator (#3793)
wen587 Mar 6, 2025
3baf552
enable pfcwd for backplane ports (#3792)
sdszhang Mar 7, 2025
56d309b
Fixes `show interface transceiver info Ethernet0` command failure for…
az-pz Mar 9, 2025
25443e2
Fix the switch level Voq counter to use switch_id Oid instead of coun…
saksarav-nokia Mar 12, 2025
b6ef169
[Techsupport] Add show route-map command to frr dumps in techsupport …
dgsudharsan Mar 13, 2025
a37733a
[hash] update GH frontend with IPV6_FLOW_LABEL for ECMP/LAG switch ha…
ayurkiv-nvda Mar 13, 2025
205011e
[SmartSwitch] Extend reboot script for rebooting SmartSwitch (#3566)
vvolam Mar 14, 2025
2e6888b
Add scope to field validator.[redo PR: 3675] (#3805)
xincunli-sonic Mar 17, 2025
807d687
Add Arista-7060X6-64PE-C224O8, Arista-7060X6-64PE-C256S2 to generic_c…
rick-arista Mar 19, 2025
965b72f
Revert "[config]Restrict YANG validation to Golden Config (#3656)" (#…
wen587 Mar 21, 2025
fdb404e
Fixed syslog error "ERR python3:- validateNamespace: Initialize globa…
anamehra Mar 22, 2025
b0166c4
kdump-Remote-SSH-Configurations (#3400)
Ghulam-Bahoo Mar 24, 2025
b91143b
Added post commands for enabling fifos (#3801)
nissampa Mar 25, 2025
cbf2c7b
Switch to using chrony instead of ntpd (#3574)
saiarcot895 Mar 25, 2025
d2dbbec
[sfputil] add support for sfputil debug tx-output/rx-output {port} en…
vdahiya12 Mar 25, 2025
35716ef
feat: add namespace support for show interfaces counters fec-histogra…
auspham Mar 31, 2025
8d60c11
Fix empty asic_id for arista (#3820)
xincunli-sonic Mar 31, 2025
00d5294
[dualtor] Support reset heartbeat suspend timer on active-standby por…
lolyu Apr 3, 2025
910dd2f
Add Arista-7050CX3-32S-C28S4 to generic_config_updater (#3802)
byu343 Apr 10, 2025
aadc485
Fix the problematic implementation of "config route add/del" and add …
BYGX-wcr Apr 10, 2025
450bb30
Enable config reload yang validation for multiasic (#3825)
xincunli-sonic Apr 14, 2025
f204f99
Fix show platform ssdhealth not showing expected output when a usb fl…
tirupatihemanth Apr 14, 2025
31e96f4
Fixed: Kdump Remote Patch (#3835)
muhammadalihussnain Apr 14, 2025
786aaed
[SRv6] add support for SRv6 counters (#3841)
Yakiv-Huryk Apr 15, 2025
a7e5fab
[Mellanox] Support Mellanox Spectrum5 ASIC in generic configuration u…
DavidZagury Apr 17, 2025
f302486
Add Nokia platforms to GCU validator (#3800)
dgodwin-nokia Apr 17, 2025
1d47906
Update loopback interface admin status on config interface startup/sh…
Leyza Apr 22, 2025
c54b6dd
[muxcable] Add grpc CLI support for transceiver presence retrieval fr…
mihirpat1 Apr 22, 2025
ba21682
Added protection for warm-upgrade when leftover VXLAN config is prese…
Ryangwaite Apr 22, 2025
43f0b75
Modify 'show vnet name <vnet-name>' and 'show vnet brief' to display …
SoumyaMishra18 Apr 23, 2025
5f5fe24
modifying psushow script to use key names instead of index (#3208)
gregoryboudreau Apr 28, 2025
6b97567
Set the timeout to be larger on VS chassis and speedup a bit (#3861)
BYGX-wcr Apr 28, 2025
567ca49
Added auto-generated CLIs from Fine-Grained Hashing Yang model (#3740)
ashutosh-agrawal Apr 29, 2025
b7cb82f
Fix show queue counters to only run on default namespace (#3865)
vishal-nokia May 2, 2025
8bdde3c
Transceiver CLI changes to support DOM and STATUS table related chang…
mihirpat1 May 6, 2025
8aa893e
[trim]: Add Packet Trimming CLI (#3830)
nazariig May 7, 2025
6c8ccab
Fix pg-drop cmd issue on multi-asic (#3782)
zhixzhu May 7, 2025
7b5ba13
Vnet_name added in create_only patterns (#3878)
miatttao May 9, 2025
5f2fcfe
[warm/fast-reboot] fix lag_keepalive.py hang (#3850)
stepanblyschak May 12, 2025
9c970ed
Generate component-versions file for the nvidia-bluefield dpu in the …
tirupatihemanth May 12, 2025
ed86150
Add GCU Support for SKU Mellanox-SN4280-O8C80 (#3871)
ram25794 May 13, 2025
8631235
skip pfcwd if disabled in golden_config (#3880)
sdszhang May 14, 2025
8c3deeb
Revert "Vnet_name added in create_only patterns (#3878)" (#3879)
miatttao May 14, 2025
984f1c6
VNET CLI- ADD/DEL VNET, ADD/DEL VNET ROUTE, VRF BIND/UNBIND to consid…
kavyavanibedida May 14, 2025
931077d
Update ubuntu version in azure pipeline (#3891)
vvolam May 21, 2025
0e8aa16
feat: support namespace arg for show bfd (#3885)
cyw233 May 22, 2025
291938d
feat: support namespace arg for show mac (#3873)
cyw233 May 22, 2025
98a15e2
[smartswitch] Fix incorrect reboot status check and improve debug log…
vvolam May 22, 2025
894db81
Addition of prober_type in config and show commands for muxcable (#3884)
harjotsinghpawra May 22, 2025
0beb33c
add TH5-512 hwsku into gcu support list (#3896)
sdszhang May 26, 2025
7aff27e
show command for icmp echo offload sessions (#3889)
manamand2020 May 27, 2025
7b19ce5
config: Modify AAA config commands to use pass_db decorator (#3755)
anders-nexthop May 29, 2025
c295f20
Fix warm-reboot script so it can be run via reboot DBus service (#3872)
jkmar May 29, 2025
b0f6f90
Issue #22407: ConfigReload fails when RADIUS statistics is enabled (#…
anders-nexthop May 30, 2025
f248b92
Upgrade portstat to support nonzero option and sort heterogeneous int…
BYGX-wcr Jun 2, 2025
d05a119
Add CLI show commands to view bgp network, neighbors and summary on p…
NavdhaJindal Jun 2, 2025
1d612ef
[Smartswitch][reboot] Addition of pre shutdown and post startup funct…
gpunathilell Jun 5, 2025
6a94350
Add version_202411_02 function (#3864)
benle7 Jun 9, 2025
4bcb8e4
[intfstat] Align output format between cached/non-cached scenarios (#…
YairRaviv Jun 9, 2025
64b77d1
[Mellanox] Collect sai.xml to sysdump (#3903)
ram25794 Jun 9, 2025
d8b3bcb
[gcu]: Add marvell-teralynx platform to gcu field validator (#3881)
rminnikanti Jun 10, 2025
764a74b
Support reboot cause: Kernel Panic - Out of memory (#3918)
byu343 Jun 12, 2025
9ae6ad4
[sfputil] Use host lane mask as part of rx-output enable/disable (#3911)
mihirpat1 Jun 13, 2025
4e892ed
[copp]: Added CoPP show configuration commands (#3863)
rminnikanti Jun 13, 2025
4753d3c
Skip checking offload flags for static routes/sids in route check and…
BYGX-wcr Jun 16, 2025
d533482
fix show cmd for bgp (#3922)
lipxu Jun 19, 2025
84fd523
[multi-asic] Fix the 'config reload' flow in case when multiple golde…
vhlushko-cisco Jun 20, 2025
bd0111d
feat: support specific BP port info for show int (#3926)
cyw233 Jun 23, 2025
67a3fd0
rebase
nmoray Jun 23, 2025
b1f8869
Added an option to set key_encrypt flag under TACPLUS table in CONFIG…
nmoray Jan 9, 2024
f4d7031
Integrated new security Cipher module
nmoray Jun 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 50 additions & 4 deletions config/aaa.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import click
import ipaddress
import re
import subprocess
from swsscommon.swsscommon import ConfigDBConnector
from .validated_config_db_connector import ValidatedConfigDBConnector
from jsonpatch import JsonPatchConflict
from jsonpointer import JsonPointerException
import utilities_common.cli as clicommon
from sonic_py_common.security_cipher import master_key_mgr

ADHOC_VALIDATION = True
RADIUS_MAXSERVERS = 8
RADIUS_PASSKEY_MAX_LEN = 65
VALID_CHARS_MSG = "Valid chars are ASCII printable except SPACE, '#', and ','"
TACACS_PASSKEY_MAX_LEN = 65
Copy link
Contributor

Choose a reason for hiding this comment

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

sonic-net/sonic-buildimage#17201 changes this limit to 256, do you want to change it here as well?

Copy link
Author

Choose a reason for hiding this comment

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

This is the length set for actual secret which is in plaintext. IMO, 65 chars are good enough.


secure_cipher = master_key_mgr()

def is_secret(secret):
return bool(re.match('^' + '[^ #,]*' + '$', secret))
Expand Down Expand Up @@ -234,13 +239,37 @@ def authtype(ctx, type):

@click.command()
@click.argument('secret', metavar='<secret_string>', required=False)
@click.option('-e', '--encrypt', help='Enable passkey encryption feature', is_flag=True)
@click.pass_context
def passkey(ctx, secret):
def passkey(ctx, secret, encrypt):
"""Specify TACACS+ server global passkey <STRING>"""
if ctx.obj == 'default':
del_table_key('TACPLUS', 'global', 'passkey')
Copy link
Contributor

Choose a reason for hiding this comment

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

do we need to reset key_encrypt here? On the one hand I don't think it will matter, since we always set key_encrypt correctly when a new passkey is added. But on the other, we don't really want to leave stale configuration hanging around without cause.

Copy link
Author

Choose a reason for hiding this comment

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

If the TACPLUS table itself is deleted, no need to worry about key_encrypt as it is part of the same table only.

elif secret:
add_table_kv('TACPLUS', 'global', 'passkey', secret)
if len(secret) > TACACS_PASSKEY_MAX_LEN:
click.echo('Maximum of %d chars can be configured' % TACACS_PASSKEY_MAX_LEN)
return
elif not is_secret(secret):
click.echo(VALID_CHARS_MSG)
return

if encrypt:
try:
passwd = getpass.getpass()
except Exception as e:
Copy link
Contributor

Choose a reason for hiding this comment

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

Exception

Please use specific exception type.

Copy link
Author

Choose a reason for hiding this comment

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

Is it okay to have following?

except (EOFError, KeyboardInterrupt):
    print("\nInput cancelled.")
    passwd = None
except Exception as e:
    print(f"Unexpected error: {e}")
    passwd = None

click.echo('getpass aborted' % e)
return
add_table_kv('TACPLUS', 'global', 'key_encrypt', True)
Copy link
Contributor

Choose a reason for hiding this comment

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

the value must be "true" and not a literal True (and also not "True"), look at yang boolean value handling for details

Copy link
Author

Choose a reason for hiding this comment

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

Are you saying it should be (t)rue? I just referred below.
add_table_kv('AAA', 'authentication', 'failthrough', True)

outsecret, errs = secure_cipher.encrypt_passkey('TACPLUS', secret, passwd)
if not errs:
add_table_kv('TACPLUS', 'global', 'passkey', outsecret)
else:
click.echo('Passkey configuration failed' % errs)
Copy link
Contributor

Choose a reason for hiding this comment

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

you need to add a string formatting operator here (%)

Copy link
Author

Choose a reason for hiding this comment

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

Agreed!

return
else:
add_table_kv('TACPLUS', 'global', 'key_encrypt', False)
Copy link
Contributor

Choose a reason for hiding this comment

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

same as above, the value must be "false" and not a literal False. "False" will work but not as intended, should stick with lowercase "false"

add_table_kv('TACPLUS', 'global', 'passkey', secret)
secure_cipher.del_cipher_pass()
Copy link
Contributor

Choose a reason for hiding this comment

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

this will delete the entire file, are we sure that's what you want?

Copy link
Contributor

Choose a reason for hiding this comment

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

This has been resolved, as the underlying key manager no longer deletes the whole file.

Copy link
Author

Choose a reason for hiding this comment

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

yeah.

else:
click.echo('Argument "secret" is required')
tacacs.add_command(passkey)
Expand All @@ -256,7 +285,8 @@ def passkey(ctx, secret):
@click.option('-o', '--port', help='TCP port range is 1 to 65535, default 49', type=click.IntRange(1, 65535), default=49)
@click.option('-p', '--pri', help="Priority, default 1", type=click.IntRange(1, 64), default=1)
@click.option('-m', '--use-mgmt-vrf', help="Management vrf, default is no vrf", is_flag=True)
def add(address, timeout, key, auth_type, port, pri, use_mgmt_vrf):
@click.option('-e', '--encrypt', help='Enable passkey encryption feature', is_flag=True)
Copy link
Contributor

Choose a reason for hiding this comment

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

encrypt

This command line extra option is confusing, why you want to change TACPLUS/global/key_encrypt in 2 command lines? do you want to encrypt other passkey if the 2 commands are both used but with different encrypt option?

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess the --key option allows the password to be set inline when first configuring tacacs (rather than as a separate passkey invocation. I think that the author is correct in adding something here to keep the behavior consistent, but it's for sure confusing to have two args related to the same thing.

Maybe instead of having --encrypt and having that modify the --key option, change the second option to be --encrypted-key and change the command to accept either option, but not both? so you can pass --key <some passkey> and keep the original behavior, or pass --encrypted-key and follow the steps to encrypt the key. The help strings should make the difference between the options clear, and they should probably be put one after the other in the arg list.

def add(address, timeout, key, auth_type, port, pri, use_mgmt_vrf, encrypt):
"""Specify a TACACS+ server"""
if ADHOC_VALIDATION:
if not clicommon.is_ipaddress(address):
Expand All @@ -278,7 +308,23 @@ def add(address, timeout, key, auth_type, port, pri, use_mgmt_vrf):
if timeout is not None:
data['timeout'] = str(timeout)
if key is not None:
data['passkey'] = key
if encrypt:
try:
passwd = getpass.getpass()
except Exception as e:
click.echo('getpass aborted' % e)
return
add_table_kv('TACPLUS', 'global', 'key_encrypt', True)
outsecret, errs = secure_cipher.encrypt_passkey('TACPLUS', key, passwd)
Copy link
Contributor

Choose a reason for hiding this comment

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

This won't work. Each TACPLUS server can have its own passkey, but we are only setting one global encryption password. If I configure two servers, the password for the second will override the first, and the first passkey will not be usable. Further, we are using the single global key_encrypt var for every server, so if a server is configured without it we will brick the others.

I can see two ways to resolve this. Either we can add a separate passkey for each server (which means extending the passkey manager to handle more than one TACACS key, and extend the yang model to have a key_encrypt value for each individual server), or we can enhance the logic of the cipherkey manager somewhat to re-use the same passkey for every TACACS server (we could make the 'passwd' arg of encrypt_passkey optional, and just use the existing passkey if it exists. we would then configure that only through the global cli command).

I guess a third option would be to make the passkey generation an explicit step, separate from the encryption. so instead of passing a passwd to encrypt_passkey() we would have a separate function add_cipher_password() which adds a password for a given feature, and then encrypt_passkey() would just use that configured password. We could add logic to call add_cipher_password() automatically the first time encrypt_passkey() is called for a feature, or maybe call it only when the global option changes.

Copy link
Author

@nmoray nmoray Jun 13, 2025

Choose a reason for hiding this comment

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

Is there any real production usecase where the user need different passkeys for different TACACS servers? IMO, better to have a single passkey across the servers. If so, it can easily be handled by making use of is_key_encrypt_enabled() API while configuring the passkey.

If the passkey is already encrypted while configuring the global TACACS configurations, we will check if it is already configured via is_key_encrypt_enabled() in add() function while configuring TACACS server level configs and vice versa.

This way, we can have a single FEATURE id for TACACS, RADIUS and so on. Let me know your thoughts on the same.

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure how widespread the use case is, but since the ability exists to have different passkeys for different servers I don't think we would want to get rid of that. However, I do think we could share the same cipherpass between servers, which is I think what you are suggesting here. That would work, and i see that is_key_encrypt_enabled() returns the cipherpass, so we can use that to pass to encrypt_passkey() (we might want to rename is_key_encrypt_enabled() func at some point to make it clear that it returns the cipherpass). Would it be better to move the getpass() logic to security_cipher code itself? and only prompt the user for the encryption password the first time the FEATURE id is used? That probably makes more sense if we are allowing a FEATURE id to be used by more than one caller, and it would be re-usable in that case as well.

Also, what about removing the cipherpass? Right now we always remove it whenever the feature is disabled, but that won't work if more than one caller is using the same cipherpass. We could keep a reference count, or check in the caller for any server/global tables and only remove the cipherpass if none are found (or at least none that have key_encrypt enabled). That seems a bit messy but is maybe the right approach. How else would we ever know to remove the cipherpass? Do we even need to get rid of a cipherpass for a feature once it's added? We do want to be able to rotate them if needed. what do you thinK?

Copy link
Author

@nmoray nmoray Jun 19, 2025

Choose a reason for hiding this comment

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

I am planning to have following design changes, let me know your thoughts on the same.

  • Every module who wants to use security Cipher application has to register with it first. As a part of registration, it has to specify the Feature type and a callback function which will further be used at the time of password rotation. This way, the security Cipher module will be having list of callbacks that needs to be called when a user wants to rotate the password. It's individual module's / application's job to implement that callback. The implementation would be, just re-encrypt and update the encrypted key in the respective CONFIG_DB tables. This way, we can have only one password per feature type and multiple modules can make use of same password for generating their unique encrypted key.
  • New API to set the password which will add a new password only if it is not already set.
  • Rotate API which will only be allowed to modify the existing password as it is having the ability to update the passkey (with re-encryption) in all the registered modules
  • Change the cipher_pass text file to a json file
  • Extend the cipher_pass to hold the list of callbacks per feature along with a password
    Something like,
{
  "RADIUS": {
    "callbacks": [
      "rotate_radius_server1_passkey",
      "rotate_radius_server2_passkey"
    ],
    "password": "TEST1"
  },
  "TACPLUS": {
    "callbacks": [
      "rotate_tacplus_global_passkey"
    ],
    "password": "TEST2"
  }
}

Copy link
Author

@nmoray nmoray Jun 19, 2025

Choose a reason for hiding this comment

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

@anders-nexthop Please refer to sonic-net/sonic-buildimage#22711 PR. Here I have updated the existing design to support both rotate feature as well as the support of reusability of same the password.

if not errs:
data['passkey'] = outsecret
else:
click.echo('Passkey configuration failed' % errs)
return
else:
add_table_kv('TACPLUS', 'global', 'key_encrypt', False)
data['passkey'] = key
secure_cipher.del_cipher_pass()
if use_mgmt_vrf :
data['vrf'] = "mgmt"
try:
Expand Down