mardi 24 février 2009, 12:43:07 (UTC+0100)

Patch OpenBGPd pour ipv6

Le but était de mettre en place une sessions BGP entre deux peers en IPv6 avec notre ami et super compétent, j'ai nommé Johan.
Un peer en Cisco, l'autre sur un OpenBSD :
# uname -a
OpenBSD malloc.titux.org 4.1 GENERIC#1099 sparc64
# 
Ok, je sais il est pas en 4.4. Cela ne saurait tardé.
Néanmoins, si vous utilisez la version fournis vous vous retrouverez avec ce genre d'erreur :
Feb 24 02:44:47 malloc bgpd[9556]: neighbor 2001:470:1f12:238::1: \ 
	session_setup_socket setsockopt hoplimit : Protocol not available
Pour régler ce problème, je vous recommande ce patch :
--- session.c~orig      Tue Feb 24 11:32:27 2009
+++ session.c   Tue Feb 24 08:41:19 2009
@@ -1142,7 +1142,7 @@
                }
        }
			 
-       if (p->conf.ebgp && p->conf.remote_addr.af == AF_INET6)
+       if (0 && p->conf.ebgp && p->conf.remote_addr.af == AF_INET6)
                 /* set hoplimit to foreign router's distance */
                 if (setsockopt(p->fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &ttl,
                     sizeof(ttl)) == -1) {
Et là au magie :
neighbor X: state change Active -> OpenSent, reason: Connection opened
neighbor X: state change OpenSent -> OpenConfirm, reason: OPEN message received
neighbor X: state change OpenConfirm -> Established, reason: KEEPALIVE message received
neighbor X: state change Established -> Idle, reason: Connection closed
neighbor X: state change Idle -> Active, reason: Start
neighbor X: state change Active -> OpenSent, reason: Connection opened
neighbor X: state change OpenSent -> OpenConfirm, reason: OPEN message received
neighbor X: state change OpenConfirm -> Established, reason: KEEPALIVE message received


Posted by Christophe Lucas | Permanent Link | Categories: Telecom, BSD, Cisco