diff options
author | Maria Matejka <mq@ucw.cz> | 2022-02-04 15:26:36 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-02-04 15:26:36 +0100 |
commit | fe840ddad96259ed7b2f1d0d2f07bdf8d4c03384 (patch) | |
tree | 8a59e7eceaa1cfabb400f1fc2fbf0eaebf0d959f /sysdep/linux/sysio.h | |
parent | 14bb6fd29a1c88103e73138d5fd4396e610aa469 (diff) | |
parent | a9646efd40569f3a1d749bc1bd13219876b33a00 (diff) |
Merge commit 'a9646efd40569f3a1d749bc1bd13219876b33a00' into sark-bgp-rebased
Diffstat (limited to 'sysdep/linux/sysio.h')
-rw-r--r-- | sysdep/linux/sysio.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sysdep/linux/sysio.h b/sysdep/linux/sysio.h index e21ff487..f13eda7c 100644 --- a/sysdep/linux/sysio.h +++ b/sysdep/linux/sysio.h @@ -10,6 +10,10 @@ #define IPV6_MINHOPCOUNT 73 #endif +#ifndef IPV6_FREEBIND +#define IPV6_FREEBIND 78 +#endif + #ifndef TCP_MD5SIG_EXT #define TCP_MD5SIG_EXT 32 #endif @@ -266,3 +270,18 @@ sk_set_priority(sock *s, int prio) return 0; } +static inline int +sk_set_freebind(sock *s) +{ + int y = 1; + + if (sk_is_ipv4(s)) + if (setsockopt(s->fd, SOL_IP, IP_FREEBIND, &y, sizeof(y)) < 0) + ERR("IP_FREEBIND"); + + if (sk_is_ipv6(s)) + if (setsockopt(s->fd, SOL_IPV6, IPV6_FREEBIND, &y, sizeof(y)) < 0) + ERR("IPV6_FREEBIND"); + + return 0; +} |