ip: Path MTU

Type: feature

Support setting the MTU for a peer on an interface. The minimum value of
the path and interface MTU is used at forwarding time.

the path MTU is specified for a given peer, by address and table-ID.
In the forwarding plane the MTU is enfored either:
 1 - if the peer is attached, then the MTU is set on the peer's
adjacency
 2 - if the peer is not attached, it is remote, then a DPO is added to
the peer's FIB entry to perform the necessary fragmentation.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I8b9ea6a07868b50e97e2561f18d9335407dea7ae
diff --git a/src/vnet/gre/gre.c b/src/vnet/gre/gre.c
index 0669c67..fcdf9c0 100644
--- a/src/vnet/gre/gre.c
+++ b/src/vnet/gre/gre.c
@@ -495,8 +495,13 @@
 			   adj->ia_nh_proto, &adj->sub_type.nbr.next_hop);
 
   if (NULL == ne)
-    // no NHRP entry to provide the next-hop
-    return;
+    {
+      // no TEIB entry to provide the next-hop
+      adj_nbr_midchain_update_rewrite (
+	ai, gre_get_fixup (t->tunnel_dst.fp_proto, adj_get_link_type (ai)),
+	uword_to_pointer (t->flags, void *), ADJ_FLAG_NONE, NULL);
+      return;
+    }
 
   mgre_walk_ctx_t ctx = {
     .t = t,