|
|
| version 1.1.1.2, 2012/05/29 12:26:49 | version 1.1.1.4, 2014/06/15 16:12:54 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> | * Copyright (c) 2010-2013 Todd C. Miller <Todd.Miller@courtesan.com> |
| * | * |
| * Permission to use, copy, modify, and distribute this software for any | * Permission to use, copy, modify, and distribute this software for any |
| * purpose with or without fee is hereby granted, provided that the above | * purpose with or without fee is hereby granted, provided that the above |
| Line 18 | Line 18 |
| #include <sys/types.h> | #include <sys/types.h> |
| #include <sys/socket.h> | #include <sys/socket.h> |
| #include <sys/param.h> | |
| #include <stdio.h> | #include <stdio.h> |
| #ifdef STDC_HEADERS | #ifdef STDC_HEADERS |
| # include <stdlib.h> | # include <stdlib.h> |
| Line 52 | Line 51 |
| # define INADDR_NONE ((unsigned int)-1) | # define INADDR_NONE ((unsigned int)-1) |
| #endif | #endif |
| static struct interface_list interfaces; | |
| /* | /* |
| * Parse a space-delimited list of IP address/netmask pairs and | * Parse a space-delimited list of IP address/netmask pairs and |
| * store in a list of interface structures. | * store in a list of interface structures. |
| Line 86 set_interfaces(const char *ai) | Line 87 set_interfaces(const char *ai) |
| } else { | } else { |
| /* IPv4 */ | /* IPv4 */ |
| ifp->family = AF_INET; | ifp->family = AF_INET; |
| ifp->addr.ip4.s_addr = inet_addr(addr); | if (inet_pton(AF_INET, addr, &ifp->addr.ip4) != 1 || |
| ifp->netmask.ip4.s_addr = inet_addr(mask); | inet_pton(AF_INET, mask, &ifp->netmask.ip4) != 1) { |
| if (ifp->addr.ip4.s_addr == INADDR_NONE || | |
| ifp->netmask.ip4.s_addr == INADDR_NONE) { | |
| efree(ifp); | efree(ifp); |
| continue; | continue; |
| } | } |
| } | } |
| ifp->next = interfaces; | SLIST_INSERT_HEAD(&interfaces, ifp, entries); |
| interfaces = ifp; | |
| } | } |
| efree(addrinfo); | efree(addrinfo); |
| debug_return; | debug_return; |
| } | |
| struct interface_list * | |
| get_interfaces(void) | |
| { | |
| return &interfaces; | |
| } | } |
| void | void |