IGMP: coverity found defects 07/13407/2
authorNeale Ranns <nranns@cisco.com>
Tue, 10 Jul 2018 12:26:01 +0000 (05:26 -0700)
committerDamjan Marion <dmarion@me.com>
Tue, 10 Jul 2018 21:23:09 +0000 (21:23 +0000)
Change-Id: Id6aba75c30712e9a0ac7b3075bd6cfc49d6bec36
Signed-off-by: Neale Ranns <nranns@cisco.com>
src/plugins/igmp/igmp_api.c
src/plugins/igmp/igmp_cli.c
src/plugins/igmp/igmp_pkt.c

index 71fb3e2..06bf26b 100644 (file)
@@ -134,7 +134,7 @@ send_igmp_details (unix_shared_memory_queue_t * q, igmp_main_t * im,
   mp->context = context;
   mp->sw_if_index = htonl (config->sw_if_index);
   clib_memcpy (mp->saddr.address, &src->key->ip4, sizeof (src->key->ip4));
-  clib_memcpy (mp->gaddr.address, &group->key->ip4, sizeof (group->key->ip6));
+  clib_memcpy (mp->gaddr.address, &group->key->ip4, sizeof (group->key->ip4));
 
   vl_msg_api_send_shmem (q, (u8 *) & mp);
 }
index 5f09589..df8fb64 100644 (file)
@@ -84,7 +84,7 @@ igmp_listen_command_fn (vlib_main_t * vm, unformat_input_t * input,
   unformat_input_t _line_input, *line_input = &_line_input;
   clib_error_t *error = NULL;
   u8 enable = 1;
-  ip46_address_t saddr, gaddr;
+  ip46_address_t saddr, *saddrs = NULL, gaddr;
   vnet_main_t *vnm = vnet_get_main ();
   u32 sw_if_index;
   int rv;
@@ -108,7 +108,8 @@ igmp_listen_command_fn (vlib_main_t * vm, unformat_input_t * input,
            (line_input, "int %U", unformat_vnet_sw_interface, vnm,
             &sw_if_index));
       else
-       if (unformat (line_input, "saddr %U", unformat_ip46_address, &saddr));
+       if (unformat (line_input, "saddr %U", unformat_ip46_address, &saddr))
+       vec_add1 (saddrs, saddr);
       else
        if (unformat (line_input, "gaddr %U", unformat_ip46_address, &gaddr));
       else
@@ -127,7 +128,7 @@ igmp_listen_command_fn (vlib_main_t * vm, unformat_input_t * input,
       goto done;
     }
 
-  rv = igmp_listen (vm, enable, sw_if_index, &saddr, &gaddr);
+  rv = igmp_listen (vm, enable, sw_if_index, saddrs, &gaddr);
 
   if (rv == -1)
     {
@@ -145,6 +146,7 @@ igmp_listen_command_fn (vlib_main_t * vm, unformat_input_t * input,
 
 done:
   unformat_free (line_input);
+  vec_free (saddrs);
   return error;
 }
 
index 5dd829d..1fd240c 100644 (file)
@@ -148,6 +148,10 @@ igmp_pkt_tx (igmp_pkt_build_t * bk)
 
   vm = vlib_get_main ();
   config = igmp_config_lookup (bk->sw_if_index);
+
+  if (NULL == config)
+    return;
+
   f = vlib_get_frame_to_node (vm, ip4_rewrite_mcast_node.index);
   to_next = vlib_frame_vector_args (f);