X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgnio.git;a=blobdiff_plain;f=gnio%2Fgsocketaddress.c;fp=gnio%2Fgsocketaddress.c;h=2421108a4a223a1900498a062f96a983c0e043e0;hp=cd77127e716bc2f4f950dd6368a103089a086600;hb=932359e12259081300067d273febe261eee0c870;hpb=5183a9b80c8a22531948af76f4433f0a1a510cbc diff --git a/gnio/gsocketaddress.c b/gnio/gsocketaddress.c index cd77127..2421108 100644 --- a/gnio/gsocketaddress.c +++ b/gnio/gsocketaddress.c @@ -30,6 +30,7 @@ #include "gsocketaddress.h" #include "ginetsocketaddress.h" #include "ginet4address.h" +#include "ginet6address.h" G_DEFINE_ABSTRACT_TYPE (GSocketAddress, g_socket_address, G_TYPE_INITIALLY_UNOWNED); @@ -80,7 +81,15 @@ g_socket_address_from_native (gpointer native, gsize len) return G_SOCKET_ADDRESS (g_inet_socket_address_new (G_INET_ADDRESS (g_inet4_address_from_bytes ((guint8 *) &(addr->sin_addr))), g_ntohs (addr->sin_port))); } - // TODO: handle AF_INET6 and AF_UNIX + + if (family == AF_INET6) + { + struct sockaddr_in6 *addr = (struct sockaddr_in6 *) native; + + return G_SOCKET_ADDRESS (g_inet_socket_address_new (G_INET_ADDRESS (g_inet6_address_from_bytes ((guint8 *) &(addr->sin6_addr))), g_ntohs (addr->sin6_port))); + } + + // TODO: handle AF_UNIX return NULL; }