[ipv6-tf] bgpd IPv6 binding to :::179 problem (fwd)

Lukasz Trabinski lukasz w trabinski.net
Śro, 21 Sty 2009, 14:56:14 CET


Witam

Tak przy okazji...
Poniżej przykład, jak (nie)łatwo jest wdrożyć ipv6 w systemach
opensource ;) Sytuacja jest prosta, ileś routerków z linuxem, które robią 
CORE + quagga, na tym odpalone zebra/ospf/ospf6/bgp i co wersja quaggi,
to inna jazda. Przyznam się, że ławiej, chociaż również nie bez problemów
odpala się takie rzeczy pod IOSem lub JUNOSem ;)
Oczywiście, jakby ktoś walczył z czymś podobnym (bgpd nie binduje się 
dowszystkich subinterfejsów z adresacją ipv6), opisanym poniżej, to 
chętnie słucham sugestii.


-- 
ŁT


---------- Forwarded message ----------
Date: Wed, 21 Jan 2009 14:26:15 +0100
From: Bartłomiej Solarz-Niesłuchowski
     <Bartlomiej.Solarz-Niesluchowski w wit.edu.pl>
To: quagga-users w lists.quagga.net
Cc: admin w wit.edu.pl
Subject: bgpd IPv6 binding to :::179 problem

Good Morning!

I have problems with bgpd binding to 0.0.0.0:179 instead :::179

on FC7 bgpd binds to :::179
socket(PF_INET6, SOCK_STREAM, 6)        = 4
setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
capset(0x19980330, 0, {CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, }) = 0
bind(4, {sa_family=AF_INET6, sin6_port=htons(179), inet_pton(AF_INET6, "::", 
&sin6_addr), sin6_flowinfo=0}, 28) = 0
capset(0x19980330, 0, {, CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, }) 
= 0
listen(4, 3)                            = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
capset(0x19980330, 0, {CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, }) = 0
bind(5, {sa_family=AF_INET, sin_port=htons(179), 
sin_addr=inet_addr("0.0.0.0")}, 16) = -1 EADDRINUSE (Address already in use)
capset(0x19980330, 0, {, CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, }) 
= 0

on FC9 bgpd binds to 0.0.0.0:179
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
capset(0x20071026, 0, {CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 0}) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(179), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
capset(0x20071026, 0, {0, CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
0}) = 0
listen(4, 3)                            = 0
socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
capset(0x20071026, 0, {CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 0}) = 0
bind(5, {sa_family=AF_INET6, sin6_port=htons(179), inet_pton(AF_INET6, "::", 
&sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EADDRINUSE (Address 
already in use)
capset(0x20071026, 0, {0, CAP_NET_BIND_SERVICE|CAP_NET_BROADCAST|CAP_NET_RAW, 
0}) = 0

I have no idea how to control order of binding to specified interface 
(IPv6/IPv4) in FC

quagga ver. 0.99.11 has option -l (undocumented in man page) which allow me to 
bind bgpd to :::179 BUT it implies -n (no kernel route) so it makes my router 
(which is IPv6 and IPv4) unusable.

Does somebody has the same problem?

Any solution of it?

Best Regards


Więcej informacji o liście ipv6-tf