version 1.64, 2014/07/20 09:31:25 |
version 1.65, 2014/07/20 09:59:42 |
|
|
{ |
{ |
static char lsr[44]; |
static char lsr[44]; |
char *cp, *cp2, *lsrp, *lsrep; |
char *cp, *cp2, *lsrp, *lsrep; |
struct in_addr sin_addr; |
struct in_addr addr; |
struct hostent *host = 0; |
struct hostent *host = 0; |
char c; |
char c; |
|
|
|
|
|
|
cp++; |
cp++; |
|
|
sin_addr.s_addr = 0; |
addr.s_addr = 0; |
|
|
for (c = 0;;) { |
for (c = 0;;) { |
if (c == ':') |
if (c == ':') |
|
|
if (!c) |
if (!c) |
cp2 = 0; |
cp2 = 0; |
|
|
if ((sin_addr.s_addr = inet_addr(cp)) != INADDR_NONE) { |
if ((addr.s_addr = inet_addr(cp)) == INADDR_NONE) { |
} else if ((host = gethostbyname(cp))) { |
if ((host = gethostbyname(cp)) == NULL) { |
memmove((caddr_t)&sin_addr, |
*cpp = cp; |
host->h_addr_list[0], |
return(0); |
sizeof(sin_addr)); |
} |
} else { |
memcpy(&addr, host->h_addr_list[0], sizeof addr); |
*cpp = cp; |
|
return(0); |
|
} |
} |
memmove(lsrp, (char *)&sin_addr, 4); |
memcpy(lsrp, &addr, 4); |
lsrp += 4; |
lsrp += 4; |
if (cp2) |
if (cp2) |
cp = cp2; |
cp = cp2; |
|
|
} |
} |
*lsrp++ = IPOPT_NOP; /* 32 bit word align it */ |
*lsrp++ = IPOPT_NOP; /* 32 bit word align it */ |
*lenp = lsrp - *cpp; |
*lenp = lsrp - *cpp; |
return(sin_addr.s_addr); |
return(addr.s_addr); |
} |
} |