From 754f24b35946021bb5e648c2bbf772791afe6e20 Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Mon, 7 Jan 2019 20:56:46 +0100 Subject: [PATCH] tapv2: add "tap_flags" field to the TAPv2 interface API Change-Id: I26f99d95f52c9fe107d17dcbbf5c6185523beade Signed-off-by: Andrew Yourtchenko --- src/vat/api_format.c | 5 +++-- src/vnet/devices/tap/tap.h | 2 ++ src/vnet/devices/tap/tapv2.api | 3 +++ src/vnet/devices/tap/tapv2_api.c | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vat/api_format.c b/src/vat/api_format.c index db22f29148f..1b61af6226a 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -12713,11 +12713,11 @@ static void vl_api_sw_interface_tap_v2_details_t_handler mp->host_ip6_prefix_len); print (vam->ofp, - "\n%-16s %-12d %-5d %-12d %-12d %-14U %-30s %-20s %-20s %-30s", + "\n%-16s %-12d %-5d %-12d %-12d %-14U %-30s %-20s %-20s %-30s 0x%-08x", mp->dev_name, ntohl (mp->sw_if_index), ntohl (mp->id), ntohs (mp->rx_ring_sz), ntohs (mp->tx_ring_sz), format_ethernet_address, mp->host_mac_addr, mp->host_namespace, - mp->host_bridge, ip4, ip6); + mp->host_bridge, ip4, ip6, ntohl (mp->tap_flags)); vec_free (ip4); vec_free (ip6); @@ -12739,6 +12739,7 @@ static void vl_api_sw_interface_tap_v2_details_t_handler_json vat_json_init_object (node); vat_json_object_add_uint (node, "id", ntohl (mp->id)); vat_json_object_add_uint (node, "sw_if_index", ntohl (mp->sw_if_index)); + vat_json_object_add_uint (node, "tap_flags", ntohl (mp->tap_flags)); vat_json_object_add_string_copy (node, "dev_name", mp->dev_name); vat_json_object_add_uint (node, "rx_ring_sz", ntohs (mp->rx_ring_sz)); vat_json_object_add_uint (node, "tx_ring_sz", ntohs (mp->tx_ring_sz)); diff --git a/src/vnet/devices/tap/tap.h b/src/vnet/devices/tap/tap.h index 7aebade59c7..19dc88dd7c6 100644 --- a/src/vnet/devices/tap/tap.h +++ b/src/vnet/devices/tap/tap.h @@ -29,6 +29,7 @@ typedef struct u8 mac_addr[6]; u16 rx_ring_sz; u16 tx_ring_sz; + u32 tap_flags; u8 *host_namespace; u8 *host_if_name; u8 host_mac_addr[6]; @@ -52,6 +53,7 @@ typedef struct { u32 id; u32 sw_if_index; + u32 tap_flags; u8 dev_name[64]; u16 tx_ring_sz; u16 rx_ring_sz; diff --git a/src/vnet/devices/tap/tapv2.api b/src/vnet/devices/tap/tapv2.api index e65102ce777..fb90483efbe 100644 --- a/src/vnet/devices/tap/tapv2.api +++ b/src/vnet/devices/tap/tapv2.api @@ -47,6 +47,7 @@ option version = "2.0.0"; @param host_ip4_gw - host IPv4 default gateway @param host_ip6_gw_set - host IPv6 default gateway should be set @param host_ip6_gw - host IPv6 default gateway + @param tap_flags - flags for the TAP interface creation */ define tap_create_v2 { @@ -76,6 +77,7 @@ define tap_create_v2 u8 host_ip6_gw_set; u8 host_ip6_gw[16]; u8 tag[64]; + u32 tap_flags; }; /** \brief Reply for tap create reply @@ -140,6 +142,7 @@ define sw_interface_tap_v2_details u8 host_ip4_prefix_len; u8 host_ip6_addr[16]; u8 host_ip6_prefix_len; + u32 tap_flags; }; /* diff --git a/src/vnet/devices/tap/tapv2_api.c b/src/vnet/devices/tap/tapv2_api.c index e70d63f914f..1260afdd24f 100644 --- a/src/vnet/devices/tap/tapv2_api.c +++ b/src/vnet/devices/tap/tapv2_api.c @@ -109,6 +109,8 @@ vl_api_tap_create_v2_t_handler (vl_api_tap_create_v2_t * mp) ap->host_ip6_gw_set = 1; } + ap->tap_flags = ntohl (mp->tap_flags); + tap_create_if (vm, ap); reg = vl_api_client_index_to_registration (mp->client_index); @@ -194,6 +196,7 @@ tap_send_sw_interface_details (vpe_api_main_t * am, mp->_vl_msg_id = htons (VL_API_SW_INTERFACE_TAP_V2_DETAILS); mp->id = htonl (tap_if->id); mp->sw_if_index = htonl (tap_if->sw_if_index); + mp->tap_flags = htonl (tap_if->tap_flags); clib_memcpy (mp->dev_name, tap_if->dev_name, MIN (ARRAY_LEN (mp->dev_name) - 1, strlen ((const char *) tap_if->dev_name))); -- 2.16.6