dermesser / libsocket

The ultimate socket library for C and C++, supporting TCP, UDP and Unix sockets (DGRAM and STREAM) on Linux, FreeBSD, Solaris. See also my uvco library for a refreshed version!
https://borgac.net/~lbo/doc/libsocket/
Other
797 stars 195 forks source link

FreeBSD - build failed #74

Closed Peter2121 closed 3 years ago

Peter2121 commented 3 years ago

FreeBSD 12.1-RELEASE-p10 Clang 8.0.1 (from base)

Scanning dependencies of target socket_o
[  4%] Building C object C/CMakeFiles/socket_o.dir/inet/libinetsocket.c.o
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:11:9: warning: 'LIBSOCKET_LINUX' macro redefined [-Wmacro-redefined]
#define LIBSOCKET_LINUX 1
        ^
/home/peter/Programming/libsocket/build/headers/conf.h:2:9: note: previous definition is here
#define LIBSOCKET_LINUX 0
        ^
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:13:9: warning: 'LIBSOCKET_FREEBSD' macro redefined [-Wmacro-redefined]
#define LIBSOCKET_FREEBSD 0
        ^
/home/peter/Programming/libsocket/build/headers/conf.h:3:9: note: previous definition is here
#define LIBSOCKET_FREEBSD 1
        ^
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:467:20: warning: variable 'addrlen' is used uninitialized whenever 'if' condition is
      false [-Wsometimes-uninitialized]
        } else if (oldsockaddr.ss_family == AF_INET6) {
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:474:42: note: uninitialized use occurs here
            (he = gethostbyaddr(addrptr, addrlen, oldsockaddr.ss_family))) {
                                         ^~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:467:16: note: remove the 'if' if its condition is always true
        } else if (oldsockaddr.ss_family == AF_INET6) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:397:19: note: initialize the variable 'addrlen' to silence this warning
    size_t addrlen;
                  ^
                   = 0
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:504:21: warning: unused variable 'deconnect' [-Wunused-variable]
    struct sockaddr deconnect;
                    ^
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:868:20: warning: variable 'in_addrlen' is used uninitialized whenever 'if' condition
      is false [-Wsometimes-uninitialized]
        } else if (oldsockaddr.ss_family == AF_INET6) {
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:875:42: note: uninitialized use occurs here
            (he = gethostbyaddr(addrptr, in_addrlen, oldsockaddr.ss_family))) {
                                         ^~~~~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:868:16: note: remove the 'if' if its condition is always true
        } else if (oldsockaddr.ss_family == AF_INET6) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:807:22: note: initialize the variable 'in_addrlen' to silence this warning
    size_t in_addrlen;
                     ^
                      = 0
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:1021:43: error: no member named 'ifr_ifindex' in 'struct ifreq'
            mreq4.imr_ifindex = interface.ifr_ifindex;
                                ~~~~~~~~~ ^
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:1059:48: error: no member named 'ifr_ifindex' in 'struct ifreq'
            mreq6.ipv6mr_interface = interface.ifr_ifindex;
                                     ~~~~~~~~~ ^
/home/peter/Programming/libsocket/C/inet/libinetsocket.c:1062:61: error: use of undeclared identifier 'IPV6_ADD_MEMBERSHIP'
        if (-1 == check_error(setsockopt(sfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP,
                                                            ^
5 warnings and 3 errors generated.
*** Error code 1

Stop.
make[2]: stopped in /usr/home/peter/Programming/libsocket/build
*** Error code 1

Stop.
make[1]: stopped in /usr/home/peter/Programming/libsocket/build
*** Error code 1

Stop.
make: stopped in /usr/home/peter/Programming/libsocket/build
dermesser commented 3 years ago

I notice that the actual error is in the multicast code within libinetsocket. Depending on your time/knowledge (I don't currently have a functional FreeBSD system), do you know if there are similar facilities on FreeBSD?

Alternatively we can switch off compilation of the multicast code on FreeBSD.

Peter2121 commented 3 years ago

Sorry, I switched to another library now. Anyway, I have no answer on your question - I don't know.

dermesser commented 3 years ago

Well, I guess it's time to get my hands on FreeBSD again ;-)

Peter2121 commented 3 years ago

Hope, you'll have a success ;)