From f3be34e4433bb86509044290fa3cced543697a31 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Thu, 19 Oct 2023 09:05:38 +0200 Subject: dhcp: api to enable client detect on interface DHCPv4 aka BOOTP is somewhat awkward. A DHCP client on an interface must receive DHCP packets to the broadcast address or to a unicast address. Apparently before it's been assigned to itself. Add this new API to allow external DHCP clients enable the DHCP client detect feature per interface. Type: improvement Change-Id: If55aac03f25a045496be483940e4f5e7e18885b9 Signed-off-by: Ole Troan --- src/plugins/dhcp/dhcp_api.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/plugins/dhcp/dhcp_api.c') diff --git a/src/plugins/dhcp/dhcp_api.c b/src/plugins/dhcp/dhcp_api.c index 91ee0aacf7a..19457a73358 100644 --- a/src/plugins/dhcp/dhcp_api.c +++ b/src/plugins/dhcp/dhcp_api.c @@ -645,6 +645,31 @@ call_dhcp6_reply_event_callbacks (void *data, return error; } +static void +vl_api_dhcp_client_detect_enable_disable_t_handler ( + vl_api_dhcp_client_detect_enable_disable_t *mp) +{ + vl_api_dhcp_client_detect_enable_disable_reply_t *rmp; + int rv = 0; + VALIDATE_SW_IF_INDEX (mp); + + if (mp->enable) + { + vnet_feature_enable_disable ("ip4-unicast", "ip4-dhcp-client-detect", + clib_net_to_host_u32 (mp->sw_if_index), + 1 /* enable */, 0, 0); + } + else + { + vnet_feature_enable_disable ("ip4-unicast", "ip4-dhcp-client-detect", + clib_net_to_host_u32 (mp->sw_if_index), + 0 /* disable */, 0, 0); + } + + BAD_SW_IF_INDEX_LABEL; + + REPLY_MACRO (VL_API_DHCP_CLIENT_DETECT_ENABLE_DISABLE_REPLY); +} static uword dhcp6_reply_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f) -- cgit 1.2.3-korg