postfix + libinet6

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Wto, 28 Sie 2001, 22:58:45 CEST


On Tue, Aug 28, 2001 at 10:50:19AM +0200, Artur Frysiak wrote:
> On Fri, Aug 24, 2001 at 09:53:23AM +0200, Jakub Bogusz wrote:
> > On Thu, Aug 23, 2001 at 07:47:26PM +0200, Arkadiusz Miskiewicz wrote:
> > > Jakub Bogusz <qboosh w prioris.mini.pw.edu.pl> writes:
> > > > Problem w tym, że funkcja ta dodaje zarówno 0.0.0.0 jak
> > > > i 127.0.0.1 (w przypadku braku v6 w jajku) lub :: jak i 0.0.0.0
> > > > (a może i jeszcze 127.0.0.1) (w przypadku obecności v6);
> > > > potem przy bindowaniu lista adresów != 0 i wtedy usiłuje podbindować
> > > > wszystkie adresy z listy jednocześnie.
> > > Cóż. Takie to są kwiatki... jakoś to musisz rozwiązać :) 
> > 
> > Ale dlaczego ja? Ja nie wrzuciłem postfiksa z zepsutym patchem v6 na
> > ftp ;>
> > 
> > Jakieś propozycje?
> > Właściwie do czego jest potrzebne wildcard_inet_addr_init()?
> > Czy są sytuacje, kiedy nie wystarczy jeden "wildcard" (czyli "::"
> > w przypadku działającego IPv6 lub "0.0.0.0" w przypadku braku v6)?
> > A jeżeli jednak funkcja jest potrzebna - to jak najprościej wykryć
> > który adres zawiera się w innym?
> > 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ć?
> > Jeżeli tak, to można traktować EADDRINUSE w przypadku >=2. bindowania
> > jako non-fatal.
> 
> wildcard_inet_addr_init() jest potrzebny aby ustalić do jakich adresów
> należy się bindować.
> Rozpatrzmy tylko Linuksa:
> 
> +------------------------+--------------------+
> | Typ jądra              | Wildcard           |
> +------------------------+--------------------+
> | z IPv6, bez USAGI      | ::                 |
> | bez IPv6, bez USAGI    | 0.0.0.0            |
> | z IPv6, z USAGI        | ::, 0.0.0.0        |
> | bez IPv6, z USAGI      | 0.0.0.0            |
> +------------------------+--------------------+

Czyli przy IPv6 wildcard_inet_addr_init() zwraca adresy właściwe dla
jajka z USAGI...
Jeszcze jedno: skąd tam się 127.0.0.1 bierze (w przypadku braku v6)?

> Poza tym myśle, że EADDRINUSE nie powinno być traktowane jako fatal a
> jedynie jako warning.

A czy można założyć, że ogólniejsza maska będzie na liście jako
pierwsza?
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?


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



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