]>
Commit | Line | Data |
---|---|---|
f8942e07 | 1 | /************************************ |
bd33dd31 | 2 | * Protocol.h |
f8942e07 SH |
3 | *************************************/ |
4 | #ifndef __PROTOCOL_H__ | |
5 | #define __PROTOCOL_H__ | |
6 | ||
bd33dd31 KM |
7 | #define IPV4 4 |
8 | #define IPV6 6 | |
f8942e07 SH |
9 | |
10 | struct ArpHeader { | |
bd33dd31 KM |
11 | struct arphdr arp; |
12 | unsigned char ar_sha[ETH_ALEN]; /* sender hardware address */ | |
13 | unsigned char ar_sip[4]; /* sender IP address */ | |
14 | unsigned char ar_tha[ETH_ALEN]; /* target hardware address */ | |
15 | unsigned char ar_tip[4]; /* target IP address */ | |
a3489276 | 16 | }; |
f8942e07 SH |
17 | |
18 | struct TransportHeaderT | |
19 | { | |
20 | union | |
21 | { | |
22 | struct udphdr uhdr; | |
23 | struct tcphdr thdr; | |
24 | }; | |
25 | } __attribute__((packed)); | |
26 | typedef struct TransportHeaderT xporthdr; | |
27 | ||
f8942e07 SH |
28 | typedef enum _E_NWPKT_IPFRAME_TYPE |
29 | { | |
30 | eNonIPPacket, | |
31 | eIPv4Packet, | |
32 | eIPv6Packet | |
bd33dd31 | 33 | } E_NWPKT_IPFRAME_TYPE; |
f8942e07 SH |
34 | |
35 | typedef enum _E_NWPKT_ETHFRAME_TYPE | |
36 | { | |
37 | eEthUnsupportedFrame, | |
38 | eEth802LLCFrame, | |
39 | eEth802LLCSNAPFrame, | |
40 | eEth802QVLANFrame, | |
41 | eEthOtherFrame | |
42 | } E_NWPKT_ETHFRAME_TYPE; | |
43 | ||
44 | typedef struct _S_ETHCS_PKT_INFO | |
45 | { | |
46 | E_NWPKT_IPFRAME_TYPE eNwpktIPFrameType; | |
47 | E_NWPKT_ETHFRAME_TYPE eNwpktEthFrameType; | |
48 | USHORT usEtherType; | |
49 | UCHAR ucDSAP; | |
bd33dd31 | 50 | } S_ETHCS_PKT_INFO, *PS_ETHCS_PKT_INFO; |
f8942e07 SH |
51 | |
52 | typedef struct _ETH_CS_802_Q_FRAME | |
53 | { | |
406a5082 | 54 | struct bcm_eth_header EThHdr; |
f8942e07 SH |
55 | USHORT UserPriority:3; |
56 | USHORT CFI:1; | |
57 | USHORT VLANID:12; | |
58 | USHORT EthType; | |
59 | } __attribute__((packed)) ETH_CS_802_Q_FRAME; | |
60 | ||
61 | typedef struct _ETH_CS_802_LLC_FRAME | |
62 | { | |
406a5082 | 63 | struct bcm_eth_header EThHdr; |
f8942e07 SH |
64 | unsigned char DSAP; |
65 | unsigned char SSAP; | |
66 | unsigned char Control; | |
bd33dd31 | 67 | } __attribute__((packed)) ETH_CS_802_LLC_FRAME; |
f8942e07 SH |
68 | |
69 | typedef struct _ETH_CS_802_LLC_SNAP_FRAME | |
70 | { | |
406a5082 | 71 | struct bcm_eth_header EThHdr; |
f8942e07 SH |
72 | unsigned char DSAP; |
73 | unsigned char SSAP; | |
74 | unsigned char Control; | |
75 | unsigned char OUI[3]; | |
76 | unsigned short usEtherType; | |
77 | } __attribute__((packed)) ETH_CS_802_LLC_SNAP_FRAME; | |
78 | ||
79 | typedef struct _ETH_CS_ETH2_FRAME | |
80 | { | |
406a5082 | 81 | struct bcm_eth_header EThHdr; |
f8942e07 SH |
82 | } __attribute__((packed)) ETH_CS_ETH2_FRAME; |
83 | ||
78afa999 | 84 | #define ETHERNET_FRAMETYPE_IPV4 ntohs(0x0800) |
bd33dd31 KM |
85 | #define ETHERNET_FRAMETYPE_IPV6 ntohs(0x86dd) |
86 | #define ETHERNET_FRAMETYPE_802QVLAN ntohs(0x8100) | |
f8942e07 | 87 | |
a3489276 | 88 | /* Per SF CS Specification Encodings */ |
f8942e07 SH |
89 | typedef enum _E_SERVICEFLOW_CS_SPEC_ |
90 | { | |
bd33dd31 | 91 | eCSSpecUnspecified = 0, |
f8942e07 SH |
92 | eCSPacketIPV4, |
93 | eCSPacketIPV6, | |
94 | eCS802_3PacketEthernet, | |
95 | eCS802_1QPacketVLAN, | |
96 | eCSPacketIPV4Over802_3Ethernet, | |
97 | eCSPacketIPV6Over802_3Ethernet, | |
98 | eCSPacketIPV4Over802_1QVLAN, | |
99 | eCSPacketIPV6Over802_1QVLAN, | |
100 | eCSPacketUnsupported | |
bd33dd31 | 101 | } E_SERVICEFLOW_CS_SPEC; |
f8942e07 | 102 | |
bd33dd31 KM |
103 | #define IP6_HEADER_LEN 40 |
104 | #define IP_VERSION(byte) (((byte&0xF0)>>4)) | |
f8942e07 SH |
105 | |
106 | #define MAC_ADDRESS_SIZE 6 | |
107 | #define ETH_AND_IP_HEADER_LEN 14 + 20 | |
bd33dd31 KM |
108 | #define L4_SRC_PORT_LEN 2 |
109 | #define L4_DEST_PORT_LEN 2 | |
f8942e07 SH |
110 | #define CTRL_PKT_LEN 8 + ETH_AND_IP_HEADER_LEN |
111 | ||
bd33dd31 KM |
112 | #define ETH_ARP_FRAME 0x806 |
113 | #define ETH_IPV4_FRAME 0x800 | |
114 | #define ETH_IPV6_FRAME 0x86DD | |
115 | #define UDP 0x11 | |
116 | #define TCP 0x06 | |
f8942e07 | 117 | |
bd33dd31 KM |
118 | #define ARP_OP_REQUEST 0x01 |
119 | #define ARP_OP_REPLY 0x02 | |
120 | #define ARP_PKT_SIZE 60 | |
f8942e07 | 121 | |
a3489276 | 122 | /* This is the format for the TCP packet header */ |
f8942e07 SH |
123 | typedef struct _TCP_HEADER |
124 | { | |
125 | USHORT usSrcPort; | |
126 | USHORT usDestPort; | |
127 | ULONG ulSeqNumber; | |
128 | ULONG ulAckNumber; | |
129 | UCHAR HeaderLength; | |
bd33dd31 | 130 | UCHAR ucFlags; |
f8942e07 SH |
131 | USHORT usWindowsSize; |
132 | USHORT usChkSum; | |
133 | USHORT usUrgetPtr; | |
bd33dd31 | 134 | } TCP_HEADER, *PTCP_HEADER; |
f8942e07 | 135 | |
bd33dd31 | 136 | #define TCP_HEADER_LEN sizeof(TCP_HEADER) |
a3489276 | 137 | #define TCP_ACK 0x10 /* Bit 4 in tcpflags field. */ |
bd33dd31 | 138 | #define GET_TCP_HEADER_LEN(byte) ((byte&0xF0)>>4) |
f8942e07 | 139 | |
a3489276 | 140 | #endif /* __PROTOCOL_H__ */ |