Module: kamailio Branch: master Commit: ff3cf17ff3566cb08cb0a6b9f7f7d893cd908956 URL: https://github.com/kamailio/kamailio/commit/ff3cf17ff3566cb08cb0a6b9f7f7d893...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2017-05-02T10:37:41+02:00
core, sctp: check if IP_FREEBIND is defined
- not all os-es have it
---
Modified: src/core/tcp_main.c Modified: src/core/udp_server.c Modified: src/modules/sctp/sctp_server.c
---
Diff: https://github.com/kamailio/kamailio/commit/ff3cf17ff3566cb08cb0a6b9f7f7d893... Patch: https://github.com/kamailio/kamailio/commit/ff3cf17ff3566cb08cb0a6b9f7f7d893...
---
diff --git a/src/core/tcp_main.c b/src/core/tcp_main.c index b9af4e8..2b08967 100644 --- a/src/core/tcp_main.c +++ b/src/core/tcp_main.c @@ -2783,12 +2783,16 @@ int tcp_init(struct socket_info* sock_info) } }
- /* Allow bind to non local address. Required when daemon started before network initialized */ +#if defined(IP_FREEBIND) + /* allow bind to non local address. + * useful when daemon started before network initialized */ if (setsockopt(sock_info->socket, IPPROTO_IP, IP_FREEBIND, (void*)&optval, sizeof(optval)) ==-1) { - LM_WARN("setsockopt freebind: %s\n", strerror(errno)); + LM_WARN("setsockopt freebind failed: %s\n", strerror(errno)); /* continue since this is not critical */ } +#endif + #ifdef HAVE_TCP_DEFER_ACCEPT /* linux only */ if ((optval=cfg_get(tcp, tcp_cfg, defer_accept))){ diff --git a/src/core/udp_server.c b/src/core/udp_server.c index 96ba8eb..2641fae 100644 --- a/src/core/udp_server.c +++ b/src/core/udp_server.c @@ -339,14 +339,16 @@ int udp_init(struct socket_info* sock_info) } #endif
- /* Allow bind to non local address. Required when daemon started before network initialized */ +#if defined(IP_FREEBIND) + /* allow bind to non local address. + * useful when daemon started before network initialized */ optval = 1; if (setsockopt(sock_info->socket, IPPROTO_IP, IP_FREEBIND, (void*)&optval, sizeof(optval)) ==-1) { - LM_WARN("setsockopt freebind: %s\n", strerror(errno)); + LM_WARN("setsockopt freebind failed: %s\n", strerror(errno)); /* continue since this is not critical */ } - +#endif #ifdef USE_MCAST if ((sock_info->flags & SI_IS_MCAST) && (setup_mcast_rcvr(sock_info->socket, addr, sock_info->mcast.s)<0)){ diff --git a/src/modules/sctp/sctp_server.c b/src/modules/sctp/sctp_server.c index 686139c..5d5371a 100644 --- a/src/modules/sctp/sctp_server.c +++ b/src/modules/sctp/sctp_server.c @@ -468,14 +468,17 @@ static int sctp_init_sock_opt_common(int s, int af) /* continue since this is not critical */ } } - - /* Allow bind to non local address. Required when daemon started before network initialized */ + +#if defined(IP_FREEBIND) + /* allow bind to non local address. + * useful when daemon started before network initialized */ optval = 1; if (setsockopt(s, IPPROTO_IP, IP_FREEBIND, (void*)&optval, sizeof(optval)) ==-1) { - LM_WARN("sctp_init_sock_opt_common: setsockopt freebind %s\n", strerror(errno)); + LM_WARN("setsockopt freebind failed: %s\n", strerror(errno)); /* continue since this is not critical */ } +#endif
/* set receive buffer: SO_RCVBUF*/ if (cfg_get(sctp, sctp_cfg, so_rcvbuf)){ @@ -487,7 +490,7 @@ static int sctp_init_sock_opt_common(int s, int af) /* continue, non-critical */ } } - + /* set send buffer: SO_SNDBUF */ if (cfg_get(sctp, sctp_cfg, so_sndbuf)){ optval=cfg_get(sctp, sctp_cfg, so_sndbuf);