X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Funix%2Ftuntap.c;h=50f02df9e828c904901faeca433f9b9b847e160a;hb=6ffb7c61899eb782416cbd2f117042a583f189f7;hp=d663d9698a0c47cacd1d015d944a800072bb226f;hpb=a3d5986a35743a3ca1020155bed8267b5246d155;p=vpp.git diff --git a/src/vnet/unix/tuntap.c b/src/vnet/unix/tuntap.c index d663d9698a0..50f02df9e82 100644 --- a/src/vnet/unix/tuntap.c +++ b/src/vnet/unix/tuntap.c @@ -166,7 +166,8 @@ tuntap_tx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) if (tm->is_ether && (!tm->have_normal_interface)) { vlib_buffer_reset (b); - clib_memcpy (vlib_buffer_get_current (b), tm->ether_dst_mac, 6); + clib_memcpy_fast (vlib_buffer_get_current (b), tm->ether_dst_mac, + 6); } /* Re-set iovecs if present. */ @@ -242,7 +243,7 @@ tuntap_rx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) tuntap_main_t *tm = &tuntap_main; vlib_buffer_t *b; u32 bi; - const uword buffer_size = VLIB_BUFFER_DATA_SIZE; + const uword buffer_size = vlib_buffer_get_default_data_size (vm); u16 thread_index = vm->thread_index; /** Make sure we have some RX buffers. */ @@ -377,11 +378,9 @@ tuntap_rx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) vlib_set_next_frame_buffer (vm, node, next_index, bi); - if (n_trace > 0) - { - vlib_trace_buffer (vm, node, next_index, b, /* follow_chain */ 1); - vlib_set_trace_count (vm, node, n_trace - 1); - } + if (PREDICT_FALSE (n_trace > 0 && vlib_trace_buffer (vm, node, next_index, b, /* follow_chain */ + 1))) + vlib_set_trace_count (vm, node, n_trace - 1); } return 1; @@ -397,6 +396,7 @@ static char *tuntap_rx_error_strings[] = { /* *INDENT-OFF* */ VLIB_REGISTER_NODE (tuntap_rx_node,static) = { .function = tuntap_rx, + .flags = VLIB_NODE_FLAG_TRACE_SUPPORTED, .name = "tuntap-rx", .sibling_of = "device-input", .type = VLIB_NODE_TYPE_INPUT, @@ -489,7 +489,7 @@ tuntap_config (vlib_main_t * vm, unformat_input_t * input) u8 *name; int flags = IFF_TUN | IFF_NO_PI; int is_enabled = 0, is_ether = 0, have_normal_interface = 0; - const uword buffer_size = VLIB_BUFFER_DATA_SIZE; + const uword buffer_size = vlib_buffer_get_default_data_size (vm); while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -626,7 +626,7 @@ tuntap_config (vlib_main_t * vm, unformat_input_t * input) goto done; } else - clib_memcpy (tm->ether_dst_mac, ifr.ifr_hwaddr.sa_data, 6); + clib_memcpy_fast (tm->ether_dst_mac, ifr.ifr_hwaddr.sa_data, 6); } if (have_normal_interface) @@ -665,6 +665,7 @@ tuntap_config (vlib_main_t * vm, unformat_input_t * input) clib_file_t template = { 0 }; template.read_function = tuntap_read_ready; template.file_descriptor = tm->dev_net_tun_fd; + template.description = format (0, "vnet tuntap"); tm->clib_file_index = clib_file_add (&file_main, &template); } @@ -721,7 +722,7 @@ tuntap_ip4_add_del_interface_address (ip4_main_t * im, /** See if we already know about this subif */ clib_memset (&subif_addr, 0, sizeof (subif_addr)); subif_addr.sw_if_index = sw_if_index; - clib_memcpy (&subif_addr.addr, address, sizeof (*address)); + clib_memcpy_fast (&subif_addr.addr, address, sizeof (*address)); p = mhash_get (&tm->subif_mhash, &subif_addr); @@ -753,7 +754,7 @@ tuntap_ip4_add_del_interface_address (ip4_main_t * im, /* Set ipv4 address, netmask. */ sin->sin_family = AF_INET; - clib_memcpy (&sin->sin_addr.s_addr, address, 4); + clib_memcpy_fast (&sin->sin_addr.s_addr, address, 4); if (ioctl (tm->dev_tap_fd, SIOCSIFADDR, &ifr) < 0) clib_unix_warning ("ioctl SIOCSIFADDR"); @@ -838,7 +839,7 @@ tuntap_ip6_add_del_interface_address (ip6_main_t * im, clib_memset (&subif_addr, 0, sizeof (subif_addr)); subif_addr.sw_if_index = sw_if_index; subif_addr.is_v6 = 1; - clib_memcpy (&subif_addr.addr, address, sizeof (*address)); + clib_memcpy_fast (&subif_addr.addr, address, sizeof (*address)); p = mhash_get (&tm->subif_mhash, &subif_addr); @@ -874,7 +875,7 @@ tuntap_ip6_add_del_interface_address (ip6_main_t * im, ifr6.ifr6_ifindex = ifr.ifr_ifindex; ifr6.ifr6_prefixlen = address_length; - clib_memcpy (&ifr6.ifr6_addr, address, 16); + clib_memcpy_fast (&ifr6.ifr6_addr, address, 16); if (ioctl (sockfd, SIOCSIFADDR, &ifr6) < 0) clib_unix_warning ("set address"); @@ -893,7 +894,7 @@ tuntap_ip6_add_del_interface_address (ip6_main_t * im, ifr6.ifr6_ifindex = ifr.ifr_ifindex; ifr6.ifr6_prefixlen = address_length; - clib_memcpy (&ifr6.ifr6_addr, address, 16); + clib_memcpy_fast (&ifr6.ifr6_addr, address, 16); if (ioctl (sockfd, SIOCDIFADDR, &ifr6) < 0) clib_unix_warning ("del address"); @@ -1010,7 +1011,6 @@ VNET_DEVICE_CLASS (tuntap_dev_class,static) = { static clib_error_t * tuntap_init (vlib_main_t * vm) { - clib_error_t *error; ip4_main_t *im4 = &ip4_main; ip6_main_t *im6 = &ip6_main; ip4_add_del_interface_address_callback_t cb4; @@ -1018,10 +1018,6 @@ tuntap_init (vlib_main_t * vm) tuntap_main_t *tm = &tuntap_main; vlib_thread_main_t *m = vlib_get_thread_main (); - error = vlib_call_init_function (vm, ip4_init); - if (error) - return error; - mhash_init (&tm->subif_mhash, sizeof (u32), sizeof (subif_address_t)); cb4.function = tuntap_ip4_add_del_interface_address; @@ -1037,7 +1033,12 @@ tuntap_init (vlib_main_t * vm) return 0; } -VLIB_INIT_FUNCTION (tuntap_init); +/* *INDENT-OFF* */ +VLIB_INIT_FUNCTION (tuntap_init) = +{ + .runs_after = VLIB_INITS("ip4_init"), +}; +/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON