From bb60cc8568d592535d3f9195aa40a4377e13a69c Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 12 Dec 2024 10:48:14 +0100 Subject: [BOX32][WRAPPER] Added more libc and libresolv 32bits wrapped functions --- src/libtools/libc_net32.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'src/libtools') diff --git a/src/libtools/libc_net32.c b/src/libtools/libc_net32.c index 0b6ae083..3ad95202 100644 --- a/src/libtools/libc_net32.c +++ b/src/libtools/libc_net32.c @@ -60,6 +60,50 @@ EXPORT ssize_t my32_sendmsg(x64emu_t* emu, int socket, struct i386_msghdr* msg, return ret; } +EXPORT int my32_recvmmsg(x64emu_t* emu, int socket, struct i386_mmsghdr* msgs, uint32_t vlen, uint32_t flags, void* timeout) +{ + struct mmsghdr m[vlen]; + uint32_t iovlen = 0; + size_t ctrlen = 0; + for(uint32_t i=0; iiovlen) iovlen = msgs[i].msg_hdr.msg_iovlen; + if(msgs[i].msg_hdr.msg_controllen>ctrlen) ctrlen = msgs[i].msg_hdr.msg_controllen; + m[i].msg_len = msgs[i].msg_len; + } + struct iovec iov[vlen][iovlen]; + uint8_t buff[vlen][ctrlen+256]; + for(uint32_t i=0; iiovlen) iovlen = msgs[i].msg_hdr.msg_iovlen; + if(msgs[i].msg_hdr.msg_controllen>ctrlen) ctrlen = msgs[i].msg_hdr.msg_controllen; + m[i].msg_len = msgs[i].msg_len; + } + struct iovec iov[vlen][iovlen]; + uint8_t buff[vlen][ctrlen+256]; + for(uint32_t i=0; is_name); + ret.s_port = s->s_port; + ret.s_proto = to_cstring(s->s_proto); + ptr_t strs = to_ptrv(&strings); + int idx = 0; + ret.s_aliases = s->s_aliases?strs:0; + if(s->s_aliases) { + char** p = s->s_aliases; + while(*p) { + strings[idx++] = to_cstring(*p); + ++p; + } + strings[idx++] = 0; + } + // done + emu->libc_herr = h_errno; + return &ret; +} + struct i386_ifaddrs { ptr_t ifa_next; // struct ifaddrs * -- cgit 1.4.1