Thread: pgsql: Make RADIUS authentication use pg_getaddrinfo_all() to get
pgsql: Make RADIUS authentication use pg_getaddrinfo_all() to get
From
mha@postgresql.org (Magnus Hagander)
Date:
Log Message: ----------- Make RADIUS authentication use pg_getaddrinfo_all() to get address of the server. Gets rid of a fairly ugly hack for Solaris, and also provides hostname and IPV6 support. Modified Files: -------------- pgsql/doc/src/sgml: client-auth.sgml (r1.129 -> r1.130) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/client-auth.sgml?r1=1.129&r2=1.130) pgsql/src/backend/libpq: auth.c (r1.193 -> r1.194) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/auth.c?r1=1.193&r2=1.194) hba.c (r1.196 -> r1.197) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/hba.c?r1=1.196&r2=1.197) pgsql/src/include/port: solaris.h (r1.18 -> r1.19) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/port/solaris.h?r1=1.18&r2=1.19)
mha@postgresql.org (Magnus Hagander) writes: > Make RADIUS authentication use pg_getaddrinfo_all() to get address of > the server. Looks like the mingw machines don't have in6addr_any. Perhaps instead of depending on magic constants, you should have the code use what "localhost" resolves as, comparably to pgstat.c. regards, tom lane
On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: > mha@postgresql.org (Magnus Hagander) writes: >> Make RADIUS authentication use pg_getaddrinfo_all() to get address of >> the server. > > Looks like the mingw machines don't have in6addr_any. *grumble* > Perhaps instead of depending on magic constants, you should have the > code use what "localhost" resolves as, comparably to pgstat.c. Uh, but those are not the same. If we bind to localhost we can't communicate with non-localhost addresses. inadds_any corresponds so 0.0.0.0/0 which you are specifically *not* supposed to use - you should use the magic constant and not a manual such. And I don't know if there is a symbolic name that corresponds to it at all? Pgstat only talks locally so that's a completely different thing. /Magnus -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
Magnus Hagander <magnus@hagander.net> writes: > On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Perhaps instead of depending on magic constants, you should have the >> code use what "localhost" resolves as, comparably to pgstat.c. > Pgstat only talks locally so that's a completely different thing. Ah, right. I notice that in libpq/ip.c, we're using a macro IN6_IS_ADDR_UNSPECIFIED() as a substitute for testing equality to in6addr_any. I wonder where that comes from and whether it has a brother for assignment... regards, tom lane
On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Magnus Hagander <magnus@hagander.net> writes: >> On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> Perhaps instead of depending on magic constants, you should have the >>> code use what "localhost" resolves as, comparably to pgstat.c. > >> Pgstat only talks locally so that's a completely different thing. > > Ah, right. > > I notice that in libpq/ip.c, we're using a macro IN6_IS_ADDR_UNSPECIFIED() > as a substitute for testing equality to in6addr_any. I wonder where > that comes from and whether it has a brother for assignment... > I'll take a look. I'm off doing training all day so it won't be until tonight though. /Magnus -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
On Wed, Feb 3, 2010 at 07:22, Magnus Hagander <magnus@hagander.net> wrote: > On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Magnus Hagander <magnus@hagander.net> writes: >>> On Wednesday, February 3, 2010, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>>> Perhaps instead of depending on magic constants, you should have the >>>> code use what "localhost" resolves as, comparably to pgstat.c. >> >>> Pgstat only talks locally so that's a completely different thing. >> >> Ah, right. >> >> I notice that in libpq/ip.c, we're using a macro IN6_IS_ADDR_UNSPECIFIED() >> as a substitute for testing equality to in6addr_any. I wonder where >> that comes from and whether it has a brother for assignment... >> > > I'll take a look. I'm off doing training all day so it won't be until > tonight though. Ok. Mingw *does* have inaddr6_any. Only they have it in the headers, as an extern, but they didn't put it in their libraries. *sigh* So one thing we could do is to simply define the extern in a #ifdef section, right there. Which seems rather ugly. Or we can create a new symbol on mingw and #define or #ifdef it to use that one, like inaddr6_any_brokenmingw. From some googling, the value should be: static in6_addr inaddr6_any={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0}; Which one seems least ugly? -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/