Skip to content

Commit 11b97d7

Browse files
dhylandspfalcon
authored andcommitted
unix: Add socket.inet_ntop function
1 parent 5b3f0b7 commit 11b97d7

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

unix/modsocket.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,20 @@ STATIC mp_obj_t mod_socket_inet_pton(mp_obj_t family_in, mp_obj_t addr_in) {
421421
}
422422
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_socket_inet_pton_obj, mod_socket_inet_pton);
423423

424+
STATIC mp_obj_t mod_socket_inet_ntop(mp_obj_t family_in, mp_obj_t binaddr_in) {
425+
int family = mp_obj_get_int(family_in);
426+
mp_buffer_info_t bufinfo;
427+
mp_get_buffer_raise(binaddr_in, &bufinfo, MP_BUFFER_READ);
428+
vstr_t vstr;
429+
vstr_init_len(&vstr, family == AF_INET ? INET_ADDRSTRLEN : INET6_ADDRSTRLEN);
430+
if (inet_ntop(family, bufinfo.buf, vstr.buf, vstr.len) == NULL) {
431+
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(errno)));
432+
}
433+
vstr.len = strlen(vstr.buf);
434+
return mp_obj_new_str_from_vstr(&mp_type_str, &vstr);
435+
}
436+
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_socket_inet_ntop_obj, mod_socket_inet_ntop);
437+
424438
STATIC mp_obj_t mod_socket_getaddrinfo(size_t n_args, const mp_obj_t *args) {
425439
// TODO: Implement all args
426440
assert(n_args >= 2 && n_args <= 4);
@@ -522,6 +536,7 @@ STATIC const mp_rom_map_elem_t mp_module_socket_globals_table[] = {
522536
{ MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&usocket_type) },
523537
{ MP_ROM_QSTR(MP_QSTR_getaddrinfo), MP_ROM_PTR(&mod_socket_getaddrinfo_obj) },
524538
{ MP_ROM_QSTR(MP_QSTR_inet_pton), MP_ROM_PTR(&mod_socket_inet_pton_obj) },
539+
{ MP_ROM_QSTR(MP_QSTR_inet_ntop), MP_ROM_PTR(&mod_socket_inet_ntop_obj) },
525540
{ MP_ROM_QSTR(MP_QSTR_sockaddr), MP_ROM_PTR(&mod_socket_sockaddr_obj) },
526541
#if MICROPY_SOCKET_EXTRA
527542
{ MP_ROM_QSTR(MP_QSTR_htons), MP_ROM_PTR(&mod_socket_htons_obj) },

unix/qstrdefsport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ Q(socket)
8888
Q(sockaddr)
8989
Q(htons)
9090
Q(inet_pton)
91+
Q(inet_ntop)
9192
Q(gethostbyname)
9293
Q(getaddrinfo)
9394
Q(usocket)

0 commit comments

Comments
 (0)