On Mon, Mar 17, 2014 at 7:24 PM, Ben Noordhuis <[email protected]> wrote:
> A small test program follows:
>
>   #include <sys/socket.h>
>   #include <netinet/in.h>
>   #include <arpa/inet.h>
>   #include <stddef.h>
>
>   int main(void) {
>     int fd;
>     struct ip_mreq m4;
>     struct ipv6_mreq m6;
>     fd = socket(AF_INET6, SOCK_DGRAM, 0);
>     inet_aton("224.0.0.2", &m4.imr_multiaddr);
>     inet_aton("0.0.0.0", &m4.imr_interface);
>     inet_pton(AF_INET6, "ff01::c", &m6.ipv6mr_multiaddr);
>     m6.ipv6mr_interface = 42;
>     setsockopt(fd, SOL_IP, IP_ADD_MEMBERSHIP, &m4, 4);
>     setsockopt(fd, SOL_IP, IP_DROP_MEMBERSHIP, &m4, 4);
>     setsockopt(fd, SOL_IP, IP_ADD_MEMBERSHIP, &m4, sizeof(m4));
>     setsockopt(fd, SOL_IP, IP_DROP_MEMBERSHIP, &m4, sizeof(m4));
>     setsockopt(fd, SOL_IP, IPV6_ADD_MEMBERSHIP, &m6, sizeof(m6));
>     setsockopt(fd, SOL_IP, IPV6_DROP_MEMBERSHIP, &m6, sizeof(m6));
>     setsockopt(fd, SOL_IP, IPV6_ADD_MEMBERSHIP, &m6, 4);
>     setsockopt(fd, SOL_IP, IPV6_DROP_MEMBERSHIP, &m6, 4);
>     return 0;
>   }
>
> And prints the following output when traced:
>
>   setsockopt(3, SOL_IP, IP_ADD_MEMBERSHIP, "\340\0\0\2", 4)
>     = -1 EINVAL (Invalid argument)
>   setsockopt(3, SOL_IP, IP_DROP_MEMBERSHIP, "\340\0\0\2", 4)
>     = -1 EINVAL (Invalid argument)
>   setsockopt(3, SOL_IP, IP_ADD_MEMBERSHIP,
>       {imr_multiaddr=inet_addr("224.0.0.2"),
>       imr_interface=inet_addr("0.0.0.0")}, 8) = 0
>   setsockopt(3, SOL_IP, IP_DROP_MEMBERSHIP,
>       {imr_multiaddr=inet_addr("224.0.0.2"),
>       imr_interface=inet_addr("0.0.0.0")}, 8) = 0
>   setsockopt(3, SOL_IP, IPV6_ADD_MEMBERSHIP,
>       {ipv6mr_multiaddr=inet_addr("ff01::c"), ipv6mr_interface=42}, 20)
>     = 0
>   setsockopt(3, SOL_IP, IPV6_DROP_MEMBERSHIP,
>       {ipv6mr_multiaddr=inet_addr("ff01::c"), ipv6mr_interface=42}, 20)
>     = -1 EINVAL (Invalid argument)
>   setsockopt(3, SOL_IP, IPV6_ADD_MEMBERSHIP, "\377\1\0\0", 4) = 0
>   setsockopt(3, SOL_IP, IPV6_DROP_MEMBERSHIP, "\377\1\0\0", 4)
>     = -1 EINVAL (Invalid argument)

Excellent, really thanks mucho for providing a test.
I will let Dmitry review and comment on the patch proper.

On my side I am interested in the test and I might try to make this
part of the make check.
Time to beef up a notch strace's test framework!

-- 
Philippe Ombredanne

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Strace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to