5 static uchar loopbacknet[IPaddrlen] = {
11 static uchar loopbackmask[IPaddrlen] = {
12 0xff, 0xff, 0xff, 0xff,
13 0xff, 0xff, 0xff, 0xff,
14 0xff, 0xff, 0xff, 0xff,
17 static uchar loopback6[IPaddrlen] = {
24 // find first ip that isn't a friggin loopback or
25 // link-local address. prefer v4 over v6.
27 myipaddr(uchar *ip, char *net)
32 uchar mynet[IPaddrlen];
35 ifc = readipifc(net, ifc, -1);
36 for(nifc = ifc; nifc != nil; nifc = nifc->next){
37 for(lifc = nifc->lifc; lifc != nil; lifc = lifc->next){
39 if(ipcmp(lifc->ip, IPnoaddr) == 0)
44 maskip(lifc->ip, loopbackmask, mynet);
45 if(ipcmp(mynet, loopbacknet) == 0)
52 /* already got a v6 address? */
53 if(ipcmp(ip, IPnoaddr) != 0)
57 if(ipcmp(lifc->ip, loopback6) == 0)
61 if(ISIPV6LINKLOCAL(lifc->ip))
64 /* save first v6 address */
68 return ipcmp(ip, IPnoaddr) != 0 ? 0 : -1;