From ac37e0fd1fd5cce090035264ef4d7412735b9f7d Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 27 Jan 2016 17:23:57 +0200 Subject: [PATCH] unix/modsocket: sockaddr(): Handle AF_INET6 addresses. --- unix/modsocket.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/unix/modsocket.c b/unix/modsocket.c index 9caccb287..b5a6041b1 100644 --- a/unix/modsocket.c +++ b/unix/modsocket.c @@ -521,6 +521,16 @@ STATIC mp_obj_t mod_socket_sockaddr(mp_obj_t sockaddr_in) { t->items[2] = MP_OBJ_NEW_SMALL_INT(ntohs(sa->sin_port)); return MP_OBJ_FROM_PTR(t); } + case AF_INET6: { + struct sockaddr_in6 *sa = (struct sockaddr_in6*)bufinfo.buf; + mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(5, NULL)); + t->items[0] = MP_OBJ_NEW_SMALL_INT(AF_INET6); + t->items[1] = mp_obj_new_bytes((byte*)&sa->sin6_addr, sizeof(sa->sin6_addr)); + t->items[2] = MP_OBJ_NEW_SMALL_INT(ntohs(sa->sin6_port)); + t->items[3] = MP_OBJ_NEW_SMALL_INT(ntohl(sa->sin6_flowinfo)); + t->items[4] = MP_OBJ_NEW_SMALL_INT(ntohl(sa->sin6_scope_id)); + return MP_OBJ_FROM_PTR(t); + } default: { struct sockaddr *sa = (struct sockaddr*)bufinfo.buf; mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(2, NULL)); -- GitLab