diff options
Diffstat (limited to 'src/vnet/srv6/sr_api.c')
-rw-r--r-- | src/vnet/srv6/sr_api.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/vnet/srv6/sr_api.c b/src/vnet/srv6/sr_api.c index ffd0c4d0400..606eaa612ae 100644 --- a/src/vnet/srv6/sr_api.c +++ b/src/vnet/srv6/sr_api.c @@ -24,6 +24,7 @@ #include <vnet/interface.h> #include <vnet/api_errno.h> #include <vnet/feature/feature.h> +#include <vnet/fib/fib_table.h> #include <vnet/vnet_msg_enum.h> @@ -239,7 +240,16 @@ static void send_sr_localsid_details else clib_memcpy (rmp->xconnect_nh_addr6, &t->next_hop.ip6, sizeof (ip6_address_t)); - rmp->xconnect_iface_or_vrf_table = htonl (t->sw_if_index); + + if (t->behavior == SR_BEHAVIOR_T || t->behavior == SR_BEHAVIOR_DT6) + rmp->xconnect_iface_or_vrf_table = + htonl (fib_table_get_table_id (t->sw_if_index, FIB_PROTOCOL_IP6)); + else if (t->behavior == SR_BEHAVIOR_DT4) + rmp->xconnect_iface_or_vrf_table = + htonl (fib_table_get_table_id (t->sw_if_index, FIB_PROTOCOL_IP4)); + else + rmp->xconnect_iface_or_vrf_table = htonl (t->sw_if_index); + rmp->context = context; vl_api_send_msg (reg, (u8 *) rmp); |