-vl_api_ip6nd_proxy_add_del_t_handler (vl_api_ip6nd_proxy_add_del_t * mp)
-{
- vl_api_ip6nd_proxy_add_del_reply_t *rmp;
- int rv = 0;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- rv = ip6_neighbor_proxy_add_del (ntohl (mp->sw_if_index),
- (ip6_address_t *) mp->address, mp->is_del);
-
- BAD_SW_IF_INDEX_LABEL;
- REPLY_MACRO (VL_API_IP6ND_PROXY_ADD_DEL_REPLY);
-}
-
-static void
- vl_api_ip6nd_send_router_solicitation_t_handler
- (vl_api_ip6nd_send_router_solicitation_t * mp)
-{
- vl_api_ip6nd_send_router_solicitation_reply_t *rmp;
- icmp6_send_router_solicitation_params_t params;
- vlib_main_t *vm = vlib_get_main ();
- int rv = 0;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- BAD_SW_IF_INDEX_LABEL;
- REPLY_MACRO (VL_API_IP6ND_SEND_ROUTER_SOLICITATION_REPLY);
-
- if (rv != 0)
- return;
-
- params.irt = ntohl (mp->irt);
- params.mrt = ntohl (mp->mrt);
- params.mrc = ntohl (mp->mrc);
- params.mrd = ntohl (mp->mrd);
-
- icmp6_send_router_solicitation (vm, ntohl (mp->sw_if_index), mp->stop,
- ¶ms);
-}
-
-static void
- vl_api_sw_interface_ip6_enable_disable_t_handler
- (vl_api_sw_interface_ip6_enable_disable_t * mp)
-{
- vlib_main_t *vm = vlib_get_main ();
- vl_api_sw_interface_ip6_enable_disable_reply_t *rmp;
- vnet_main_t *vnm = vnet_get_main ();
- int rv = 0;
- clib_error_t *error;
-
- vnm->api_errno = 0;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- error =
- (mp->enable == 1) ? enable_ip6_interface (vm,
- ntohl (mp->sw_if_index)) :
- disable_ip6_interface (vm, ntohl (mp->sw_if_index));
-
- if (error)
- {
- clib_error_report (error);
- rv = VNET_API_ERROR_UNSPECIFIED;
- }
- else
- {
- rv = vnm->api_errno;
- }
-
- BAD_SW_IF_INDEX_LABEL;
-
- REPLY_MACRO (VL_API_SW_INTERFACE_IP6_ENABLE_DISABLE_REPLY);
-}
-
-static void
- vl_api_sw_interface_ip6_set_link_local_address_t_handler
- (vl_api_sw_interface_ip6_set_link_local_address_t * mp)
-{
- vlib_main_t *vm = vlib_get_main ();
- vl_api_sw_interface_ip6_set_link_local_address_reply_t *rmp;
- int rv = 0;
- clib_error_t *error;
- vnet_main_t *vnm = vnet_get_main ();
-
- vnm->api_errno = 0;
-
- VALIDATE_SW_IF_INDEX (mp);
-
- error = set_ip6_link_local_address (vm,
- ntohl (mp->sw_if_index),
- (ip6_address_t *) mp->address);
- if (error)
- {
- clib_error_report (error);
- rv = VNET_API_ERROR_UNSPECIFIED;
- }
- else
- {
- rv = vnm->api_errno;
- }
-
- BAD_SW_IF_INDEX_LABEL;
-
- REPLY_MACRO (VL_API_SW_INTERFACE_IP6_SET_LINK_LOCAL_ADDRESS_REPLY);
-}
-
-void
-vl_mfib_signal_send_one (vl_api_registration_t * reg,
- u32 context, const mfib_signal_t * mfs)
-{
- vl_api_mfib_signal_details_t *mp;
- mfib_prefix_t prefix;
- mfib_table_t *mfib;
- mfib_itf_t *mfi;
-
- mp = vl_msg_api_alloc (sizeof (*mp));
-
- memset (mp, 0, sizeof (*mp));
- mp->_vl_msg_id = ntohs (VL_API_MFIB_SIGNAL_DETAILS);
- mp->context = context;
-
- mfi = mfib_itf_get (mfs->mfs_itf);
- mfib_entry_get_prefix (mfs->mfs_entry, &prefix);
- mfib = mfib_table_get (mfib_entry_get_fib_index (mfs->mfs_entry),
- prefix.fp_proto);
- mp->table_id = ntohl (mfib->mft_table_id);
- mp->sw_if_index = ntohl (mfi->mfi_sw_if_index);
-
- if (FIB_PROTOCOL_IP4 == prefix.fp_proto)
- {
- mp->grp_address_len = ntohs (prefix.fp_len);
-
- memcpy (mp->grp_address, &prefix.fp_grp_addr.ip4, 4);
- if (prefix.fp_len > 32)
- {
- memcpy (mp->src_address, &prefix.fp_src_addr.ip4, 4);
- }
- }
- else
- {
- mp->grp_address_len = ntohs (prefix.fp_len);
-
- ASSERT (0);
- }
-
- if (0 != mfs->mfs_buffer_len)
- {
- mp->ip_packet_len = ntohs (mfs->mfs_buffer_len);
-
- memcpy (mp->ip_packet_data, mfs->mfs_buffer, mfs->mfs_buffer_len);
- }
- else
- {
- mp->ip_packet_len = 0;
- }
-
- vl_api_send_msg (reg, (u8 *) mp);
-}
-
-static void
-vl_api_mfib_signal_dump_t_handler (vl_api_mfib_signal_dump_t * mp)