Fix ping build on the FreeBSD
- Define iphdr structure to build busybox/ping - Add missing includes Signed-off-by: Alex Samorukov <samm@os2.kiev.ua> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
				
					committed by
					
						 Denys Vlasenko
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							f1baa4a6b4
						
					
				
				
					commit
					ca2dc96be8
				
			| @@ -122,6 +122,10 @@ | ||||
| //usage:       "round-trip min/avg/max = 20.1/20.1/20.1 ms\n" | ||||
|  | ||||
| #include <net/if.h> | ||||
| #if defined(__FreeBSD__) | ||||
| # include <netinet/in.h> /* struct ip and friends */ | ||||
| # include <netinet/ip.h> | ||||
| #endif | ||||
| #include <netinet/ip_icmp.h> | ||||
| #include "libbb.h" | ||||
| #include "common_bufsiz.h" | ||||
| @@ -160,6 +164,40 @@ | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| #if defined(__FreeBSD__) | ||||
| /** | ||||
|  * On BSD the IPv4 struct is called struct ip and instead of iXX | ||||
|  * the members are called ip_XX. One could change this code to use | ||||
|  * struct ip but that would require to define _BSD_SOURCE and that | ||||
|  * might have other complications. Instead make sure struct iphdr | ||||
|  * is present on FreeBSD. The below is taken from GLIBC. | ||||
|  * | ||||
|  * The GNU C Library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2.1 of the License, or (at your option) any later version. | ||||
|  */ | ||||
| struct iphdr { | ||||
| # if BYTE_ORDER == LITTLE_ENDIAN | ||||
| 	unsigned int ihl:4; | ||||
| 	unsigned int version:4; | ||||
| # elif BYTE_ORDER == BIG_ENDIAN | ||||
| 	unsigned int version:4; | ||||
| 	unsigned int ihl:4; | ||||
| # endif | ||||
| 	uint8_t  tos; | ||||
| 	uint16_t tot_len; | ||||
| 	uint16_t id; | ||||
| 	uint16_t frag_off; | ||||
| 	uint8_t  ttl; | ||||
| 	uint8_t  protocol; | ||||
| 	uint16_t check; | ||||
| 	uint32_t saddr; | ||||
| 	uint32_t daddr; | ||||
| 	/*The options start here. */ | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| enum { | ||||
| 	DEFDATALEN = 56, | ||||
| 	MAXIPLEN = 60, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user