Hi all,
i think at some point a wrong boolean condition was introduced to
fix_all_socket_lists in socket_info.c. Attached is a fix.
I am in the process of getting kamailio to run on my Solaris 11.3. I
observed that add_interfaces does not work properly on Solaris for IPv6
interfaces. Modern Solarises, however, have getifaddrs() which linuxes
have since glibc-2.3 (2005 or so) and freebsd has it as well (don't know
since when).
My plan is:
1. Replace add_interfaces with a getifaddrs() based implementation and
get feedback from the community re: Solaris, FreeBSD and other platforms
2. Drop add_interfaces_via_netlink in favour of the above as well (for
Linux).
What do you think?
Regards,
Christian
--- socket_info.c.orig 2015-11-25 14:42:32.000000000 +0100
+++ socket_info.c 2015-12-02 13:45:51.130418762 +0100
@@ -1809,7 +1809,7 @@
#ifdef __OS_linux
&& (!auto_bind_ipv6 || add_interfaces_via_netlink(0,
AF_INET6, 0, PROTO_UDP, &ai_lst) == 0)
#else
- && ( !auto_bind_ipv6 || add_interfaces(0, AF_INET6, 0,
PROTO_UDP, &ai_lst) !=0 ) /* add_interface does not work for IPv6 on
Linux */
+ && ( !auto_bind_ipv6 || add_interfaces(0, AF_INET6, 0,
PROTO_UDP, &ai_lst) ==0 ) /* add_interface does not work for IPv6 on
Linux */
#endif /* __OS_linux */
) && (addr_info_to_si_lst(ai_lst, 0,
PROTO_UDP, 0, &udp_listen)==0)){
free_addr_info_lst(&ai_lst);