From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@cse.psu.edu Subject: Re: [9fans] csipinfo From: Joel “chesky” Salomon Date: Wed, 18 Oct 2006 16:17:19 -0400 In-Reply-To: <365a3b8e0ce821506adb926ac1001503@plan9.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: cd0b0ad4-ead1-11e9-9d60-3106f5b1d025 I think I have a working gethostbyaddr: char* gethostbyaddr(char *net, char *addr) { // Thanks to erik and rog for their help with this code char buf[1024], errbuf[ERRMAX], *dq[4], *host; int fd, l; if(net == nil) net = "/net"; snprint(buf, sizeof buf, "%s/dns", net); if((fd = open(buf, ORDWR)) < 0){ l = snprint(errbuf, ERRMAX, "gethostbyaddr: can't open %s: %r", buf); errstr(errbuf, l); return nil; } if(getfields(addr, dq, 4, 1, ".") != 4){ close(fd); werrstr("gethostbyaddr: malformed address"); return nil; } l = snprint(buf, sizeof buf, "%s.%s.%s.%s.in-addr.arpa ptr", dq[3], dq[2], dq[1], dq[0]); if(write(fd, buf, l) != l){ l = snprint(errbuf, ERRMAX, "gethostbyaddr: write error resolving %s.%s.%s.%s: %s/dns: %r", dq[0], dq[1], dq[2], dq[3], net); close(fd); errstr(errbuf, l); return nil; } if(read(fd, buf, sizeof buf) <= 0){ l = snprint(errbuf, ERRMAX, "gethostbyaddr: read error resolving %s.%s.%s.%s: %s/dns: %r", dq[0], dq[1], dq[2], dq[3], net); close(fd); errstr(errbuf, l); return nil; } close(fd); host = strstr(buf, " ptr "); if(host == nil){ werrstr("gethostbyaddr: dns lookup failed"); return nil; } return strdup(host); } --Joel