clib_memcpy (client_src_mac, e_h0->src_address, 6);
- switch (h0->u.msg_type)
+ switch (h0->msg_type)
{
case DHCPV6_MSG_SOLICIT:
case DHCPV6_MSG_REQUEST:
r1->hop_count++;
r1->hop_count =
- (h0->u.msg_type != DHCPV6_MSG_RELAY_FORW) ? 0 : r1->hop_count;
+ (h0->msg_type != DHCPV6_MSG_RELAY_FORW) ? 0 : r1->hop_count;
if (PREDICT_FALSE (r1->hop_count >= HOP_COUNT_LIMIT))
{
/* If relay-fwd and src address is site or global unicast address */
- if (h0->u.msg_type == DHCPV6_MSG_RELAY_FORW &&
+ if (h0->msg_type == DHCPV6_MSG_RELAY_FORW &&
((ip0->src_address.as_u8[0] & 0xe0) == 0x20 ||
(ip0->src_address.as_u8[0] & 0xfe) == 0xfc))
{
id1->int_idx = clib_host_to_net_u32 (rx_sw_if_index);
u1->length = 0;
- if (h0->u.msg_type != DHCPV6_MSG_RELAY_FORW)
+ if (h0->msg_type != DHCPV6_MSG_RELAY_FORW)
{
cmac =
(dhcpv6_client_mac_t *) (((uword) ip1) + b0->current_length);
sizeof (*r1) + sizeof (*fwd_opt) +
sizeof (*u1) + sizeof (*id1) + u1->length);
- memset (ip1, 0, sizeof (*ip1));
+ clib_memset (ip1, 0, sizeof (*ip1));
ip1->ip_version_traffic_class_and_flow_label = 0x60;
ip1->payload_length = u1->length;
ip1->protocol = PROTO_UDP;
next0 = DHCPV6_PROXY_TO_SERVER_INPUT_NEXT_LOOKUP;
- is_solicit = (DHCPV6_MSG_SOLICIT == h0->u.msg_type);
+ is_solicit = (DHCPV6_MSG_SOLICIT == h0->msg_type);
/*
* If we have multiple servers configured and this is the
u32 ci0;
c0 = vlib_buffer_copy (vm, b0);
+ vlib_buffer_copy_trace_flag (vm, c0, bi0);
+ VLIB_BUFFER_TRACE_TRAJECTORY_INIT (c0);
ci0 = vlib_get_buffer_index (vm, c0);
server = &proxy->dhcp_servers[ii];
{
u32 n_left_from, *from;
- ethernet_main_t *em = ethernet_get_main (vm);
+ ethernet_main_t *em = vnet_get_ethernet_main ();
dhcp_proxy_main_t *dm = &dhcp_proxy_main;
dhcp_proxy_t *proxy;
dhcp_server_t *server;
}
len = clib_net_to_host_u16 (r0->length);
- memset (ip1, 0, sizeof (*ip1));
+ clib_memset (ip1, 0, sizeof (*ip1));
copy_ip6_address (&ip1->dst_address, &client_address);
u1->checksum = 0;
u1->src_port = clib_net_to_host_u16 (UDP_DST_PORT_dhcpv6_to_server);
hi0 = vnet_get_sup_hw_interface (vnm, original_sw_if_index);
ei0 = pool_elt_at_index (em->interfaces, hi0->hw_instance);
clib_memcpy (mac0->src_address, ei0->address, sizeof (ei0->address));
- memset (&mac0->dst_address, 0xff, sizeof (mac0->dst_address));
+ clib_memset (&mac0->dst_address, 0xff, sizeof (mac0->dst_address));
mac0->type = (si0->type == VNET_SW_INTERFACE_TYPE_SUB) ?
clib_net_to_host_u16 (0x8100) : clib_net_to_host_u16 (0x86dd);
all_dhcpv6_server_relay_agent_address.as_u64[1] =
clib_host_to_net_u64 (0x00010002);
- udp_register_dst_port (vm, UDP_DST_PORT_dhcpv6_to_client,
- dhcpv6_proxy_to_client_node.index, 0 /* is_ip6 */ );
-
- udp_register_dst_port (vm, UDP_DST_PORT_dhcpv6_to_server,
- dhcpv6_proxy_to_server_node.index, 0 /* is_ip6 */ );
-
return 0;
}
ip46_address_t * src_addr,
u32 rx_table_id, u32 server_table_id, int is_del)
{
+ vlib_main_t *vm = vlib_get_main ();
u32 rx_fib_index = 0;
int rc = 0;
&all_dhcp_servers, MFIB_SOURCE_DHCP);
mfib_table_unlock (rx_fib_index, FIB_PROTOCOL_IP6,
MFIB_SOURCE_DHCP);
+
+ udp_unregister_dst_port (vm, UDP_DST_PORT_dhcpv6_to_client,
+ 0 /* is_ip6 */ );
+ udp_unregister_dst_port (vm, UDP_DST_PORT_dhcpv6_to_server,
+ 0 /* is_ip6 */ );
}
}
else
MFIB_RPF_ID_NONE,
MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF);
mfib_table_lock (rx_fib_index, FIB_PROTOCOL_IP6, MFIB_SOURCE_DHCP);
+
+ udp_register_dst_port (vm, UDP_DST_PORT_dhcpv6_to_client,
+ dhcpv6_proxy_to_client_node.index,
+ 0 /* is_ip6 */ );
+ udp_register_dst_port (vm, UDP_DST_PORT_dhcpv6_to_server,
+ dhcpv6_proxy_to_server_node.index,
+ 0 /* is_ip6 */ );
}
}