postfix + libinet6

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Pon, 3 Wrz 2001, 11:46:05 CEST


On Wed, Aug 29, 2001 at 09:28:32PM +0200, Arkadiusz Miskiewicz wrote:
> 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.

Już wiem... getaddrinfo() zwracało także adres z family==AF_UNIX, który
potem był tłumaczony przez getnameinfo() na localhost.
Przesunąłem sprawdzanie family z inet_addr_host() do
wildcard_inet_addr_init() i jest OK.

Dwie poprawki w wildcard... wrzuciłem przed chwilą do CVS.

> > 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).

OK. Czyli trzeba zmienić traktowanie EADDRINUSE na non-fatal jeżeli już
jakiś adres udało się podbindować.
To jest kwestia wywołania  inet_listen() z master_listen_init() w
przypadku listy adresów (nie wildcard). I nie bardzo mam pomysł jak to
ładnie poprawić bez zmieniania obu tych funkcji.
Najlepiej sami to poprawcie (Ty albo wiget),  bo nawet nie mam teraz
maszynki do testów z v6 w jajku... a poza tym już mi się nie chce, bo na
v4-only działa dobrze :>
Po tej poprawce postfix powinien być OK na v4 i v6.


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl