Blame


1 d7094239 2003-11-23 devnull #include <u.h>
2 d7094239 2003-11-23 devnull #include <libc.h>
3 d7094239 2003-11-23 devnull #include <ip.h>
4 d7094239 2003-11-23 devnull
5 9aec88f2 2005-12-31 devnull static uchar loopbacknet[IPaddrlen] = {
6 9aec88f2 2005-12-31 devnull 0, 0, 0, 0,
7 9aec88f2 2005-12-31 devnull 0, 0, 0, 0,
8 9aec88f2 2005-12-31 devnull 0, 0, 0xff, 0xff,
9 9aec88f2 2005-12-31 devnull 127, 0, 0, 0
10 9aec88f2 2005-12-31 devnull };
11 9aec88f2 2005-12-31 devnull static uchar loopbackmask[IPaddrlen] = {
12 9aec88f2 2005-12-31 devnull 0xff, 0xff, 0xff, 0xff,
13 9aec88f2 2005-12-31 devnull 0xff, 0xff, 0xff, 0xff,
14 9aec88f2 2005-12-31 devnull 0xff, 0xff, 0xff, 0xff,
15 9aec88f2 2005-12-31 devnull 0xff, 0, 0, 0
16 9aec88f2 2005-12-31 devnull };
17 9aec88f2 2005-12-31 devnull
18 cbeb0b26 2006-04-01 devnull /* find first ip addr that isn't the friggin loopback address */
19 cbeb0b26 2006-04-01 devnull /* unless there are no others */
20 d7094239 2003-11-23 devnull int
21 d7094239 2003-11-23 devnull myipaddr(uchar *ip, char *net)
22 d7094239 2003-11-23 devnull {
23 d7094239 2003-11-23 devnull Ipifc *nifc;
24 d7094239 2003-11-23 devnull Iplifc *lifc;
25 9aec88f2 2005-12-31 devnull Ipifc *ifc;
26 9aec88f2 2005-12-31 devnull uchar mynet[IPaddrlen];
27 d7094239 2003-11-23 devnull
28 9aec88f2 2005-12-31 devnull ifc = readipifc(net, nil, -1);
29 d7094239 2003-11-23 devnull for(nifc = ifc; nifc; nifc = nifc->next)
30 9aec88f2 2005-12-31 devnull for(lifc = nifc->lifc; lifc; lifc = lifc->next){
31 9aec88f2 2005-12-31 devnull maskip(lifc->ip, loopbackmask, mynet);
32 9aec88f2 2005-12-31 devnull if(ipcmp(mynet, loopbacknet) == 0){
33 9aec88f2 2005-12-31 devnull continue;
34 9aec88f2 2005-12-31 devnull }
35 d7094239 2003-11-23 devnull if(ipcmp(lifc->ip, IPnoaddr) != 0){
36 d7094239 2003-11-23 devnull ipmove(ip, lifc->ip);
37 9aec88f2 2005-12-31 devnull freeipifc(ifc);
38 d7094239 2003-11-23 devnull return 0;
39 d7094239 2003-11-23 devnull }
40 9aec88f2 2005-12-31 devnull }
41 d7094239 2003-11-23 devnull ipmove(ip, IPnoaddr);
42 9aec88f2 2005-12-31 devnull freeipifc(ifc);
43 d7094239 2003-11-23 devnull return -1;
44 d7094239 2003-11-23 devnull }