zebra: implement per-route mtu handling

This commits allow overriding MTU using netlink attributes on
per-route basis. This is useful for routing protocols that can
advertice prefix specific MTUs between routers (e.g. NHRP).

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
diff --git a/lib/zclient.c b/lib/zclient.c
index bfff9a3..ca6a4c7 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -562,6 +562,8 @@
     stream_putc (s, api->distance);
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_METRIC))
     stream_putl (s, api->metric);
+  if (CHECK_FLAG (api->message, ZAPI_MESSAGE_MTU))
+    stream_putl (s, api->mtu);
 
   /* Put length at the first point of the stream. */
   stream_putw_at (s, 0, stream_get_endp (s));
@@ -616,6 +618,8 @@
     stream_putc (s, api->distance);
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_METRIC))
     stream_putl (s, api->metric);
+  if (CHECK_FLAG (api->message, ZAPI_MESSAGE_MTU))
+    stream_putl (s, api->mtu);
 
   /* Put length at the first point of the stream. */
   stream_putw_at (s, 0, stream_get_endp (s));
diff --git a/lib/zclient.h b/lib/zclient.h
index aa935c1..a14f599 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -96,6 +96,7 @@
 #define ZAPI_MESSAGE_IFINDEX  0x02
 #define ZAPI_MESSAGE_DISTANCE 0x04
 #define ZAPI_MESSAGE_METRIC   0x08
+#define ZAPI_MESSAGE_MTU      0x10
 
 /* Zserv protocol message header */
 struct zserv_header
@@ -131,6 +132,8 @@
 
   u_int32_t metric;
 
+  u_int32_t mtu;
+
   vrf_id_t vrf_id;
 };
 
@@ -204,6 +207,8 @@
 
   u_int32_t metric;
 
+  u_int32_t mtu;
+
   vrf_id_t vrf_id;
 };