diff options
Diffstat (limited to 'src/common/network.c')
-rw-r--r-- | src/common/network.c | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/src/common/network.c b/src/common/network.c index c026116e..fcdaf547 100644 --- a/src/common/network.c +++ b/src/common/network.c @@ -65,10 +65,8 @@ net_ip (guint32 addr) void net_store_destroy (netstore * ns) { -#ifdef USE_IPV6 if (ns->ip6_hostent) freeaddrinfo (ns->ip6_hostent); -#endif g_free (ns); } @@ -78,110 +76,6 @@ net_store_new (void) return g_new0 (netstore, 1); } -#ifndef USE_IPV6 - -/* =================== IPV4 ================== */ - -/* - A note about net_resolve and lookupd: - - Many IRC networks rely on round-robin DNS for load balancing, rotating the list - of IP address on each query. However, this method breaks when DNS queries are - cached. Mac OS X and Darwin handle DNS lookups through the lookupd daemon, which - caches queries in its default configuration: thus, if we always pick the first - address, we will be stuck with the same host (which might be down!) until the - TTL reaches 0 or lookupd is reset (typically, at reboot). Therefore, we need to - pick a random address from the result list, instead of always using the first. -*/ - -char * -net_resolve (netstore * ns, char *hostname, int port, char **real_host) -{ - ns->ip4_hostent = gethostbyname (hostname); - if (!ns->ip4_hostent) - return NULL; - - memset (&ns->addr, 0, sizeof (ns->addr)); -#ifdef LOOKUPD - int count = 0; - while (ns->ip4_hostent->h_addr_list[count]) count++; - memcpy (&ns->addr.sin_addr, - ns->ip4_hostent->h_addr_list[RAND_INT(count)], - ns->ip4_hostent->h_length); -#else - memcpy (&ns->addr.sin_addr, ns->ip4_hostent->h_addr, - ns->ip4_hostent->h_length); -#endif - ns->addr.sin_port = htons (port); - ns->addr.sin_family = AF_INET; - - *real_host = g_strdup (ns->ip4_hostent->h_name); - return g_strdup (inet_ntoa (ns->addr.sin_addr)); -} - -int -net_connect (netstore * ns, int sok4, int sok6, int *sok_return) -{ - *sok_return = sok4; - return connect (sok4, (struct sockaddr *) &ns->addr, sizeof (ns->addr)); -} - -void -net_bind (netstore * tobindto, int sok4, int sok6) -{ - bind (sok4, (struct sockaddr *) &tobindto->addr, sizeof (tobindto->addr)); -} - -void -net_sockets (int *sok4, int *sok6) -{ - *sok4 = socket (AF_INET, SOCK_STREAM, 0); - *sok6 = -1; - net_set_socket_options (*sok4); -} - -void -udp_sockets (int *sok4, int *sok6) -{ - *sok4 = socket (AF_INET, SOCK_DGRAM, 0); - *sok6 = -1; -} - -void -net_store_fill_any (netstore *ns) -{ - ns->addr.sin_family = AF_INET; - ns->addr.sin_addr.s_addr = INADDR_ANY; - ns->addr.sin_port = 0; -} - -void -net_store_fill_v4 (netstore *ns, guint32 addr, int port) -{ - ns->addr.sin_family = AF_INET; - ns->addr.sin_addr.s_addr = addr; - ns->addr.sin_port = port; -} - -guint32 -net_getsockaddr_v4 (netstore *ns) -{ - return ns->addr.sin_addr.s_addr; -} - -int -net_getsockport (int sok4, int sok6) -{ - struct sockaddr_in addr; - int len = sizeof (addr); - - if (getsockname (sok4, (struct sockaddr *)&addr, &len) == -1) - return -1; - return addr.sin_port; -} - -#else - /* =================== IPV6 ================== */ char * @@ -294,5 +188,3 @@ udp_sockets (int *sok4, int *sok6) *sok4 = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); *sok6 = socket (AF_INET6, SOCK_DGRAM, IPPROTO_UDP); } - -#endif |