--- /dev/null
+From 58a5ba12bffad5916d9897c2870fc483f1db8282 Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Thu, 22 Jun 2017 22:20:20 +0200
+Subject: [PATCH] remove __FAVOR_BSD
+
+Remove __FAVOR_BSD and sync with GNU C library
+
+Some issues compiling knock application fixed.
+
+Reported-By: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ include/features.h | 10 ----
+ include/netinet/tcp.h | 123 ++++++++++++++++++++++++++------------------------
+ include/netinet/udp.h | 33 +++++++-------
+ include/setjmp.h | 10 +---
+ include/signal.h | 18 ++------
+ include/unistd.h | 30 ++----------
+ 6 files changed, 88 insertions(+), 136 deletions(-)
+
+diff --git a/include/features.h b/include/features.h
+index 3a99593..7dc913f 100644
+--- a/include/features.h
++++ b/include/features.h
+@@ -78,7 +78,6 @@
+ __USE_GNU Define GNU extensions.
+ __USE_REENTRANT Define reentrant/thread-safe *_r functions.
+ __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+- __FAVOR_BSD Favor 4.3BSD things in cases of conflict.
+
+ The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+ defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+@@ -115,7 +114,6 @@
+ #undef __USE_GNU
+ #undef __USE_REENTRANT
+ #undef __USE_FORTIFY_LEVEL
+-#undef __FAVOR_BSD
+ #undef __KERNEL_STRICT_NAMES
+
+ /* Suppress kernel-name space pollution unless user expressedly asks
+@@ -155,14 +153,6 @@
+ # define _DEFAULT_SOURCE 1
+ #endif
+
+-/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
+-#if defined _BSD_SOURCE && \
+- !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
+- defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \
+- defined _GNU_SOURCE || defined _SVID_SOURCE)
+-# define __FAVOR_BSD 1
+-#endif
+-
+ /* If _GNU_SOURCE was defined by the user, turn on all the other features. */
+ #ifdef _GNU_SOURCE
+ # undef _ISOC99_SOURCE
+diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h
+index 04032bb..ade01cd 100644
+--- a/include/netinet/tcp.h
++++ b/include/netinet/tcp.h
+@@ -65,75 +65,78 @@
+ #ifdef __USE_MISC
+ # include <sys/types.h>
+ # include <sys/socket.h>
++# include <stdint.h>
+
+-# ifdef __FAVOR_BSD
+-typedef u_int32_t tcp_seq;
++typedef uint32_t tcp_seq;
+ /*
+ * TCP header.
+ * Per RFC 793, September, 1981.
+ */
+ struct tcphdr
+ {
+- u_int16_t th_sport; /* source port */
+- u_int16_t th_dport; /* destination port */
+- tcp_seq th_seq; /* sequence number */
+- tcp_seq th_ack; /* acknowledgement number */
+-# if __BYTE_ORDER == __LITTLE_ENDIAN
+- u_int8_t th_x2:4; /* (unused) */
+- u_int8_t th_off:4; /* data offset */
+-# endif
+-# if __BYTE_ORDER == __BIG_ENDIAN
+- u_int8_t th_off:4; /* data offset */
+- u_int8_t th_x2:4; /* (unused) */
+-# endif
+- u_int8_t th_flags;
+-# define TH_FIN 0x01
+-# define TH_SYN 0x02
+-# define TH_RST 0x04
+-# define TH_PUSH 0x08
+-# define TH_ACK 0x10
+-# define TH_URG 0x20
+- u_int16_t th_win; /* window */
+- u_int16_t th_sum; /* checksum */
+- u_int16_t th_urp; /* urgent pointer */
++ __extension__ union
++ {
++ struct
++ {
++ uint16_t th_sport; /* source port */
++ uint16_t th_dport; /* destination port */
++ tcp_seq th_seq; /* sequence number */
++ tcp_seq th_ack; /* acknowledgement number */
++# if __BYTE_ORDER == __LITTLE_ENDIAN
++ uint8_t th_x2:4; /* (unused) */
++ uint8_t th_off:4; /* data offset */
++# endif
++# if __BYTE_ORDER == __BIG_ENDIAN
++ uint8_t th_off:4; /* data offset */
++ uint8_t th_x2:4; /* (unused) */
++# endif
++ uint8_t th_flags;
++# define TH_FIN 0x01
++# define TH_SYN 0x02
++# define TH_RST 0x04
++# define TH_PUSH 0x08
++# define TH_ACK 0x10
++# define TH_URG 0x20
++ uint16_t th_win; /* window */
++ uint16_t th_sum; /* checksum */
++ uint16_t th_urp; /* urgent pointer */
++ };
++ struct
++ {
++ uint16_t source;
++ uint16_t dest;
++ uint32_t seq;
++ uint32_t ack_seq;
++# if __BYTE_ORDER == __LITTLE_ENDIAN
++ uint16_t res1:4;
++ uint16_t doff:4;
++ uint16_t fin:1;
++ uint16_t syn:1;
++ uint16_t rst:1;
++ uint16_t psh:1;
++ uint16_t ack:1;
++ uint16_t urg:1;
++ uint16_t res2:2;
++# elif __BYTE_ORDER == __BIG_ENDIAN
++ uint16_t doff:4;
++ uint16_t res1:4;
++ uint16_t res2:2;
++ uint16_t urg:1;
++ uint16_t ack:1;
++ uint16_t psh:1;
++ uint16_t rst:1;
++ uint16_t syn:1;
++ uint16_t fin:1;
++# else
++# error "Adjust your <bits/endian.h> defines"
++# endif
++ uint16_t window;
++ uint16_t check;
++ uint16_t urg_ptr;
++ };
++ };
+ };
+
+-# else /* !__FAVOR_BSD */
+-struct tcphdr
+- {
+- u_int16_t source;
+- u_int16_t dest;
+- u_int32_t seq;
+- u_int32_t ack_seq;
+-# if __BYTE_ORDER == __LITTLE_ENDIAN
+- u_int16_t res1:4;
+- u_int16_t doff:4;
+- u_int16_t fin:1;
+- u_int16_t syn:1;
+- u_int16_t rst:1;
+- u_int16_t psh:1;
+- u_int16_t ack:1;
+- u_int16_t urg:1;
+- u_int16_t res2:2;
+-# elif __BYTE_ORDER == __BIG_ENDIAN
+- u_int16_t doff:4;
+- u_int16_t res1:4;
+- u_int16_t res2:2;
+- u_int16_t urg:1;
+- u_int16_t ack:1;
+- u_int16_t psh:1;
+- u_int16_t rst:1;
+- u_int16_t syn:1;
+- u_int16_t fin:1;
+-# else
+-# error "Adjust your <bits/endian.h> defines"
+-# endif
+- u_int16_t window;
+- u_int16_t check;
+- u_int16_t urg_ptr;
+-};
+-# endif /* __FAVOR_BSD */
+-
+ enum
+ {
+ TCP_ESTABLISHED = 1,
+diff --git a/include/netinet/udp.h b/include/netinet/udp.h
+index 7d49768..ac6f234 100644
+--- a/include/netinet/udp.h
++++ b/include/netinet/udp.h
+@@ -52,27 +52,28 @@
+
+
+ /* UDP header as specified by RFC 768, August 1980. */
+-#ifdef __FAVOR_BSD
+
+ struct udphdr
+ {
+- u_int16_t uh_sport; /* source port */
+- u_int16_t uh_dport; /* destination port */
+- u_int16_t uh_ulen; /* udp length */
+- u_int16_t uh_sum; /* udp checksum */
++ __extension__ union
++ {
++ struct
++ {
++ uint16_t uh_sport; /* source port */
++ uint16_t uh_dport; /* destination port */
++ uint16_t uh_ulen; /* udp length */
++ uint16_t uh_sum; /* udp checksum */
++ };
++ struct
++ {
++ uint16_t source;
++ uint16_t dest;
++ uint16_t len;
++ uint16_t check;
++ };
++ };
+ };
+
+-#else
+-
+-struct udphdr
+-{
+- u_int16_t source;
+- u_int16_t dest;
+- u_int16_t len;
+- u_int16_t check;
+-};
+-#endif
+-
+ /* UDP socket options */
+ #define UDP_CORK 1 /* Never send partially complete segments. */
+ #define UDP_ENCAP 100 /* Set the socket to accept
+diff --git a/include/setjmp.h b/include/setjmp.h
+index 71c1d35..27cac95 100644
+--- a/include/setjmp.h
++++ b/include/setjmp.h
+@@ -59,21 +59,13 @@ __END_NAMESPACE_STD
+ extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask)
+ __THROWNL;
+
+-#ifndef __FAVOR_BSD
+ /* Store the calling environment in ENV, not saving the signal mask.
+ Return 0. */
+ extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
+
+ /* Do not save the signal mask. This is equivalent to the `_setjmp'
+ BSD function. */
+-# define setjmp(env) _setjmp (env)
+-#else
+-/* We are in 4.3 BSD-compatibility mode in which `setjmp'
+- saves the signal mask like `sigsetjmp (ENV, 1)'. We have to
+- define a macro since ISO C says `setjmp' is one. */
+-# define setjmp(env) setjmp (env)
+-#endif /* Favor BSD. */
+-
++#define setjmp(env) _setjmp (env)
+
+ __BEGIN_NAMESPACE_STD
+
+diff --git a/include/signal.h b/include/signal.h
+index 38292a7..d2d5e4a 100644
+--- a/include/signal.h
++++ b/include/signal.h
+@@ -191,27 +191,15 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
+ /* The `sigpause' function has two different interfaces. The original
+ BSD definition defines the argument as a mask of the signal, while
+ the more modern interface in X/Open defines it as the signal
+- number. We go with the BSD version unless the user explicitly
+- selects the X/Open version.
++ number. We go with the X/Open version.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+-/*extern int __sigpause (int __sig_or_mask, int __is_sig);*/
+-
+-#ifdef __FAVOR_BSD
+-/* Set the mask of blocked signals to MASK,
+- wait for a signal to arrive, and then restore the mask. */
+-/*extern int sigpause (int __mask) __THROW __attribute_deprecated__;
+-# define sigpause(mask) __sigpause ((mask), 0)*/
+-/* uClibc note: BSD sigpause is available as __bsd_sigpause.
+- * It is intentionally not prototyped */
+-#else
+-# ifdef __USE_XOPEN
++
++# ifdef __USE_XOPEN_EXTENDED
+ /* Remove a signal from the signal mask and suspend the process. */
+ extern int sigpause(int __sig);
+-/*# define sigpause(sig) __sigpause ((sig), 1)*/
+ # endif
+-#endif
+ #endif /* __UCLIBC_SUSV4_LEGACY__ */
+
+ #if 0 /*def __USE_BSD*/
+diff --git a/include/unistd.h b/include/unistd.h
+index 8e4daf6..f48ce21 100644
+--- a/include/unistd.h
++++ b/include/unistd.h
+@@ -673,17 +673,8 @@ libc_hidden_proto(getpid)
+ /* Get the process ID of the calling process's parent. */
+ extern __pid_t getppid (void) __THROW;
+
+-/* Get the process group ID of the calling process.
+- This function is different on old BSD. */
+-#ifndef __FAVOR_BSD
++/* Get the process group ID of the calling process. */
+ extern __pid_t getpgrp (void) __THROW;
+-#else
+-# ifdef __REDIRECT_NTH
+-extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
+-# else
+-# define getpgrp __getpgid
+-# endif
+-#endif
+
+ /* Get the process group ID of process PID. */
+ extern __pid_t __getpgid (__pid_t __pid) __THROW;
+@@ -698,7 +689,7 @@ extern __pid_t getpgid (__pid_t __pid) __THROW;
+ extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW;
+ libc_hidden_proto(setpgid)
+
+-#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
++#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+ /* Both System V and BSD have `setpgrp' functions, but with different
+ calling conventions. The BSD function is the same as POSIX.1 `setpgid'
+ (above). The System V function takes no arguments and puts the calling
+@@ -706,26 +697,13 @@ libc_hidden_proto(setpgid)
+
+ New programs should always use `setpgid' instead.
+
+- The default in GNU is to provide the System V function. The BSD
+- function is available under -D_BSD_SOURCE. */
+-
+-# ifndef __FAVOR_BSD
++ GNU provides the POSIX.1 function. */
+
+ /* Set the process group ID of the calling process to its own PID.
+ This is exactly the same as `setpgid (0, 0)'. */
+ extern int setpgrp (void) __THROW;
+
+-# else
+-
+-/* Another name for `setpgid' (above). */
+-# ifdef __REDIRECT_NTH
+-extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
+-# else
+-# define setpgrp setpgid
+-# endif
+-
+-# endif /* Favor BSD. */
+-#endif /* Use SVID or BSD. */
++#endif /* Use misc or X/Open. */
+
+ /* Create a new session with the calling process as its leader.
+ The process group IDs of the session and the calling process
+--
+2.1.4
+