From 1d7706a8506d8073def0965da809960c6ad8bf9a Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Wed, 8 Oct 2003 11:34:55 +0000 Subject: [PATCH 1/1] Update missing definitions, structs describing headers get __packed__ attribute. --- configure.in | 4 ++-- lib/ethernet.h | 24 ++++++++++++++++-------- lib/ipv4.h | 6 +++--- lib/ipv6.h | 14 +++++++------- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/configure.in b/configure.in index c66adb6c..f72229c6 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.13.2.84 2003/10/06 16:13:06 guus Exp $ +dnl $Id: configure.in,v 1.13.2.85 2003/10/08 11:34:55 guus Exp $ AC_PREREQ(2.57) AC_INIT(src/tincd.c) @@ -197,7 +197,7 @@ AC_STRUCT_TM tinc_ATTRIBUTE(__malloc__) -AC_CHECK_TYPES([socklen_t, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , , +AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , , [#ifdef HAVE_SYS_TYPES_H #include #endif diff --git a/lib/ethernet.h b/lib/ethernet.h index 697aa446..0784ce1b 100644 --- a/lib/ethernet.h +++ b/lib/ethernet.h @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: ethernet.h,v 1.1.2.4 2003/10/06 14:16:51 guus Exp $ + $Id: ethernet.h,v 1.1.2.5 2003/10/08 11:34:55 guus Exp $ */ #ifndef __TINC_ETHERNET_H__ @@ -43,14 +43,22 @@ #define ETH_P_IPV6 0x86DD #endif +#ifndef HAVE_STRUCT_ETHER_HEADER +struct ether_header { + uint8_t ether_dhost[ETH_ALEN]; + uint8_t ether_shost[ETH_ALEN]; + uint16_t ether_type; +} __attribute__ ((__packed__)); +#endif + #ifndef HAVE_STRUCT_ARPHDR struct arphdr { - unsigned short int ar_hrd; - unsigned short int ar_pro; - unsigned char ar_hln; - unsigned char ar_pln; - unsigned short int ar_op; -}; + uint16_t ar_hrd; + uint16_t ar_pro; + uint8_t ar_hln; + uint8_t ar_pln; + uint16_t ar_op; +} __attribute__ ((__packed__)); #define ARPOP_REQUEST 1 #define ARPOP_REPLY 2 @@ -68,7 +76,7 @@ struct ether_arp { uint8_t arp_spa[4]; uint8_t arp_tha[ETH_ALEN]; uint8_t arp_tpa[4]; -}; +} __attribute__ ((__packed__)); #define arp_hrd ea_hdr.ar_hrd #define arp_pro ea_hdr.ar_pro #define arp_hln ea_hdr.ar_hln diff --git a/lib/ipv4.h b/lib/ipv4.h index 4be432f7..0ee46fb2 100644 --- a/lib/ipv4.h +++ b/lib/ipv4.h @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: ipv4.h,v 1.1.2.3 2003/07/21 13:14:02 guus Exp $ + $Id: ipv4.h,v 1.1.2.4 2003/10/08 11:34:55 guus Exp $ */ #ifndef __TINC_IPV4_H__ @@ -68,7 +68,7 @@ struct ip { uint8_t ip_p; uint16_t ip_sum; struct in_addr ip_src, ip_dst; -}; +} __attribute__ ((__packed__)); #endif #ifndef HAVE_STRUCT_ICMP @@ -126,7 +126,7 @@ struct icmp { #define icmp_radv icmp_dun.id_radv #define icmp_mask icmp_dun.id_mask #define icmp_data icmp_dun.id_data -}; +} __attribute__ ((__packed__)); #endif #endif /* __TINC_IPV4_H__ */ diff --git a/lib/ipv6.h b/lib/ipv6.h index 0db5d011..6216cc05 100644 --- a/lib/ipv6.h +++ b/lib/ipv6.h @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: ipv6.h,v 1.1.2.6 2003/07/21 13:14:02 guus Exp $ + $Id: ipv6.h,v 1.1.2.7 2003/10/08 11:34:55 guus Exp $ */ #ifndef __TINC_IPV6_H__ @@ -38,7 +38,7 @@ struct in6_addr { uint16_t u6_addr16[8]; uint32_t u6_addr32[4]; } in6_u; -}; +} __attribute__ ((__packed__)); #define s6_addr in6_u.u6_addr8 #define s6_addr16 in6_u.u6_addr16 #define s6_addr32 in6_u.u6_addr32 @@ -51,7 +51,7 @@ struct sockaddr_in6 { uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; -}; +} __attribute__ ((__packed__)); #endif #ifndef IN6_IS_ADDR_V4MAPPED @@ -74,7 +74,7 @@ struct ip6_hdr { } ip6_ctlun; struct in6_addr ip6_src; struct in6_addr ip6_dst; -}; +} __attribute__ ((__packed__)); #define ip6_vfc ip6_ctlun.ip6_un2_vfc #define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow #define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen @@ -93,7 +93,7 @@ struct icmp6_hdr { uint16_t icmp6_un_data16[2]; uint8_t icmp6_un_data8[4]; } icmp6_dataun; -}; +} __attribute__ ((__packed__)); #define ICMP6_DST_UNREACH_NOROUTE 0 #define ICMP6_DST_UNREACH 1 #define ICMP6_DST_UNREACH_ADDR 3 @@ -105,7 +105,7 @@ struct icmp6_hdr { struct nd_neighbor_solicit { struct icmp6_hdr nd_ns_hdr; struct in6_addr nd_ns_target; -}; +} __attribute__ ((__packed__)); #define ND_OPT_SOURCE_LINKADDR 1 #define ND_OPT_TARGET_LINKADDR 2 #endif @@ -114,7 +114,7 @@ struct nd_neighbor_solicit { struct nd_opt_hdr { uint8_t nd_opt_type; uint8_t nd_opt_len; -}; +} __attribute__ ((__packed__)); #endif #endif /* __TINC_IPV6_H__ */ -- 2.20.1