new
This commit is contained in:
parent
9fe7e1a14c
commit
9aec88f29c
12 changed files with 493 additions and 232 deletions
|
|
@ -2,20 +2,44 @@
|
|||
#include <libc.h>
|
||||
#include <ip.h>
|
||||
|
||||
static uchar loopbacknet[IPaddrlen] = {
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0xff, 0xff,
|
||||
127, 0, 0, 0
|
||||
};
|
||||
static uchar loopbackmask[IPaddrlen] = {
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0, 0, 0
|
||||
};
|
||||
|
||||
// find first ip addr that isn't the friggin loopback address
|
||||
// unless there are no others
|
||||
int
|
||||
myipaddr(uchar *ip, char *net)
|
||||
{
|
||||
Ipifc *nifc;
|
||||
Iplifc *lifc;
|
||||
static Ipifc *ifc;
|
||||
Ipifc *ifc;
|
||||
uchar mynet[IPaddrlen];
|
||||
|
||||
ifc = readipifc(net, ifc, -1);
|
||||
ifc = readipifc(net, nil, -1);
|
||||
for(nifc = ifc; nifc; nifc = nifc->next)
|
||||
for(lifc = nifc->lifc; lifc; lifc = lifc->next)
|
||||
for(lifc = nifc->lifc; lifc; lifc = lifc->next){
|
||||
maskip(lifc->ip, loopbackmask, mynet);
|
||||
if(ipcmp(mynet, loopbacknet) == 0){
|
||||
continue;
|
||||
}
|
||||
if(ipcmp(lifc->ip, IPnoaddr) != 0){
|
||||
ipmove(ip, lifc->ip);
|
||||
freeipifc(ifc);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
ipmove(ip, IPnoaddr);
|
||||
freeipifc(ifc);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue