-u8 *
-format_ip_punt_redirect (u8 * s, va_list * args)
-{
- ip_punt_redirect_t *cfg = va_arg (*args, ip_punt_redirect_t *);
- ip_punt_redirect_rx_t *rx;
- u32 rx_sw_if_index;
- vnet_main_t *vnm = vnet_get_main ();
-
- vec_foreach_index (rx_sw_if_index, cfg->redirect_by_rx_sw_if_index)
- {
- rx = &cfg->redirect_by_rx_sw_if_index[rx_sw_if_index];
- if (~0 != rx->tx_sw_if_index)
- {
- s = format (s, " rx %U redirect via %U %U\n",
- format_vnet_sw_interface_name, vnm,
- vnet_get_sw_interface (vnm, rx_sw_if_index),
- format_ip46_address, &rx->nh, IP46_TYPE_ANY,
- format_vnet_sw_interface_name, vnm,
- vnet_get_sw_interface (vnm, rx->tx_sw_if_index));
- }
- }
- if (~0 != cfg->any_rx_sw_if_index.tx_sw_if_index)
- {
- s = format (s, " rx all redirect via %U %U\n",
- format_ip46_address, &cfg->any_rx_sw_if_index.nh,
- IP46_TYPE_ANY, format_vnet_sw_interface_name, vnm,
- vnet_get_sw_interface (vnm,
- cfg->
- any_rx_sw_if_index.tx_sw_if_index));
- }
-
- return (s);
-}
-
-ip_punt_redirect_detail_t *
-ip4_punt_redirect_entries (u32 sw_if_index)
-{
- ip_punt_redirect_rx_t *pr;
- ip_punt_redirect_detail_t *prs = 0;
- u32 rx_sw_if_index;
-
- vec_foreach_index (rx_sw_if_index,
- ip4_punt_redirect_cfg.redirect_by_rx_sw_if_index)
- {
- if (sw_if_index == ~0 || sw_if_index == rx_sw_if_index)
- {
- pr =
- &ip4_punt_redirect_cfg.redirect_by_rx_sw_if_index[rx_sw_if_index];
- if (~0 != pr->tx_sw_if_index)
- {
- ip_punt_redirect_detail_t detail = {.rx_sw_if_index =
- rx_sw_if_index,
- .punt_redirect = *pr
- };
- vec_add1 (prs, detail);
- }
- }
- }
- if (~0 != ip4_punt_redirect_cfg.any_rx_sw_if_index.tx_sw_if_index)
- {
- pr = &ip4_punt_redirect_cfg.any_rx_sw_if_index;
- ip_punt_redirect_detail_t detail = {.rx_sw_if_index = ~0,
- .punt_redirect = *pr
- };
- vec_add1 (prs, detail);
- }
-
- return prs;
-}
-