ip: fix ip zero checksum verification
[vpp.git] / src / vnet / ip / ip4_forward.c
index b76da0a..3bf3053 100644 (file)
@@ -2063,7 +2063,7 @@ ip4_ttl_inc (vlib_buffer_t * b, ip4_header_t * ip)
   ttl += 1;
   ip->ttl = ttl;
 
-  ASSERT (ip->checksum == ip4_header_checksum (ip));
+  ASSERT (ip4_header_checksum_is_valid (ip));
 }
 
 /* Decrement TTL & update checksum.
@@ -2104,7 +2104,7 @@ ip4_ttl_and_checksum_check (vlib_buffer_t * b, ip4_header_t * ip, u16 * next,
     }
 
   /* Verify checksum. */
-  ASSERT ((ip->checksum == ip4_header_checksum (ip)) ||
+  ASSERT (ip4_header_checksum_is_valid (ip) ||
          (b->flags & VNET_BUFFER_F_OFFLOAD_IP_CKSUM));
 }
 
@@ -2241,8 +2241,7 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
          next[0] = next_index;
          if (is_midchain)
            vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
-                                       0 /* is_ip6 */ ,
-                                       0 /* with gso */ );
+                                       0 /* is_ip6 */ );
        }
       else
        {
@@ -2267,8 +2266,7 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
          next[1] = next_index;
          if (is_midchain)
            vnet_calc_checksums_inline (vm, b[1], 1 /* is_ip4 */ ,
-                                       0 /* is_ip6 */ ,
-                                       0 /* with gso */ );
+                                       0 /* is_ip6 */ );
        }
       else
        {
@@ -2419,8 +2417,7 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
          if (is_midchain)
            {
              vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
-                                         0 /* is_ip6 */ ,
-                                         0 /* with gso */ );
+                                         0 /* is_ip6 */ );
 
              /* Guess we are only writing on ipv4 header. */
              vnet_rewrite_one_header (adj0[0], ip0, sizeof (ip4_header_t));
@@ -2527,8 +2524,7 @@ ip4_rewrite_inline_with_gso (vlib_main_t * vm,
            {
              /* this acts on the packet that is about to be encapped */
              vnet_calc_checksums_inline (vm, b[0], 1 /* is_ip4 */ ,
-                                         0 /* is_ip6 */ ,
-                                         0 /* with gso */ );
+                                         0 /* is_ip6 */ );
 
              /* Guess we are only writing on ipv4 header. */
              vnet_rewrite_one_header (adj0[0], ip0, sizeof (ip4_header_t));
@@ -3101,10 +3097,13 @@ ip4_config (vlib_main_t * vm, unformat_input_t * input)
     {
       if (unformat (input, "heap-size %U", unformat_memory_size, &heapsize))
        ;
+      else if (unformat (input, "mtrie-hugetlb %=", &im->mtrie_hugetlb, 1))
+       ;
       else
        return clib_error_return (0,
                                  "invalid heap-size parameter `%U'",
                                  format_unformat_error, input);
+
     }
 
   im->mtrie_heap_size = heapsize;