+void
+dhcp_maybe_register_udp_ports (dhcp_port_reg_flags_t ports)
+{
+ dhcp_proxy_main_t *dm = &dhcp_proxy_main;
+ vlib_main_t *vm = dm->vlib_main;
+ int port_regs_diff = dm->udp_ports_registered ^ ports;
+
+ if (!port_regs_diff)
+ return;
+
+ if ((port_regs_diff & DHCP_PORT_REG_CLIENT) & ports)
+ udp_register_dst_port (vm, UDP_DST_PORT_dhcp_to_client,
+ dhcp_proxy_to_client_node.index, 1 /* is_ip4 */ );
+
+ if ((port_regs_diff & DHCP_PORT_REG_SERVER) & ports)
+ udp_register_dst_port (vm, UDP_DST_PORT_dhcp_to_server,
+ dhcp_proxy_to_server_node.index, 1 /* is_ip4 */ );
+
+ dm->udp_ports_registered |= ports;
+}
+