6RD: Rewritten 6RD RFC5969 support.
[vpp.git] / src / vnet / adj / adj_glean.c
index 82d0a46..7de8e39 100644 (file)
@@ -48,6 +48,7 @@ adj_get_glean_node (fib_protocol_t proto)
  */
 adj_index_t
 adj_glean_add_or_lock (fib_protocol_t proto,
+                       vnet_link_t linkt,
                       u32 sw_if_index,
                       const ip46_address_t *nh_addr)
 {
@@ -61,15 +62,23 @@ adj_glean_add_or_lock (fib_protocol_t proto,
 
        adj->lookup_next_index = IP_LOOKUP_NEXT_GLEAN;
        adj->ia_nh_proto = proto;
+        adj->ia_link = linkt;
        adj_gleans[proto][sw_if_index] = adj_get_index(adj);
 
        if (NULL != nh_addr)
        {
            adj->sub_type.glean.receive_addr = *nh_addr;
        }
+        else
+        {
+            adj->sub_type.glean.receive_addr = zero_addr;
+        }
 
        adj->rewrite_header.sw_if_index = sw_if_index;
        adj->rewrite_header.data_bytes = 0;
+        adj->rewrite_header.max_l3_packet_bytes =
+            vnet_sw_interface_get_mtu(vnet_get_main(), sw_if_index, VLIB_TX);
+
         adj_lock(adj_get_index(adj));
 
        vnet_update_adjacency_for_sw_interface(vnet_get_main(),