diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-01-27 17:23:57 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-01-27 18:02:17 +0200 |
commit | ac37e0fd1fd5cce090035264ef4d7412735b9f7d (patch) | |
tree | e97d1e96624edebd3bd39c032d3eb43a1357512f /unix/modsocket.c | |
parent | 8f54c08691faa3dd859852d211230fd7d9791abd (diff) | |
download | micropython-ac37e0fd1fd5cce090035264ef4d7412735b9f7d.tar.gz micropython-ac37e0fd1fd5cce090035264ef4d7412735b9f7d.zip |
unix/modsocket: sockaddr(): Handle AF_INET6 addresses.
Diffstat (limited to 'unix/modsocket.c')
-rw-r--r-- | unix/modsocket.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/unix/modsocket.c b/unix/modsocket.c index 9caccb2874..b5a6041b16 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)); |