 27c9d80f51
			
		
	
	27c9d80f51
	
	
		
			
	
		
	
	
		
			Some checks failed
		
		
	
	Build Kernel / Build all affected Kernels (push) Has been cancelled
				
			Build all core packages / Build all core packages for selected target (push) Has been cancelled
				
			Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
				
			Build Toolchains / Build Toolchains for each target (push) Has been cancelled
				
			Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
				
			Coverity scan build / Coverity x86/64 build (push) Has been cancelled
				
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 98ec18f098e5ef68e3a8cc6954fcaf5a7fb8b7be Mon Sep 17 00:00:00 2001
 | |
| From: pali <7141871+pali@users.noreply.github.com>
 | |
| Date: Mon, 15 Feb 2021 07:54:01 +0100
 | |
| Subject: [PATCH] pppd: Fix compilation with older glibc or kernel headers
 | |
|  (#248)
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| glibc versions prior to 2.24 do not define SOL_NETLINK and linux kernel
 | |
| versions prior to 4.3 do not define NETLINK_CAP_ACK. So add fallback
 | |
| definitions for these macros into pppd/sys-linux.c file.
 | |
| 
 | |
| Also extend description why we call SOL_NETLINK/NETLINK_CAP_ACK option.
 | |
| 
 | |
| Signed-off-by: Pali Rohár <pali@kernel.org>
 | |
| ---
 | |
|  pppd/sys-linux.c | 18 +++++++++++++++++-
 | |
|  1 file changed, 17 insertions(+), 1 deletion(-)
 | |
| 
 | |
| --- a/pppd/sys-linux.c
 | |
| +++ b/pppd/sys-linux.c
 | |
| @@ -125,6 +125,14 @@
 | |
|  #include <linux/netlink.h>
 | |
|  #include <linux/rtnetlink.h>
 | |
|  #include <linux/if_addr.h>
 | |
| +/* glibc versions prior to 2.24 do not define SOL_NETLINK */
 | |
| +#ifndef SOL_NETLINK
 | |
| +#define SOL_NETLINK 270
 | |
| +#endif
 | |
| +/* linux kernel versions prior to 4.3 do not define/support NETLINK_CAP_ACK */
 | |
| +#ifndef NETLINK_CAP_ACK
 | |
| +#define NETLINK_CAP_ACK 10
 | |
| +#endif
 | |
|  #endif
 | |
|  
 | |
|  #include "pppd.h"
 | |
| @@ -2843,7 +2851,15 @@ static int append_peer_ipv6_address(unsi
 | |
|      if (fd < 0)
 | |
|          return 0;
 | |
|  
 | |
| -    /* do not ask for error message content */
 | |
| +    /*
 | |
| +     * Tell kernel to not send to us payload of acknowledgment error message.
 | |
| +     * NETLINK_CAP_ACK option is supported since Linux kernel version 4.3 and
 | |
| +     * older kernel versions always send full payload in acknowledgment netlink
 | |
| +     * message. We ignore payload of this message as we need only error code,
 | |
| +     * to check if our set remote peer address request succeeded or failed.
 | |
| +     * So ignore return value from the following setsockopt() call as setting
 | |
| +     * option NETLINK_CAP_ACK means for us just a kernel hint / optimization.
 | |
| +     */
 | |
|      one = 1;
 | |
|      setsockopt(fd, SOL_NETLINK, NETLINK_CAP_ACK, &one, sizeof(one));
 | |
|  
 |