Re: 7.4devel auth failed - Mailing list pgsql-hackers
From | Bruce Momjian |
---|---|
Subject | Re: 7.4devel auth failed |
Date | |
Msg-id | 200303252306.h2PN6IL12345@candle.pha.pa.us Whole thread Raw |
In response to | Re: 7.4devel auth failed (Andreas Pflug <Andreas.Pflug@web.de>) |
Responses |
Re: 7.4devel auth failed
(Tom Lane <tgl@sss.pgh.pa.us>)
Re: 7.4devel auth failed (Peter Eisentraut <peter_e@gmx.net>) |
List | pgsql-hackers |
I am confused about using only the last few bytes. Does this adjustment of IP addresses help:voidconvSockAddr6to4(const SockAddr *src, SockAddr *dst){ char addr_str[INET6_ADDRSTRLEN]; dst->in.sin_family = AF_INET; dst->in.sin_port = src->in6.sin6_port; dst->in.sin_addr.s_addr= (src->in6.sin6_addr.s6_addr[15]) + (src->in6.sin6_addr.s6_addr[14] << 8) +(src->in6.sin6_addr.s6_addr[13] << 16) + (src->in6.sin6_addr.s6_addr[12] << 24); SockAddr_ntop(src, addr_str,INET6_ADDRSTRLEN, 0);} Can you supply a patch? FYI, I do have IPv6 enabled libraries, but not in my kernel. > PS Your mail host candle.pha.pa.us rejected this mail as spam?!? I have whitelisted web.de. I received spam from them last month, and didn't know if they were legit or just a spamhouse. Unfortunately, I don't check each one I blacklist. --------------------------------------------------------------------------- Andreas Pflug wrote: > Ok Bruce, > > I found out what's happening. > I'm running a Suse 8.1 2.4.19 standard kernel which has IPV6 enabled by > default. When connecting locally over IP (pgaccess), hba is checked > against IPV6 patterns in pg_hba.conf. > My pgadmin2 machine will connect with an IP4-to-6 mapped address of > 0:ffff:c0a80002 (192.168.0.2), which convSockAddr6to4 will convert to > dst->in.sin_addr.s_addr=0xc0a80002. On the other side, SockAddr_pton > will convert my 192.168.0.0/255.255.255.0 entry to a8c0/ffffff, and > consequently rangeSockAddr will fail. > > If your kernel isn't V6 enabled, the incoming socket will be AF_INET, > and no conversion is done, that's why you don't get the problem. > To fix this, the [12]..[15] indices need to be reversed (for Intel). > This might be machine specific... Maybe for all big-endian machines the > current code is ok, and needs reversal for little-endian processors. > I wonder if the following is completely portable, could be: > dst->in.sin_addr.s_addr = *(in_addr_t*)(src->in4.sin6_addr.s6_addr+12); > > Regards, > Andreas > > PS Your mail host candle.pha.pa.us rejected this mail as spam?!? > > > > Bruce Momjian wrote: > > >That's strange. I just tested it here, and it worked. I have IPv6 code > >enabled. but no IPv6 in my kernel, so there are just IPv4 connections. > > > >Can you peek in this funciton and see where it is failing: > > > > int > > rangeSockAddrAF_INET(const SockAddr *addr, const SockAddr *netaddr, > > const SockAddr *netmask) > > { > > if (addr->sa.sa_family != AF_INET || > > netaddr->sa.sa_family != AF_INET || > > netmask->sa.sa_family != AF_INET) > > return 0; > > if (((addr->in.sin_addr.s_addr ^ netaddr->in.sin_addr.s_addr) & > > netmask->in.sin_addr.s_addr) == 0) > > return 1; > > else > > return 0; > > } > > > >That is the IPv4 function. > > > > > > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073
pgsql-hackers by date: