50 #include <sys/socket.h>
51 #include <netinet/in.h>
52 #include <arpa/inet.h>
73 list->
addrs = (
struct sockaddr_storage *)
75 list->
size = init_size;
81 struct sockaddr *addr)
83 const char *myname =
"inet_addr_list_append";
93 new_size = list->
size * 2;
94 list->
addrs = (
struct sockaddr_storage *)
96 list->
size = new_size;
103 static int inet_addr_list_comp(
const void *a,
const void *b)
123 sizeof(list->
addrs[0]), inet_addr_list_comp);
129 for (m = n = 0; m < list->
used; m++, n++) {
132 while (m + 1 < list->
used
133 && inet_addr_list_comp((
void *) &(list->
addrs[n]),
134 (
void *) &(list->
addrs[m + 1])) == 0)
158 struct sockaddr_storage *sa;
160 for (sa = list->
addrs; sa < list->addrs + list->
used; sa++) {
167 int main(
int argc,
char **argv)
174 while (--argc && *++argv)
178 inet_addr_list_print(&list);
181 inet_addr_list_print(&list);
void inet_addr_list_uniq(INET_ADDR_LIST *list)
int sock_addr_cmp_addr(const struct sockaddr *sa, const struct sockaddr *sb)
void inet_addr_list_free(INET_ADDR_LIST *list)
void * myrealloc(void *ptr, ssize_t len)
int main(int argc, char **argv)
INET_PROTO_INFO * inet_proto_init(const char *context, const char *protocols)
struct sockaddr_storage * addrs
#define SOCKADDR_TO_HOSTADDR(sa, salen, host, port, sock)
#define INET_PROTO_NAME_ALL
char buf[MAI_HOSTADDR_STRSIZE]
#define SOCK_ADDR_PTR(ptr)
void inet_addr_list_init(INET_ADDR_LIST *list)
NORETURN msg_fatal(const char *fmt,...)
void inet_addr_list_append(INET_ADDR_LIST *list, struct sockaddr *addr)
#define SOCK_ADDR_LEN(sa)
int inet_addr_host(INET_ADDR_LIST *addr_list, const char *hostname)
void * mymalloc(ssize_t len)
void msg_info(const char *fmt,...)