aboutsummaryrefslogtreecommitdiff
path: root/net/bird/files/sysdep-bsd-sysio.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/bird/files/sysdep-bsd-sysio.h')
-rw-r--r--net/bird/files/sysdep-bsd-sysio.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/net/bird/files/sysdep-bsd-sysio.h b/net/bird/files/sysdep-bsd-sysio.h
new file mode 100644
index 000000000000..609fbef089ee
--- /dev/null
+++ b/net/bird/files/sysdep-bsd-sysio.h
@@ -0,0 +1,23 @@
+diff --git sysdep/bsd/sysio.h sysdep/bsd/sysio.h
+index 2610a47..9b10e6e 100644
+--- sysdep/bsd/sysio.h
++++ sysdep/bsd/sysio.h
+@@ -9,6 +9,7 @@
+ #include <net/if_dl.h>
+ #include <netinet/in_systm.h> // Workaround for some BSDs
+ #include <netinet/ip.h>
++#include <sys/param.h>
+
+
+ #ifdef __NetBSD__
+@@ -179,8 +180,8 @@ sk_prepare_ip_header(sock *s, void *hdr, int dlen)
+ ip->ip_src = ipa_to_in4(s->saddr);
+ ip->ip_dst = ipa_to_in4(s->daddr);
+
+-#ifdef __OpenBSD__
+- /* OpenBSD expects ip_len in network order, other BSDs expect host order */
++#if (defined __OpenBSD__) || (defined __DragonFly__) || (defined __FreeBSD__ && (__FreeBSD_version >= 1100030))
++ /* Different BSDs have different expectations of ip_len endianity */
+ ip->ip_len = htons(ip->ip_len);
+ #endif
+ }