diff options
Diffstat (limited to 'src/vnet/srv6')
-rw-r--r-- | src/vnet/srv6/sr_api.c | 12 | ||||
-rwxr-xr-x | src/vnet/srv6/sr_localsid.c | 11 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/vnet/srv6/sr_api.c b/src/vnet/srv6/sr_api.c index 32eff2ef5e5..0b083d5c7e3 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> @@ -223,7 +224,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); diff --git a/src/vnet/srv6/sr_localsid.c b/src/vnet/srv6/sr_localsid.c index c592f797d1c..ffd08ca1528 100755 --- a/src/vnet/srv6/sr_localsid.c +++ b/src/vnet/srv6/sr_localsid.c @@ -474,7 +474,9 @@ show_sr_localsid_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_output (vm, "\tAddress: \t%U\n\tBehavior: \tT (Endpoint with specific IPv6 table lookup)" "\n\tTable: \t%u", - format_ip6_address, &ls->localsid, ls->vrf_index); + format_ip6_address, &ls->localsid, + fib_table_get_table_id (ls->vrf_index, + FIB_PROTOCOL_IP6)); break; case SR_BEHAVIOR_DX4: vlib_cli_output (vm, @@ -507,13 +509,16 @@ show_sr_localsid_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_output (vm, "\tAddress: \t%U\n\tBehavior: \tDT6 (Endpoint with decapsulation and specific IPv6 table lookup)" "\n\tTable: %u", format_ip6_address, &ls->localsid, - ls->vrf_index); + fib_table_get_table_id (ls->vrf_index, + FIB_PROTOCOL_IP6)); break; case SR_BEHAVIOR_DT4: vlib_cli_output (vm, "\tAddress: \t%U\n\tBehavior: \tDT4 (Endpoint with decapsulation and specific IPv4 table lookup)" "\n\tTable: \t%u", format_ip6_address, - &ls->localsid, ls->vrf_index); + &ls->localsid, + fib_table_get_table_id (ls->vrf_index, + FIB_PROTOCOL_IP4)); break; default: if (ls->behavior >= SR_BEHAVIOR_LAST) |