-static int
-api_ip_probe_neighbor (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ip_probe_neighbor_t *mp;
- vl_api_address_t dst_adr = { };
- u8 int_set = 0;
- u8 adr_set = 0;
- u32 sw_if_index;
- int ret;
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "%U", api_unformat_sw_if_index, vam, &sw_if_index))
- int_set = 1;
- else if (unformat (i, "sw_if_index %d", &sw_if_index))
- int_set = 1;
- else if (unformat (i, "address %U", unformat_vl_api_address, &dst_adr))
- adr_set = 1;
- else
- break;
- }
-
- if (int_set == 0)
- {
- errmsg ("missing interface");
- return -99;
- }
-
- if (adr_set == 0)
- {
- errmsg ("missing addresses");
- return -99;
- }
-
- M (IP_PROBE_NEIGHBOR, mp);
-
- mp->sw_if_index = ntohl (sw_if_index);
- clib_memcpy (&mp->dst, &dst_adr, sizeof (dst_adr));
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_ip_scan_neighbor_enable_disable (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ip_scan_neighbor_enable_disable_t *mp;
- u8 mode = IP_SCAN_V46_NEIGHBORS;
- u32 interval = 0, time = 0, update = 0, delay = 0, stale = 0;
- int ret;
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "ip4"))
- mode = IP_SCAN_V4_NEIGHBORS;
- else if (unformat (i, "ip6"))
- mode = IP_SCAN_V6_NEIGHBORS;
- if (unformat (i, "both"))
- mode = IP_SCAN_V46_NEIGHBORS;
- else if (unformat (i, "disable"))
- mode = IP_SCAN_DISABLED;
- else if (unformat (i, "interval %d", &interval))
- ;
- else if (unformat (i, "max-time %d", &time))
- ;
- else if (unformat (i, "max-update %d", &update))
- ;
- else if (unformat (i, "delay %d", &delay))
- ;
- else if (unformat (i, "stale %d", &stale))
- ;
- else
- break;
- }
-
- if (interval > 255)
- {
- errmsg ("interval cannot exceed 255 minutes.");
- return -99;
- }
- if (time > 255)
- {
- errmsg ("max-time cannot exceed 255 usec.");
- return -99;
- }
- if (update > 255)
- {
- errmsg ("max-update cannot exceed 255.");
- return -99;
- }
- if (delay > 255)
- {
- errmsg ("delay cannot exceed 255 msec.");
- return -99;
- }
- if (stale > 255)
- {
- errmsg ("stale cannot exceed 255 minutes.");
- return -99;
- }
-
- M (IP_SCAN_NEIGHBOR_ENABLE_DISABLE, mp);
- mp->mode = mode;
- mp->scan_interval = interval;
- mp->max_proc_time = time;
- mp->max_update = update;
- mp->scan_int_delay = delay;
- mp->stale_threshold = stale;
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_want_ip4_arp_events (vat_main_t * vam)
-{
- unformat_input_t *line_input = vam->input;
- vl_api_want_ip4_arp_events_t *mp;
- ip4_address_t address;
- int address_set = 0;
- u32 enable_disable = 1;
- int ret;
-
- while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (line_input, "address %U", unformat_ip4_address, &address))
- address_set = 1;
- else if (unformat (line_input, "del"))
- enable_disable = 0;
- else
- break;
- }
-
- if (address_set == 0)
- {
- errmsg ("missing addresses");
- return -99;
- }
-
- M (WANT_IP4_ARP_EVENTS, mp);
- mp->enable_disable = enable_disable;
- mp->pid = htonl (getpid ());
- clib_memcpy (mp->ip, &address, sizeof (address));
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_want_ip6_nd_events (vat_main_t * vam)
-{
- unformat_input_t *line_input = vam->input;
- vl_api_want_ip6_nd_events_t *mp;
- vl_api_ip6_address_t address;
- int address_set = 0;
- u32 enable_disable = 1;
- int ret;
-
- while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat
- (line_input, "address %U", unformat_vl_api_ip6_address, &address))
- address_set = 1;
- else if (unformat (line_input, "del"))
- enable_disable = 0;
- else
- break;
- }
-
- if (address_set == 0)
- {
- errmsg ("missing addresses");
- return -99;
- }
-
- M (WANT_IP6_ND_EVENTS, mp);
- mp->enable_disable = enable_disable;
- mp->pid = htonl (getpid ());
- clib_memcpy (&mp->ip, &address, sizeof (address));
-
- S (mp);
- W (ret);
- return ret;
-}
-