pnat: coverity errors 33/32233/2
authorOle Troan <ot@cisco.com>
Thu, 6 May 2021 11:39:55 +0000 (13:39 +0200)
committerOle Troan <ot@cisco.com>
Thu, 6 May 2021 11:47:20 +0000 (13:47 +0200)
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ic38cfbdcab86172bad6ec6cb4c66c83f8deed64f
Signed-off-by: Ole Troan <ot@cisco.com>
src/plugins/nat/pnat/pnat.api
src/plugins/nat/pnat/pnat.c
src/plugins/nat/pnat/pnat_api.c
src/plugins/nat/pnat/tests/pnat_test.c

index fe7bf98..b663215 100644 (file)
@@ -30,7 +30,7 @@ enum pnat_mask
 
 enum pnat_attachment_point
 {
-    PNAT_IP4_INPUT,
+    PNAT_IP4_INPUT = 0,
     PNAT_IP4_OUTPUT,
     PNAT_ATTACHMENT_POINT_MAX,
 };
index 7f02ec4..547b063 100644 (file)
@@ -110,9 +110,15 @@ static clib_error_t *pnat_enable_interface(u32 sw_if_index,
 
         if (input) {
             /* TODO: Make shallow virtual reassembly configurable */
-            ip4_sv_reass_enable_disable_with_refcnt(sw_if_index, 1);
+            if (ip4_sv_reass_enable_disable_with_refcnt(sw_if_index, 1) != 0)
+                return clib_error_return(0, "PNAT SVR enable failed on %u",
+                                         sw_if_index);
+
         } else {
-            ip4_sv_reass_output_enable_disable_with_refcnt(sw_if_index, 1);
+            if (ip4_sv_reass_output_enable_disable_with_refcnt(sw_if_index,
+                                                               1) != 0)
+                return clib_error_return(0, "PNAT SVR enable failed on %u",
+                                         sw_if_index);
         }
 
         interface->lookup_mask[attachment] = mask;
index cb7afaa..eaefbaf 100644 (file)
@@ -143,9 +143,9 @@ static void send_interfaces_details(u32 index, vl_api_registration_t *rp,
     REPLY_MACRO_DETAILS4(
         VL_API_PNAT_INTERFACES_DETAILS, rp, context, ({
             rmp->sw_if_index = i->sw_if_index;
-            clib_memcpy(rmp->enabled, i->enabled, PNAT_ATTACHMENT_POINT_MAX);
+            clib_memcpy(rmp->enabled, i->enabled, sizeof(rmp->enabled));
             clib_memcpy(rmp->lookup_mask, i->lookup_mask,
-                        sizeof(vl_api_pnat_mask_t) * PNAT_ATTACHMENT_POINT_MAX);
+                        sizeof(rmp->lookup_mask));
 
             /* Endian hack until apigen registers _details
              * endian functions */
index fd91ab2..e7d9469 100644 (file)
@@ -347,6 +347,7 @@ extern vlib_node_registration_t pnat_input_node;
 static void test_table(test_t *t, int no_tests) {
     // walk through table of tests
     int i;
+    vlib_main_init();
     vlib_main_t *vm = vlib_get_first_main();
 
     /* Generate packet data */
@@ -559,6 +560,7 @@ int main(int argc, char **argv) {
 
     clib_mem_init(0, 3ULL << 30);
 
+    vlib_main_init();
     vlib_main_t *vm = vlib_get_first_main();
 
     buffers_vector = buffer_init(buffers_vector, 256);