Skip to content

show dhcp_server ipv4 info failed if gateway is not present#24801

Merged
yxieca merged 4 commits intosonic-net:masterfrom
yue-fred-gao:show_dhcp_wo_gateway
Dec 15, 2025
Merged

show dhcp_server ipv4 info failed if gateway is not present#24801
yxieca merged 4 commits intosonic-net:masterfrom
yue-fred-gao:show_dhcp_wo_gateway

Conversation

@yue-fred-gao
Copy link
Contributor

@yue-fred-gao yue-fred-gao commented Dec 10, 2025

Why I did it

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See #24495 (comment).

if gateway is not set, show dhcp_server ipv4 info failed.
Traceback (most recent call last):
File "/usr/local/bin/show", line 8, in
sys.exit(cli())
^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 764, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/show/plugins/dhcp-server.py", line 113, in info
table.append([interface, entry["mode"], entry["gateway"], entry["netmask"], entry["lease_time"], entry["state"]])
~~~~~^^^^^^^^^^^
KeyError: 'gateway'

Work item tracking
  • Microsoft ADO (number only):

How I did it

If gateway is not present, use empty string instead.

How to verify it

run the command when gateway is not present
+-----------------+--------+-----------+---------------+-----------------+---------+ | Interface | Mode | Gateway | Netmask | Lease Time(s) | State | +=================+========+===========+===============+=================+=========+ | bridge-midplane | PORT | | 255.255.255.0 | 600000000 | enabled | +-----------------+--------+-----------+---------------+-----------------+---------+

Which release branch to backport (provide reason below if selected)

  • 202205
  • 202211
  • 202305
  • 202311
  • 202405
  • 202411
  • 202505

Tested branch (Please provide the tested image version)

master

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

Signed-off-by: Yue Gao <yuega2@cisco.com>
@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@yue-fred-gao
Copy link
Contributor Author

@prabhataravind , please review

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link
Collaborator

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@yxieca
Copy link
Contributor

yxieca commented Dec 15, 2025

@yue-fred-gao @Blueve what is the use case for having an empty default gw but valid network mask?

@yue-fred-gao
Copy link
Contributor Author

@yue-fred-gao @Blueve what is the use case for having an empty default gw but valid network mask?

hi @yxieca, default gateway only affects default route installing in dhcp clients. It doesn't affect dhcp network and subnet. The network comes from interfaces where DHCP are configured, not gateway. See

"network": ipaddress.ip_network(mid_plane["ip_prefix"], strict=False),
. So without gateway, it can still offer DHCP address to clients but not offering default route over the gateway. Clients can configure its default route in other ways.

@yxieca yxieca merged commit e1236d8 into sonic-net:master Dec 15, 2025
23 checks passed
hdwhdw pushed a commit to hdwhdw/sonic-buildimage that referenced this pull request Dec 18, 2025
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: Dawei Huang <daweihuang@microsoft.com>
xwjiang-ms pushed a commit to xwjiang-ms/sonic-buildimage that referenced this pull request Dec 22, 2025
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: xiaweijiang <xiaweijiang@microsoft.com>
jasonbridges pushed a commit to jasonbridges/sonic-buildimage that referenced this pull request Jan 22, 2026
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
@mssonicbld
Copy link
Collaborator

Cherry-pick PR to 202511: #25495

FengPan-Frank pushed a commit to FengPan-Frank/sonic-buildimage that referenced this pull request Mar 6, 2026
)

gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See sonic-net#24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: Feng Pan <fenpan@microsoft.com>
@yue-fred-gao yue-fred-gao deleted the show_dhcp_wo_gateway branch March 16, 2026 19:07
dprital pushed a commit that referenced this pull request Mar 19, 2026
gateway is optional field. In smartswitch use case, dhcp server runs in the switch and is used to offer addresses to DPU midplane. But we don't want to install default route over the midplane interface so gateway option is removed from DHCP server config. See #24495 (comment).

Signed-off-by: Yue Gao <yuega2@cisco.com>
Signed-off-by: dprital <drorp@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants