15 // int socket_bind46(struct addrinfo * hints, char * addr, char * port, int * ls, int maxsock);
17 int socket_bind46(struct addrinfo * hints, char * addr, char * port, int * ls, int maxsock)
19 static struct addrinfo * res;
20 static struct addrinfo * res0;
25 char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
32 error = getaddrinfo(addr, port, hints, &res0);
34 fprintf(stderr,"%s : %s: %s\n", addr, port, gai_strerror(error));
40 for(res = res0; res && smax < maxsock; res = res->ai_next){
41 ls[smax] = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
45 if(ls[smax] >= FD_SETSIZE){
51 if(res->ai_family == AF_INET6 && setsockopt(ls[smax], IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0){
57 if(bind(ls[smax], res->ai_addr, res->ai_addrlen) < 0){
62 if(listen(ls[smax], 5) < 0){
67 error = getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV);
69 fprintf(stderr,"test: %s\n", gai_strerror(error));
72 fprintf(stderr,"listen to %s %s %d\n", hbuf, sbuf, ls[smax]);
73 if(ls[smax] > sockmax){