From: Michael Lambert Date: Tue, 28 Jul 2009 15:26:14 +0000 (-0400) Subject: bgpd: Workaround for invalid MBGP next hop X-Git-Tag: frr-2.0-rc1~2224 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=66bed4f4f0235c1eb6edb0a2f6bd4aaf47e5a7f8;p=mirror%2Ffrr.git bgpd: Workaround for invalid MBGP next hop * bgp_attr.c: (bgp_mp_reach_parse) There are some interoperability issues for MBGP (particularly IPv4 multicast NLRI) between different implementations. In order to get some next hops to install correctly in the BGP tables, it appears to be necessary to copy the multiprotocol next hop into the base next hop field. This is related to differences in RFC 2283 and RFC 2858. --- diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index a664858c5d..5e7536aed4 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -1333,6 +1333,9 @@ bgp_mp_reach_parse (struct peer *peer, bgp_size_t length, struct attr *attr, { case 4: stream_get (&attre->mp_nexthop_global_in, s, 4); + /* Probably needed for RFC 2283 */ + if (attr->nexthop.s_addr == 0) + memcpy(&attr->nexthop.s_addr, &attre->mp_nexthop_global_in, 4); break; case 12: {