postfix + libinet6
Arkadiusz Miskiewicz
misiek w pld.ORG.PL
Śro, 29 Sie 2001, 21:28:32 CEST
Jakub Bogusz <qboosh w prioris.mini.pw.edu.pl> writes:
> > > W praktyce zauważyłem, że getaddrinfo() zwraca adresy w kolejności
> > > ::, 0.0.0.0, 127.0.0.1 - ale czy można tak zakładać?
glibcowy getaddrinfo zawsze zwraca jako pierwsze adresy IPv6, a potem
IPv4. Jest też draft omawiający bardziej szczegółowo co ma kiedy i w
jakiej kolejności być zwracane ale jak narazie niewiele implementacji
się do niego stosuje.
> Jeszcze jedno: skąd tam się 127.0.0.1 bierze (w przypadku braku v6)?
Patrze teraz w łatkę ipv6 postfixa i w wildcard_inet_addr_init() jest
używane getaddrinfo() z hints.ai_flags = AI_PASSIVE więc 127.0.0.1
pojawić się tam prawa nie ma.
> A czy można założyć, że ogólniejsza maska będzie na liście jako
> pierwsza?
getaddrinfo() _zawsze_ daje IPv6 przed IPv4. Implementacja
getaddrinfo() wygląda mniej więcej tak:
...
gethosts (AF_INET6, struct in6_addr);
...
gethosts (AF_INET, struct in_addr);
gdzie gethosts() robi gethostbyname2() i nie ma bata by v4 było przed
v6 (szczegóły w sysdeps/posix/getaddrinfo.c).
> Bo gdyby było odwrotnie, (tzn. najpierw 0.0.0.0), to po podbindowaniu
> 0.0.0.0:25 próba bindowania :::25 na linusowym jajku chyba też by się
> skończyła EADDRINUSE - a postfix słuchałby tylko na adresach v4?
Tak by było.
> Jakub Bogusz
--
Arkadiusz Miśkiewicz, AM2-6BONE, 1024/3DB19BBD
IPv6 ready PLD Linux at http://www.pld.org.pl/
My jsme Borg. Odpor je marný, budete asimilováni
Więcej informacji o liście dyskusyjnej pld-devel-pl