summaryrefslogtreecommitdiff
path: root/appletalk.h
diff options
context:
space:
mode:
authorguy <guy>2002-12-11 07:13:49 +0000
committerguy <guy>2002-12-11 07:13:49 +0000
commitfcc82f451d3e51fdf636abbf927edb287bada0e0 (patch)
tree938119171c0d1eb45c66c2f576b95293f04f468b /appletalk.h
parent3a4254f5c662637cf669ff66b941240d7e456d6d (diff)
downloadtcpdump-fcc82f451d3e51fdf636abbf927edb287bada0e0.tar.gz
The "__attribute__((packed))" tag on structures causes some files not to
compile with Sun C, as "interface.h" isn't being included before the structures are being declared. Furthermore, in the files that Sun C *can* compile, it doesn't cause Sun C to generate code that's safe with unaligned accesses, as "__attribute__" is defined as a do-nothing macro with compilers that don't support it. Therefore, we get rid of that tag on the structures to which it was added, and instead use "EXTRACT_16BIT()" and "EXTRACT_32BIT()" to fetch 16-bit and 32-bit big-endian quantities from packets. We also fix some other references to multi-byte quantities to get rid of code that tries to do unaligned loads on platforms that don't support them. We also throw in a hack that makes those macros use "__attribute__((packed))" on structures containing only one 16-bit or 32-bit integer to get the compiler to generate unaligned-safe code rather than doing it by hand. (GCC on SPARC produces the same code that doing it by hand does; I don't know if GCC on any other big-endian strict-alignment processor generates better code for that case. On little-endian processors, as "ntohs()" and "ntohl()" might be functions, that might actually produce worse code.) Fix some places to use "%u" rather than "%d" to print unsigned quantities.
Diffstat (limited to 'appletalk.h')
-rw-r--r--appletalk.h18
1 files changed, 9 insertions, 9 deletions
diff --git a/appletalk.h b/appletalk.h
index 056be22f..552f3d13 100644
--- a/appletalk.h
+++ b/appletalk.h
@@ -20,14 +20,14 @@
*
* AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
*
- * @(#) $Header: /tcpdump/master/tcpdump/appletalk.h,v 1.14 2002-11-09 17:19:17 itojun Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/appletalk.h,v 1.15 2002-12-11 07:13:49 guy Exp $ (LBL)
*/
struct LAP {
u_int8_t dst;
u_int8_t src;
u_int8_t type;
-} __attribute__((packed));
+};
#define lapShortDDP 1 /* short DDP type */
#define lapDDP 2 /* DDP type */
#define lapKLAP 'K' /* Kinetics KLAP type */
@@ -44,14 +44,14 @@ struct atDDP {
u_int8_t dstSkt;
u_int8_t srcSkt;
u_int8_t type;
-} __attribute__((packed));
+};
struct atShortDDP {
u_int16_t length;
u_int8_t dstSkt;
u_int8_t srcSkt;
u_int8_t type;
-} __attribute__((packed));
+};
#define ddpMaxWKS 0x7F
#define ddpMaxData 586
@@ -77,7 +77,7 @@ struct atATP {
u_int8_t bitmap;
u_int16_t transID;
int32_t userData;
-} __attribute__((packed));
+};
#define atpReqCode 0x40
#define atpRspCode 0x80
@@ -96,7 +96,7 @@ struct atATP {
struct atEcho {
u_int8_t echoFunction;
u_int8_t *echoData;
-} __attribute__((packed));
+};
#define echoSkt 4 /* the echoer socket */
#define echoSize 1 /* size of echo header */
@@ -109,14 +109,14 @@ struct atEcho {
struct atNBP {
u_int8_t control;
u_int8_t id;
-} __attribute__((packed));
+};
struct atNBPtuple {
u_int16_t net;
u_int8_t node;
u_int8_t skt;
u_int8_t enumerator;
-} __attribute__((packed));
+};
#define nbpBrRq 0x10
#define nbpLkUp 0x20
@@ -143,7 +143,7 @@ struct atNBPtuple {
struct zipHeader {
u_int8_t command;
u_int8_t netcount;
-} __attribute__((packed));
+};
#define zipHeaderSize 2
#define zipQuery 1