Change-Id: Ib0144ba3a9a09971d3946c932e8fed6d5c1ad278
Signed-off-by: Dave Barach <dave@barachs.net>
if (clib_bihash_search_8_8 (&sm->worker_by_in, &kv0, &value0))
{
/* No, assign next available worker (RR) */
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;
/* add non-traslated packets worker lookup */
kv0.value = next_worker_index;
if (clib_bihash_search_8_8 (&sm->worker_by_out, &kv0, &value0))
{
/* No, assign next available worker (RR) */
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)];
+ }
sizeof (sun.sun_path) - 1);
/* Avoid hanging VPP if the other end does not accept */
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 */
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 =
vui->sock_errno = 0;
template.file_descriptor = sockfd;
template.private_data =
/* ip4: mask defaults to /24 */
u32 mask = clib_host_to_net_u32 (0xFFFFFF00);
/* 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_family = AF_INET;
+ /* sin.sin_port = 0; */
sin.sin_addr.s_addr = ap->ip4_address->as_u32;
memcpy (&ifr.ifr_ifru.ifru_addr, &sin, sizeof (sin));
sin.sin_addr.s_addr = ap->ip4_address->as_u32;
memcpy (&ifr.ifr_ifru.ifru_addr, &sin, sizeof (sin));
unformat_input_t * input,
vlib_cli_command_t * cmd)
{
unformat_input_t * input,
vlib_cli_command_t * cmd)
{
unformat_input_t _line_input, *line_input = &_line_input;
vnet_tap_connect_args_t _a, *ap= &_a;
tapcli_main_t * tm = &tapcli_main;
unformat_input_t _line_input, *line_input = &_line_input;
vnet_tap_connect_args_t _a, *ap= &_a;
tapcli_main_t * tm = &tapcli_main;
"%s error: %U\n", cmdp,
format_api_error, vam, rv);
"%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;
}
unformat_free (vam->input);
return 0;
/* Find a free slot in the new linear scan bucket */
for (; j < new_length; j++)
{
/* 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;
if (BV (clib_bihash_is_free) (&(old_values->kvp[i])))
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;
doublebreak:;
}
return new_values;