diff options
Diffstat (limited to 'results/classifier/118/socket/1837')
| -rw-r--r-- | results/classifier/118/socket/1837 | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/results/classifier/118/socket/1837 b/results/classifier/118/socket/1837 new file mode 100644 index 000000000..9ea903523 --- /dev/null +++ b/results/classifier/118/socket/1837 @@ -0,0 +1,65 @@ +socket: 0.927 +user-level: 0.885 +architecture: 0.824 +device: 0.713 +arm: 0.687 +network: 0.685 +peripherals: 0.625 +PID: 0.609 +graphic: 0.530 +ppc: 0.514 +kernel: 0.460 +performance: 0.442 +files: 0.421 +semantic: 0.352 +vnc: 0.301 +TCG: 0.289 +boot: 0.279 +risc-v: 0.244 +VMM: 0.242 +debug: 0.185 +i386: 0.156 +mistranslation: 0.150 +x86: 0.136 +assembly: 0.130 +virtual: 0.115 +KVM: 0.114 +register: 0.093 +hypervisor: 0.078 +permissions: 0.022 + +Support IP_MULTICAST_IF socket option in linux-user +Additional information: +I've run into this limitation in qemu-aarch64-static version Debian 1:6.2+dfsg-2ubuntu6.12, but from the link above, it doesn't seem to be implemented on master yet. + +Here's some source code that demonstrates the failure: +``` +#include <sys/socket.h> +#include <arpa/inet.h> +#include <netinet/ip.h> +#include <unistd.h> +#include <assert.h> +#include <stdio.h> + +int main() +{ + int fd, ret; + struct in_addr addr = {htonl(INADDR_LOOPBACK)}; + + fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + assert(fd >= 0); + ret = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, &addr, sizeof(addr)); + if (ret < 0) + { + perror("setsockopt failed"); + return 1; + } + close(fd); + printf("Success!\n"); + return 0; +} +``` + +When run under qemu, it gives the error `setsockopt failed: Protocol not available`. + +It doesn't look like it should be too hard to support (certainly no worse than IP_ADD_MEMBERSHIP). Let me know if I can help with a patch. |