From 7a03ded81bf2d07331d8fb87c2c7613cb4dd518e Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 14 Dec 2010 03:26:51 +0100 Subject: BGP: Added support for peering with link-local IPv6 addresses --- proto/bgp/packets.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'proto/bgp/packets.c') diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c index bf98640..356d8bd 100644 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@ -324,6 +324,7 @@ bgp_create_update(struct bgp_conn *conn, byte *buf) struct bgp_proto *p = conn->bgp; struct bgp_bucket *buck; int size, second, rem_stored; + int class; int remains = BGP_MAX_PACKET_LENGTH - BGP_HEADER_LENGTH - 4; byte *w, *w_stored, *tmp, *tstart; ip_addr *ipp, ip, ip_ll; @@ -434,7 +435,8 @@ bgp_create_update(struct bgp_conn *conn, byte *buf) *tmp++ = BGP_AF_IPV6; *tmp++ = 1; - if (ipa_nonzero(ip_ll)) + class = ipa_classify(ip); + if (ipa_nonzero(ip_ll) && ((class & IADDR_SCOPE_MASK) != SCOPE_LINK)) { *tmp++ = 32; ipa_hton(ip); -- cgit v1.2.3