GBP: redirect contracts
[vpp.git] / src / vnet / adj / adj_nbr.c
index 3b1eb49..3888509 100644 (file)
@@ -59,7 +59,7 @@ adj_nbr_insert (fib_protocol_t nh_proto,
        adj_nbr_tables[nh_proto][sw_if_index] =
            clib_mem_alloc_aligned(sizeof(BVT(clib_bihash)),
                                   CLIB_CACHE_LINE_BYTES);
-       memset(adj_nbr_tables[nh_proto][sw_if_index],
+       clib_memset(adj_nbr_tables[nh_proto][sw_if_index],
               0,
               sizeof(BVT(clib_bihash)));
 
@@ -195,6 +195,8 @@ adj_nbr_alloc (fib_protocol_t nh_proto,
     adj->ia_link = link_type;
     adj->ia_nh_proto = nh_proto;
     adj->rewrite_header.sw_if_index = sw_if_index;
+    vnet_rewrite_update_mtu(vnet_get_main(), adj->ia_link,
+                            &adj->rewrite_header);
 
     adj_nbr_evaluate_feature (adj_get_index(adj));
     return (adj);
@@ -263,26 +265,24 @@ adj_nbr_add_or_lock_w_rewrite (fib_protocol_t nh_proto,
                               u8 *rewrite)
 {
     adj_index_t adj_index;
-    ip_adjacency_t *adj;
 
     adj_index = adj_nbr_find(nh_proto, link_type, nh_addr, sw_if_index);
 
     if (ADJ_INDEX_INVALID == adj_index)
     {
-       adj = adj_nbr_alloc(nh_proto, link_type, nh_addr, sw_if_index);
+        ip_adjacency_t *adj;
+
+        adj = adj_nbr_alloc(nh_proto, link_type, nh_addr, sw_if_index);
        adj->rewrite_header.sw_if_index = sw_if_index;
-    }
-    else
-    {
-        adj = adj_get(adj_index);
+        adj_index = adj_get_index(adj);
     }
 
-    adj_lock(adj_get_index(adj));
-    adj_nbr_update_rewrite(adj_get_index(adj),
+    adj_lock(adj_index);
+    adj_nbr_update_rewrite(adj_index,
                           ADJ_NBR_REWRITE_FLAG_COMPLETE,
                           rewrite);
 
-    return (adj_get_index(adj));
+    return (adj_index);
 }
 
 /**