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;
};