summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/snat/in2out.c8
-rw-r--r--src/plugins/snat/out2in.c8
-rw-r--r--src/vnet/devices/virtio/vhost-user.c8
-rw-r--r--src/vnet/unix/tapcli.c5
-rw-r--r--src/vpp/api/api_main.c10
-rw-r--r--src/vppinfra/bihash_template.c11
6 files changed, 32 insertions, 18 deletions
diff --git a/src/plugins/snat/in2out.c b/src/plugins/snat/in2out.c
index 76a6a12cec5..ba752cf0d41 100644
--- a/src/plugins/snat/in2out.c
+++ b/src/plugins/snat/in2out.c
@@ -1232,8 +1232,12 @@ snat_in2out_worker_handoff_fn (vlib_main_t * vm,
if (clib_bihash_search_8_8 (&sm->worker_by_in, &kv0, &value0))
{
/* No, assign next available worker (RR) */
- next_worker_index = sm->first_worker_index +
- sm->workers[sm->next_worker++ % vec_len (sm->workers)];
+ next_worker_index = sm->first_worker_index;
+ if (vec_len (sm->workers))
+ {
+ next_worker_index +=
+ sm->workers[sm->next_worker++ % _vec_len (sm->workers)];
+ }
/* add non-traslated packets worker lookup */
kv0.value = next_worker_index;
diff --git a/src/plugins/snat/out2in.c b/src/plugins/snat/out2in.c
index f1329733ecf..855e9efb806 100644
--- a/src/plugins/snat/out2in.c
+++ b/src/plugins/snat/out2in.c
@@ -901,8 +901,12 @@ snat_out2in_worker_handoff_fn (vlib_main_t * vm,
if (clib_bihash_search_8_8 (&sm->worker_by_out, &kv0, &value0))
{
/* No, assign next available worker (RR) */
- next_worker_index = sm->first_worker_index +
- sm->workers[sm->next_worker++ % vec_len (sm->workers)];
+ next_worker_index = sm->first_worker_index;
+ if (vec_len (sm->workers))
+ {
+ next_worker_index +=
+ sm->workers[sm->next_worker++ % _vec_len (sm->workers)];
+ }
}
else
{
diff --git a/src/vnet/devices/virtio/vhost-user.c b/src/vnet/devices/virtio/vhost-user.c
index 9a7c1dc0832..ac14286747a 100644
--- a/src/vnet/devices/virtio/vhost-user.c
+++ b/src/vnet/devices/virtio/vhost-user.c
@@ -2326,12 +2326,16 @@ vhost_user_process (vlib_main_t * vm,
sizeof (sun.sun_path) - 1);
/* Avoid hanging VPP if the other end does not accept */
- fcntl(sockfd, F_SETFL, O_NONBLOCK);
+ if (fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0)
+ clib_unix_warning ("fcntl");
+
if (connect (sockfd, (struct sockaddr *) &sun,
sizeof (struct sockaddr_un)) == 0)
{
/* Set the socket to blocking as it was before */
- fcntl(sockfd, F_SETFL, 0);
+ if (fcntl(sockfd, F_SETFL, 0) < 0)
+ clib_unix_warning ("fcntl2");
+
vui->sock_errno = 0;
template.file_descriptor = sockfd;
template.private_data =
diff --git a/src/vnet/unix/tapcli.c b/src/vnet/unix/tapcli.c
index 2d3082cbf70..e9dbf729141 100644
--- a/src/vnet/unix/tapcli.c
+++ b/src/vnet/unix/tapcli.c
@@ -899,8 +899,9 @@ int vnet_tap_connect (vlib_main_t * vm, vnet_tap_connect_args_t *ap)
/* ip4: mask defaults to /24 */
u32 mask = clib_host_to_net_u32 (0xFFFFFF00);
+ memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
- sin.sin_port = 0;
+ /* sin.sin_port = 0; */
sin.sin_addr.s_addr = ap->ip4_address->as_u32;
memcpy (&ifr.ifr_ifru.ifru_addr, &sin, sizeof (sin));
@@ -1294,7 +1295,7 @@ tap_connect_command_fn (vlib_main_t * vm,
unformat_input_t * input,
vlib_cli_command_t * cmd)
{
- u8 * intfc_name;
+ u8 * intfc_name = 0;
unformat_input_t _line_input, *line_input = &_line_input;
vnet_tap_connect_args_t _a, *ap= &_a;
tapcli_main_t * tm = &tapcli_main;
diff --git a/src/vpp/api/api_main.c b/src/vpp/api/api_main.c
index db532061484..fd6998f4536 100644
--- a/src/vpp/api/api_main.c
+++ b/src/vpp/api/api_main.c
@@ -139,11 +139,11 @@ api_command_fn (vlib_main_t * vm,
"%s error: %U\n", cmdp,
format_api_error, vam, rv);
- if (vam->regenerate_interface_table)
- {
- vam->regenerate_interface_table = 0;
- api_sw_interface_dump (vam);
- }
+ }
+ if (vam->regenerate_interface_table)
+ {
+ vam->regenerate_interface_table = 0;
+ api_sw_interface_dump (vam);
}
unformat_free (vam->input);
return 0;
diff --git a/src/vppinfra/bihash_template.c b/src/vppinfra/bihash_template.c
index 7c817a20589..d8b97b5f3d0 100644
--- a/src/vppinfra/bihash_template.c
+++ b/src/vppinfra/bihash_template.c
@@ -199,7 +199,7 @@ BV (split_and_rehash_linear)
/* Find a free slot in the new linear scan bucket */
for (; j < new_length; j++)
{
- /* Old value in use? Forget it. */
+ /* Old value not in use? Forget it. */
if (BV (clib_bihash_is_free) (&(old_values->kvp[i])))
goto doublebreak;
@@ -212,11 +212,12 @@ BV (split_and_rehash_linear)
j++;
goto doublebreak;
}
- /* This should never happen... */
- clib_warning ("BUG: linear rehash failed!");
- BV (value_free) (h, new_values);
- return 0;
}
+ /* This should never happen... */
+ clib_warning ("BUG: linear rehash failed!");
+ BV (value_free) (h, new_values);
+ return 0;
+
doublebreak:;
}
return new_values;