On Fri, Dec 04, 2009 at 12:11:14PM +0100, Laurent CARON wrote:
> Hi,
>
> I'm experiencing a strange behavior since latest OpenBSD 4.6 current
> update (yesterday).
>
> My prefixes are not announced anymore.
>
> OpenBGPd config:
>
> AS 49463
> router-id 213.215.49.242
> holdtime 90
> holdtime min 3
> fib-update yes
> log updates
> network 213.215.28.0/23
> network 2001:7a8:820::/44
>
>
> neighbor 2001:7a8:1:9ff2::1 {
> remote-as 13193
> # remote-as 35830
> descr nerim-ipv6-bgp-peer
> local-address 2001:7a8:1:9ff2::2
> holdtime 30
> holdtime min 3
> announce self
> announce IPv6 unicast
> announce IPv4 none
> set localpref 200
>
> }
>
>
> I get those messages in /var/log/messages
>
> Dec 4 12:00:21 bgpgw-001 bgpd[20852]: generation of bgp path attributes
> failed
> Dec 4 12:01:22 bgpgw-001 bgpd[20852]: generation of bgp path attributes
> failed
> Dec 4 12:03:26 bgpgw-001 last message repeated 2078 times
>
>
> Do anyone have a clue about it ?
>
Seems to be an error on my side. I guess the following diff fixes your
issue. Please test.
--
:wq Claudio
Index: rde_update.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_update.c,v
retrieving revision 1.71
diff -u -p -r1.71 rde_update.c
--- rde_update.c 1 Dec 2009 14:28:05 -0000 1.71
+++ rde_update.c 4 Dec 2009 12:26:39 -0000
@@ -796,7 +796,7 @@ up_generate_attr(struct rde_peer *peer,
/* write mp attribute to different buffer */
if (ismp)
- if (up_generate_mp_reach(peer, upa, a, AF_INET6) == -1)
+ if (up_generate_mp_reach(peer, upa, a, aid) == -1)
return (-1);
/* the bgp path attributes are now stored in the global buf */