summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--babeld/babel_zebra.c12
-rw-r--r--nhrpd/nhrp_route.c12
2 files changed, 23 insertions, 1 deletions
diff --git a/babeld/babel_zebra.c b/babeld/babel_zebra.c
index 37f441c30f..a1d3a9e8cc 100644
--- a/babeld/babel_zebra.c
+++ b/babeld/babel_zebra.c
@@ -63,7 +63,7 @@ babel_zebra_read_ipv6 (int command, struct zclient *zclient,
struct zapi_ipv6 api;
unsigned long ifindex = -1;
struct in6_addr nexthop;
- struct prefix_ipv6 prefix;
+ struct prefix_ipv6 prefix, src_p;
s = zclient->ibuf;
ifindex = 0;
@@ -82,6 +82,16 @@ babel_zebra_read_ipv6 (int command, struct zclient *zclient,
prefix.prefixlen = stream_getc (s);
stream_get (&prefix.prefix, s, PSIZE (prefix.prefixlen));
+ memset(&src_p, 0, sizeof(src_p));
+ if (CHECK_FLAG(api.message, ZAPI_MESSAGE_SRCPFX)) {
+ src_p.family = AF_INET6;
+ src_p.prefixlen = stream_getc(s);
+ stream_get(&src_p.prefix, s, PSIZE(src_p.prefixlen));
+ }
+ if (src_p.prefixlen)
+ /* we completely ignore srcdest routes for now. */
+ return 0;
+
/* Nexthop, ifindex, distance, metric. */
if (CHECK_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP)) {
api.nexthop_num = stream_getc (s);
diff --git a/nhrpd/nhrp_route.c b/nhrpd/nhrp_route.c
index c8a608c657..e9651adc54 100644
--- a/nhrpd/nhrp_route.c
+++ b/nhrpd/nhrp_route.c
@@ -193,6 +193,7 @@ int nhrp_route_read(int cmd, struct zclient *zclient, zebra_size_t length, vrf_i
struct stream *s;
struct interface *ifp = NULL;
struct prefix prefix;
+ struct prefix_ipv6 src_p;
union sockunion nexthop_addr;
unsigned char message, nexthop_num, ifindex_num;
unsigned ifindex;
@@ -226,6 +227,17 @@ int nhrp_route_read(int cmd, struct zclient *zclient, zebra_size_t length, vrf_i
prefix.prefixlen = stream_getc(s);
stream_get(&prefix.u.val, s, PSIZE(prefix.prefixlen));
+ memset(&src_p, 0, sizeof(src_p));
+ if (prefix.family == AF_INET6 &&
+ CHECK_FLAG(message, ZAPI_MESSAGE_SRCPFX)) {
+ src_p.family = AF_INET6;
+ src_p.prefixlen = stream_getc(s);
+ stream_get(&src_p.prefix, s, PSIZE(src_p.prefixlen));
+ }
+ if (src_p.prefixlen)
+ /* we completely ignore srcdest routes for now. */
+ return 0;
+
/* Nexthop, ifindex, distance, metric. */
if (CHECK_FLAG(message, ZAPI_MESSAGE_NEXTHOP|ZAPI_MESSAGE_IFINDEX)) {
nexthop_num = stream_getc(s);