From: Martin Willi Date: Mon, 29 Sep 2014 15:11:53 +0000 (+0200) Subject: kernel-netlink: Fallback to UDP if detecting socket protocol fails X-Git-Tag: 5.2.2dr1~35^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3065081c3e9d1505e37a6b4aef8d9f4955bce61a;p=thirdparty%2Fstrongswan.git kernel-netlink: Fallback to UDP if detecting socket protocol fails getsockopt(SO_PROTOCOL) is not supported before 2.6.32. Default to UDP if either the SO_PROTOCOL define is missing or the syscall fails. --- diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_ipsec.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_ipsec.c index f0ada41d58..0f88b649ed 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_ipsec.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_ipsec.c @@ -2720,10 +2720,12 @@ static bool add_port_bypass(private_kernel_netlink_ipsec_t *this, { return FALSE; } +#ifdef SO_PROTOCOL /* since 2.6.32 */ len = sizeof(bypass.proto); if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &bypass.proto, &len) != 0) - { - return FALSE; +#endif + { /* assume UDP if SO_PROTOCOL not supported */ + bypass.proto = IPPROTO_UDP; } switch (family) {