libsocket
libsocket copied to clipboard
FreeBSD compilation fail
Hi, uname -a FreeBSD freebsd1 10.2-RELEASE-p9 FreeBSD 10.2-RELEASE-p9 #0: Thu Jan 14 01:32:46 UTC 2016 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64 compiler clang 3.4.1
The problem while compiling:
/home/alex/Downloads/libsocket-master/C/inet/libinetsocket.c:957:43: error: no member named 'ifr_ifindex' in 'struct ifreq' mreq4.imr_ifindex = interface.ifr_ifindex; ~~~~~~~~~ ^ /home/alex/Downloads/libsocket-master/C/inet/libinetsocket.c:997:48: error: no member named 'ifr_ifindex' in 'struct ifreq' mreq6.ipv6mr_interface = interface.ifr_ifindex; ~~~~~~~~~ ^ /home/alex/Downloads/libsocket-master/C/inet/libinetsocket.c:1000:60: error: use of undeclared identifier 'IPV6_ADD_MEMBERSHIP' if ( -1 == check_error(setsockopt(sfd,IPPROTO_IPV6,IPV6_ADD_MEMBERSHIP,&mreq6,sizeof(struct ipv6_mreq))) )
Temporary solution: Add to ./C/inet/libnetsocket.c:
#ifdef __FreeBSD__
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
#endif
Modify line ~960
# ifdef __FreeBSD__
mreq4.imr_ifindex = interface.ifr_ifru.ifru_index;
#else
mreq4.imr_ifindex = interface.ifr_ifindex;
# endif
And modify line ~1005
# ifdef __FreeBSD__
mreq6.ipv6mr_interface = interface.ifr_ifru.ifru_index;
#else
mreq6.ipv6mr_interface = interface.ifr_ifindex;
# endif
Modified file: libinetsocket.c.tar.gz I have attached the modified file. Thanks.
Thanks for finding this bug! Can you send me a pull request in order to patch this? (should be easy given that you already have the patched file)
Ok, I will send pull request soon.
Kind Regards, Alexander