Those two issues give more context - https://github.com/cloudius-systems/osv/issues/355 and https://github.com/cloudius-systems/osv/issues/351.
On Thursday, August 13, 2020 at 12:10:25 PM UTC-4 Waldek Kozaczuk wrote: > As I have been working on trying to reduce files copied from musl, > specifically those that use syscall by using the macro approach I described > earlier, I have come across 3 files that use syscall but also use socket() > call differently than musl. > > And I think we have a problem in 2 of those. > > In this commit > https://github.com/cloudius-systems/osv/commit/c4df1043285b7597709f5199d619658909a22794, > > Nadav copied if_nameindex.c from musl into libc/network but also changed > socket call like this: > > < int s = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); > --- > > int s = socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, 0); > > because AF_UNIX domain is not supported in OSv (read the commit). > > Now 2 other files - if_indextoname.c, if_nametoindex.c - have socket() > call that uses AF_UNIX which most likely (we do not have unit tests for > these) fails: > > socket(AF_UNIX, SOCK_DGRAM, 0)) > > So I think we should change AF_UNIX to AF_INET in those as well, right? > > Also it seems these 2 files were copied from older musl and new musl adds > protocol option SOCK_CLOEXEC and there is no reason we should have it > different - see this diff between OSv and musl: > > DIFF: [/network/if_indextoname.c] > 6c6 > < #include "syscall.h" > --- > > #include "unistd.h" > 13c13 > < if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return > 0; > --- > > if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) return 0; > 16c16 > < __syscall(SYS_close, fd); > --- > > close(fd); > > Finally, I think we can solve the socket call changes (AF_UNIX->AF_INET) > with --include libc/network/socket_mod.h option where this header looks > like so: > > #include <sys/socket.h> > #undef socket > #define socket(domain,type,protocol) socket(AF_INET,type,protocol) > > We should also enhance existing tests/tst-ifaddrs.cc to test > if_indextoname and if_nametoindex. > > Waldek > -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/3e46c9d2-7ee1-490c-b528-b65ec03fde43n%40googlegroups.com.
