Date: Sun, 22 Jul 2001 21:11:50 +0100 From: Brian Somers <brian@Awfulhak.org> To: Hajimu UMEMOTO <ume@mahoroba.org> Cc: brian@Awfulhak.org, brian@FreeBSD.org, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, brian@Awfulhak.org Subject: Re: cvs commit: src/lib/libutil realhostname.c Message-ID: <200107222011.f6MKBog08546@hak.lan.Awfulhak.org> In-Reply-To: Message from Hajimu UMEMOTO <ume@mahoroba.org> of "Mon, 23 Jul 2001 03:23:54 %2B0900." <20010723.032354.31691239.ume@mahoroba.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> Umm, getaddrinfo(3) searches AAAA RR even if AF_UNSPEC is specified. > What's happen? > > brian> Interestingly enough, getaddrinfo seemed to be returning two > brian> 172.16.0.1 INET entries when it was given AF_UNSPEC in the hints.... > brian> I don't know if that's relevant in any way though. > > I see. realhostname_sa(3) didn't initialize hints correctly. Please > try this: > > Index: lib/libutil/realhostname.c > =================================================================== > RCS file: /home/ncvs/src/lib/libutil/realhostname.c,v > retrieving revision 1.12 > diff -u -r1.12 realhostname.c > --- lib/libutil/realhostname.c 2001/07/21 00:18:54 1.12 > +++ lib/libutil/realhostname.c 2001/07/22 18:20:19 > @@ -96,7 +96,8 @@ > > result = HOSTNAME_INVALIDADDR; > > - error = getnameinfo(addr, addrlen, buf, sizeof(buf), NULL, 0, 0); > + error = getnameinfo(addr, addrlen, buf, sizeof(buf), NULL, 0, > + NI_WITHSCOPEID); > if (error == 0) { > struct addrinfo hints, *res, *ores; > struct sockaddr *sa; > @@ -111,7 +112,8 @@ > hints.ai_family = AF_UNSPEC; > break; > } > - hints.ai_flags = AI_CANONNAME; > + hints.ai_flags = AI_CANONNAME | AI_PASSIVE; > + hints.ai_socktype = SOCK_STREAM; > > error = getaddrinfo(buf, NULL, &hints, &res); > if (error) { > With this patch, getaddrinfo() only comes back with the A record, and realhostname_sa() fails (because it's not the same as the connecting IPv6 number). I'd try to be of more help, but I'm still confused about the intention of the getaddrinfo() hints. For the ::ffff:w.x.y.z addresses, surely looking that up and getting whatever w.x.y.z's PTR record refers to, then trying to get an A record back from that will just end up with ``w.x.y.z'' -- which won't match the original IP and will just make things fail. I'm assuming the following DNS setup now: $ORIGIN y.x.w.in-addr.any. z IN PTR some.domain.name. $ORIGIN domain.name. some IN A w.x.y.z If you could give me a better idea about what's supposed to happen (or point me at an RFC or something) it'd be appreciated. Sorry to be such a PITA :-/ > -- > Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan > ume@mahoroba.org ume@bisd.hitachi.co.jp ume@{,jp.}FreeBSD.org > http://www.imasy.org/~ume/ Thanks. -- Brian <brian@freebsd-services.com> <brian@Awfulhak.org> http://www.freebsd-services.com/ <brian@[uk.]FreeBSD.org> Don't _EVER_ lose your sense of humour ! <brian@[uk.]OpenBSD.org> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200107222011.f6MKBog08546>