From 13e6fce7c5b3a16a6af0b27fc259ef3f65d8c861 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelsalam Date: Sun, 8 Dec 2019 12:58:27 +0100 Subject: [PATCH] sr: some fixes for SRv6 CLI/API Return FIB table_id instead of vrf_index to clients Type: fix Signed-off-by: Ahmed Abdelsalam Change-Id: I76a97bad3ecd3ac8eb045efb1657eaa90c2a57b6 --- src/vnet/srv6/sr_api.c | 12 +++++++++++- 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 ffd0c4d0400..606eaa612ae 100644 --- a/src/vnet/srv6/sr_api.c +++ b/src/vnet/srv6/sr_api.c @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -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); diff --git a/src/vnet/srv6/sr_localsid.c b/src/vnet/srv6/sr_localsid.c index 05651bb1857..79e4c2af00e 100755 --- a/src/vnet/srv6/sr_localsid.c +++ b/src/vnet/srv6/sr_localsid.c @@ -504,7 +504,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, @@ -537,13 +539,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) -- 2.16.6