static int mcast6opt_add_membership(struct netsocket_config *cfg) { struct ipv6_mreq mreq; mreq.ipv6mr_multiaddr = *get_addr6(bound_address); if (cfg->in_interface) { mreq.ipv6mr_interface = if_nametoindex(cfg->in_interface); if (!mreq.ipv6mr_interface) { log_perror("The incoming interface name is invalid", errno); return 1; } } else { mreq.ipv6mr_interface = 0; /* Any interface. */ } if (setsockopt(sk, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq, sizeof(mreq))) { log_perror("setsockopt(IPV6_ADD_MEMBERSHIP) failed", errno); return 1; } log_info("We're now registered to the multicast group."); return 0; }
SWITCH_DECLARE(const char *) switch_get_addr(char *buf, switch_size_t len, switch_sockaddr_t *in) { if (!in) { return SWITCH_BLANK_STRING; } if (in->family == AF_INET) { return get_addr(buf, len, (struct sockaddr *) &in->sa, in->salen); } return get_addr6(buf, len, (struct sockaddr_in6 *) &in->sa, in->salen); }
int main(int argc, char **argv) { if ( argc != 2 ) { printf("Usage: %s <hostname>\n",argv[0]); exit(1); } char *_h = argv[1]; get_addr4(_h); get_addr6(_h); printf("isabel_gethostbyname:: address failed. Host: [%s]\n", _h); exit(1); }