mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-12-01 05:53:38 +08:00
fcc82f451d
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.
32 lines
988 B
C
32 lines
988 B
C
/*
|
|
* IPX protocol formats
|
|
*
|
|
* @(#) $Header: /tcpdump/master/tcpdump/ipx.h,v 1.8 2002-12-11 07:13:54 guy Exp $
|
|
*/
|
|
|
|
/* well-known sockets */
|
|
#define IPX_SKT_NCP 0x0451
|
|
#define IPX_SKT_SAP 0x0452
|
|
#define IPX_SKT_RIP 0x0453
|
|
#define IPX_SKT_NETBIOS 0x0455
|
|
#define IPX_SKT_DIAGNOSTICS 0x0456
|
|
#define IPX_SKT_NWLINK_DGM 0x0553 /* NWLink datagram, may contain SMB */
|
|
#define IPX_SKT_EIGRP 0x85be /* Cisco EIGRP over IPX */
|
|
|
|
/* IPX transport header */
|
|
struct ipxHdr {
|
|
u_int16_t cksum; /* Checksum */
|
|
u_int16_t length; /* Length, in bytes, including header */
|
|
u_int8_t tCtl; /* Transport Control (i.e. hop count) */
|
|
u_int8_t pType; /* Packet Type (i.e. level 2 protocol) */
|
|
u_int16_t dstNet[2]; /* destination net */
|
|
u_int8_t dstNode[6]; /* destination node */
|
|
u_int16_t dstSkt; /* destination socket */
|
|
u_int16_t srcNet[2]; /* source net */
|
|
u_int8_t srcNode[6]; /* source node */
|
|
u_int16_t srcSkt; /* source socket */
|
|
};
|
|
|
|
#define ipxSize 30
|
|
|