As you can tell, I didn't have much time to examine the patch (which is a result of the fact that I didn't and still don't completely know the API; as I said before, I fell asleep reading the RFC 3/4 the way through.) Thank you for the information, since I knew this was the level of information I did not have. From: Arkadiusz Miśkiewicz <misiek@pld.org.pl> misiek> On Tue, 18 Apr 2000, Brad Allen wrote: misiek> > KAME/INRIA BSD patch for XFree worked under Linux without mods. I misiek> this is dirty patch ... X won't work on ipv4 only host (ie misiek> ipv6 module wasn't loaded) and for example because that X in misiek> PLD GNU/Linux are without IPv6 support ;-( misiek> ps. XFree86 Team is planing ipv6 support ? I did not mean to infer this. I want them to, and they seem not to be, which in my NSH opinion is stupid since even if this patch is dirty, it seems pretty trivial and indicates to me a high possibility of a trivial clean patch. Also, since the patch works, it also seems to me that it could offer easy pointers on starting points for a clean patch. Perhaps XFree86.Org needs some guidance on IPv6 issues, and needs someone to take up the ball to put together such a clean patch for say, 3.3.6, and then port it to 4.0.0, and test both and when they are shown to work under various combinations, then send the patch in to the XFree86 team outlining the specific IPv6 issues and which ones have been addressed (such as the one you brought up). This would probably make the XFree86 team more comfortable including IPv6 in their product sooner rather than later. Still, I thought issues of IP#s in fields that use colons as seperators between IP# and other non-IP# data need to be addressed (but see below; I may be wrong); I simply used NSSWITCH.CONF "hosts: files ..." and a domain name to mimick this behavoir, and I think is a wholey acceptable workaround for now, as that workaround is clean and administratively clean as well, since using an IP# in a config file is administratively the same as using an IP# in a different config file corresponding to a name. (Be sure to put "files" (or "db" if you use that) before everything else (i.e., "dns") for the "hosts:" line in /etc/nsswitch.conf for this administratively equivalent behavoir, and pare your /etc/hosts file down to only the XFree86 entries, plus whatever else you actually found NECESSARY for /etc/hosts, which in my case was very little; mostly security concerns.) Ok, I could be wrong, because I am scanning the patch now and found: diff -urN X335/xc/lib/xtrans/Xtrans.c xc/lib/xtrans/Xtrans.c --- X335/xc/lib/xtrans/Xtrans.c Thu Jul 29 18:22:31 1999 +++ xc/lib/xtrans/Xtrans.c Sat Dec 11 04:10:38 1999 @@ -218,7 +218,9 @@ * * If the protocol part is missing, then assume INET. * If the protocol part and host part are missing, then assume local. - * If a "::" is found then assume DNET. + * If a "host::" is found then assume DNET. + * For IPv6, pb with possible : in host --> use rightmost : and test + * x:y->inet, x::y->dnet, x:::y->inet(v6) */ char *mybuf, *tmpptr; :::::::::::::::::::::::::::::::::::::::: Ah, I see, here is: - struct sockaddr_in sockname; + struct sockaddr_in6 sockname; This doesn't seem to be using the more flexible stuff found in the API RFC near the section where I fell asleep (the IEEE API). (Why did I fall asleep? I had written down the entire (first, more traditional) API, only to find that another entire API was going to be repeated all over again in the RFC, probably better and probably what I should be using (starts with getaddrinfo() if I'm not mistaken).) :::::::::::::::::::::::::::::::::::::::: And this looks raunchy to say the least: - if ((hostp = _XGethostbyname (hostname,hparams)) != NULL) + if ((_res.options & RES_INIT) == 0) + (void) res_init (); + options = _res.options; + _res.options &= ~RES_USE_INET6; + hostp = _XGethostbyname (hostname,hparams); + _res.options = options; + if (hostp != NULL) That looks like a getaddrinfo() candidate if I've ever seen one (which I haven't, so I have no idea). :::::::::::::::::::::::::::::::::::::::: Look, guys, the patch only has 52 pages = 3146 lines = 11935 words = 96915 characters. It works, and ought to give some good pointers to someone wanting to do a clean IPv6 interface rewrite and polish job and start jousting with the XFree86 freaks. (I can't and won't due to time resource problems.) I left a copy of it at: http://www.bayview.com/~ulmo/ipv6/x/xfree86-3.3.5-ipv6-19990224.diff.gz You have to use the download command in your WWW browser. I'll also leave it at: http://www.bayview.com/~ulmo/ipv6/x/xfree86-3.3.5-ipv6-19990224.diff MD5SUM: 96c2e6d7c15cc9d16196cf1f3a908a27 I used it against XFree86's 3.3.6 source (their latest before 4.0.0) with no problems. I do not know if that would be duplicating effort with anybody in the BSD camp, or at XFree, but my first guess would be no.
Attachment:
pgpGNseq5wqAn.pgp
Description: PGP signature