X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fapi_format.c;h=f107246774cd8188475aa1f0a20e7840dca91185;hb=97d54ed43eb69f6ea731c02305ebe0ca0b1a5cc4;hp=d9a9d2238040e9b454dd668efdb7942b8eaa4b74;hpb=3a9f11e6d93c9839c7bb0aaa62662299165123d8;p=vpp.git diff --git a/src/vat/api_format.c b/src/vat/api_format.c index d9a9d223804..f107246774c 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -7429,6 +7429,7 @@ api_tap_create_v2 (vat_main_t * vam) { unformat_input_t *i = vam->input; vl_api_tap_create_v2_t *mp; +#define TAP_FLAG_GSO (1 << 0) u8 mac_address[6]; u8 random_mac = 1; u32 id = ~0; @@ -7445,6 +7446,9 @@ api_tap_create_v2 (vat_main_t * vam) ip6_address_t host_ip6_gw; u8 host_ip6_gw_set = 0; u32 host_ip6_prefix_len = 0; + u8 host_mtu_set = 0; + u32 host_mtu_size = 0; + u32 tap_flags = 0; int ret; u32 rx_ring_sz = 0, tx_ring_sz = 0; @@ -7484,6 +7488,12 @@ api_tap_create_v2 (vat_main_t * vam) ; else if (unformat (i, "tx-ring-size %d", &tx_ring_sz)) ; + else if (unformat (i, "host-mtu-size %d", &host_mtu_size)) + host_mtu_set = 1; + else if (unformat (i, "no-gso")) + tap_flags &= ~TAP_FLAG_GSO; + else if (unformat (i, "gso")) + tap_flags |= TAP_FLAG_GSO; else break; } @@ -7533,6 +7543,11 @@ api_tap_create_v2 (vat_main_t * vam) errmsg ("tx ring size must be 32768 or lower. "); return -99; } + if (host_mtu_set && (host_mtu_size < 64 || host_mtu_size > 65355)) + { + errmsg ("host MTU size must be in between 64 and 65355. "); + return -99; + } /* Construct the API message */ M (TAP_CREATE_V2, mp); @@ -7546,6 +7561,9 @@ api_tap_create_v2 (vat_main_t * vam) mp->host_ip6_addr_set = host_ip6_prefix_len != 0; mp->rx_ring_sz = ntohs (rx_ring_sz); mp->tx_ring_sz = ntohs (tx_ring_sz); + mp->host_mtu_set = host_mtu_set; + mp->host_mtu_size = ntohl (host_mtu_size); + mp->tap_flags = ntohl (tap_flags); if (random_mac == 0) clib_memcpy (mp->mac_address, mac_address, 6); @@ -21843,7 +21861,7 @@ _(l2_flags, \ _(bridge_flags, \ "bd_id [learn] [forward] [uu-flood] [flood] [arp-term] [disable]\n") \ _(tap_create_v2, \ - "id [hw-addr ] [host-ns ] [rx-ring-size [tx-ring-size ]") \ + "id [hw-addr ] [host-ns ] [rx-ring-size [tx-ring-size ] [host-mtu-size ] [gso | no-gso]") \ _(tap_delete_v2, \ " | sw_if_index ") \ _(sw_interface_tap_v2_dump, "") \