123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- /************************************
- * Protocol.h
- *************************************/
- #ifndef __PROTOCOL_H__
- #define __PROTOCOL_H__
- #define IPV4 4
- #define IPV6 6
- struct ArpHeader {
- struct arphdr arp;
- unsigned char ar_sha[ETH_ALEN]; /* sender hardware address */
- unsigned char ar_sip[4]; /* sender IP address */
- unsigned char ar_tha[ETH_ALEN]; /* target hardware address */
- unsigned char ar_tip[4]; /* target IP address */
- }/*__attribute__((packed))*/;
- struct TransportHeaderT
- {
- union
- {
- struct udphdr uhdr;
- struct tcphdr thdr;
- };
- } __attribute__((packed));
- typedef struct TransportHeaderT xporthdr;
- typedef enum _E_NWPKT_IPFRAME_TYPE
- {
- eNonIPPacket,
- eIPv4Packet,
- eIPv6Packet
- }E_NWPKT_IPFRAME_TYPE;
- typedef enum _E_NWPKT_ETHFRAME_TYPE
- {
- eEthUnsupportedFrame,
- eEth802LLCFrame,
- eEth802LLCSNAPFrame,
- eEth802QVLANFrame,
- eEthOtherFrame
- } E_NWPKT_ETHFRAME_TYPE;
- typedef struct _S_ETHCS_PKT_INFO
- {
- E_NWPKT_IPFRAME_TYPE eNwpktIPFrameType;
- E_NWPKT_ETHFRAME_TYPE eNwpktEthFrameType;
- USHORT usEtherType;
- UCHAR ucDSAP;
- }S_ETHCS_PKT_INFO,*PS_ETHCS_PKT_INFO;
- typedef struct _ETH_CS_802_Q_FRAME
- {
- ETH_HEADER_STRUC EThHdr;
- USHORT UserPriority:3;
- USHORT CFI:1;
- USHORT VLANID:12;
- USHORT EthType;
- } __attribute__((packed)) ETH_CS_802_Q_FRAME;
- typedef struct _ETH_CS_802_LLC_FRAME
- {
- ETH_HEADER_STRUC EThHdr;
- unsigned char DSAP;
- unsigned char SSAP;
- unsigned char Control;
- }__attribute__((packed)) ETH_CS_802_LLC_FRAME;
- typedef struct _ETH_CS_802_LLC_SNAP_FRAME
- {
- ETH_HEADER_STRUC EThHdr;
- unsigned char DSAP;
- unsigned char SSAP;
- unsigned char Control;
- unsigned char OUI[3];
- unsigned short usEtherType;
- } __attribute__((packed)) ETH_CS_802_LLC_SNAP_FRAME;
- typedef struct _ETH_CS_ETH2_FRAME
- {
- ETH_HEADER_STRUC EThHdr;
- } __attribute__((packed)) ETH_CS_ETH2_FRAME;
- #define ETHERNET_FRAMETYPE_IPV4 ntohs(0x0800)
- #define ETHERNET_FRAMETYPE_IPV6 ntohs(0x86dd)
- #define ETHERNET_FRAMETYPE_802QVLAN ntohs(0x8100)
- //Per SF CS Specification Encodings
- typedef enum _E_SERVICEFLOW_CS_SPEC_
- {
- eCSSpecUnspecified =0,
- eCSPacketIPV4,
- eCSPacketIPV6,
- eCS802_3PacketEthernet,
- eCS802_1QPacketVLAN,
- eCSPacketIPV4Over802_3Ethernet,
- eCSPacketIPV6Over802_3Ethernet,
- eCSPacketIPV4Over802_1QVLAN,
- eCSPacketIPV6Over802_1QVLAN,
- eCSPacketUnsupported
- }E_SERVICEFLOW_CS_SPEC;
- #define IP6_HEADER_LEN 40
- #define IP_VERSION(byte) (((byte&0xF0)>>4))
- #define MAC_ADDRESS_SIZE 6
- #define ETH_AND_IP_HEADER_LEN 14 + 20
- #define L4_SRC_PORT_LEN 2
- #define L4_DEST_PORT_LEN 2
- #define CTRL_PKT_LEN 8 + ETH_AND_IP_HEADER_LEN
- #define ETH_ARP_FRAME 0x806
- #define ETH_IPV4_FRAME 0x800
- #define ETH_IPV6_FRAME 0x86DD
- #define UDP 0x11
- #define TCP 0x06
- #define ARP_OP_REQUEST 0x01
- #define ARP_OP_REPLY 0x02
- #define ARP_PKT_SIZE 60
- // This is the format for the TCP packet header
- typedef struct _TCP_HEADER
- {
- USHORT usSrcPort;
- USHORT usDestPort;
- ULONG ulSeqNumber;
- ULONG ulAckNumber;
- UCHAR HeaderLength;
- UCHAR ucFlags;
- USHORT usWindowsSize;
- USHORT usChkSum;
- USHORT usUrgetPtr;
- } TCP_HEADER,*PTCP_HEADER;
- #define TCP_HEADER_LEN sizeof(TCP_HEADER)
- #define TCP_ACK 0x10 //Bit 4 in tcpflags field.
- #define GET_TCP_HEADER_LEN(byte) ((byte&0xF0)>>4)
- #endif //__PROTOCOL_H__
|