bgpd: bgpd-set-v4-nexthop-for-v6-peering.patch
BGP: While advertising v4 prefixes over a v6 session, set the correct v4 nexthop.
ISSUE:
For an IPv6 peer, BGPd sets the local router-id as the next-hop's v4 address.
This is incorrect as the router-id may not be a valid next-hop to be included
in UPDATEs that contain v4 prefixes.
PATCH:
Set the v4 address in the next-hop field based on the interface that the
peering is on (directly connected interface or loopback).
Signed-off-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com>
Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>
Acked-by: Feng Lu <lu.feng@6wind.com>
diff --git a/lib/prefix.h b/lib/prefix.h
index 7f0d360..8c8992e 100644
--- a/lib/prefix.h
+++ b/lib/prefix.h
@@ -196,4 +196,14 @@
extern int all_digit (const char *);
+static inline int ipv4_martian (struct in_addr *addr)
+{
+ in_addr_t ip = addr->s_addr;
+
+ if (IPV4_NET0(ip) || IPV4_NET127(ip) || IPV4_CLASS_DE(ip)) {
+ return 1;
+ }
+ return 0;
+}
+
#endif /* _ZEBRA_PREFIX_H */