version 1.1, 2012/02/21 16:23:02
|
version 1.1.1.2, 2012/05/29 12:26:49
|
Line 61 set_interfaces(const char *ai)
|
Line 61 set_interfaces(const char *ai)
|
{ |
{ |
char *addrinfo, *addr, *mask; |
char *addrinfo, *addr, *mask; |
struct interface *ifp; |
struct interface *ifp; |
|
debug_decl(set_interfaces, SUDO_DEBUG_NETIF) |
|
|
addrinfo = estrdup(ai); |
addrinfo = estrdup(ai); |
for (addr = strtok(addrinfo, " \t"); addr != NULL; addr = strtok(NULL, " \t")) { |
for (addr = strtok(addrinfo, " \t"); addr != NULL; addr = strtok(NULL, " \t")) { |
Line 70 set_interfaces(const char *ai)
|
Line 71 set_interfaces(const char *ai)
|
*mask++ = '\0'; |
*mask++ = '\0'; |
|
|
/* Parse addr and store in list. */ |
/* Parse addr and store in list. */ |
ifp = emalloc(sizeof(*ifp)); | ifp = ecalloc(1, sizeof(*ifp)); |
if (strchr(addr, ':')) { |
if (strchr(addr, ':')) { |
/* IPv6 */ |
/* IPv6 */ |
#ifdef HAVE_IN6_ADDR | #ifdef HAVE_STRUCT_IN6_ADDR |
ifp->family = AF_INET6; |
ifp->family = AF_INET6; |
if (inet_pton(AF_INET6, addr, &ifp->addr.ip6) != 1 || |
if (inet_pton(AF_INET6, addr, &ifp->addr.ip6) != 1 || |
inet_pton(AF_INET6, mask, &ifp->netmask.ip6) != 1) |
inet_pton(AF_INET6, mask, &ifp->netmask.ip6) != 1) |
Line 97 set_interfaces(const char *ai)
|
Line 98 set_interfaces(const char *ai)
|
interfaces = ifp; |
interfaces = ifp; |
} |
} |
efree(addrinfo); |
efree(addrinfo); |
|
debug_return; |
} |
} |
|
|
void |
void |
dump_interfaces(const char *ai) |
dump_interfaces(const char *ai) |
{ |
{ |
char *cp, *addrinfo; |
char *cp, *addrinfo; |
|
debug_decl(set_interfaces, SUDO_DEBUG_NETIF) |
|
|
addrinfo = estrdup(ai); |
addrinfo = estrdup(ai); |
|
|
Line 111 dump_interfaces(const char *ai)
|
Line 114 dump_interfaces(const char *ai)
|
sudo_printf(SUDO_CONV_INFO_MSG, "\t%s\n", cp); |
sudo_printf(SUDO_CONV_INFO_MSG, "\t%s\n", cp); |
|
|
efree(addrinfo); |
efree(addrinfo); |
|
debug_return; |
} |
} |