mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-19 17:11:03 +00:00
c5485e9ca7
This patch removes typedef for TransportHeaderT, and changes the name of the struct to bcm_transport_header. In addition, any calls to struct "xporthdr" are changed to call directly. Signed-off-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
128 lines
2.9 KiB
C
128 lines
2.9 KiB
C
/************************************
|
|
* 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 */
|
|
};
|
|
|
|
struct bcm_transport_header {
|
|
union {
|
|
struct udphdr uhdr;
|
|
struct tcphdr thdr;
|
|
};
|
|
} __packed;
|
|
|
|
enum bcm_ip_frame_type {
|
|
eNonIPPacket,
|
|
eIPv4Packet,
|
|
eIPv6Packet
|
|
};
|
|
|
|
enum bcm_eth_frame_type {
|
|
eEthUnsupportedFrame,
|
|
eEth802LLCFrame,
|
|
eEth802LLCSNAPFrame,
|
|
eEth802QVLANFrame,
|
|
eEthOtherFrame
|
|
};
|
|
|
|
struct bcm_eth_packet_info {
|
|
enum bcm_ip_frame_type eNwpktIPFrameType;
|
|
enum bcm_eth_frame_type eNwpktEthFrameType;
|
|
unsigned short usEtherType;
|
|
unsigned char ucDSAP;
|
|
};
|
|
|
|
struct bcm_eth_q_frame {
|
|
struct bcm_eth_header EThHdr;
|
|
unsigned short UserPriority:3;
|
|
unsigned short CFI:1;
|
|
unsigned short VLANID:12;
|
|
unsigned short EthType;
|
|
} __packed;
|
|
|
|
struct bcm_eth_llc_frame {
|
|
struct bcm_eth_header EThHdr;
|
|
unsigned char DSAP;
|
|
unsigned char SSAP;
|
|
unsigned char Control;
|
|
} __packed;
|
|
|
|
struct bcm_eth_llc_snap_frame {
|
|
struct bcm_eth_header EThHdr;
|
|
unsigned char DSAP;
|
|
unsigned char SSAP;
|
|
unsigned char Control;
|
|
unsigned char OUI[3];
|
|
unsigned short usEtherType;
|
|
} __packed;
|
|
|
|
struct bcm_ethernet2_frame {
|
|
struct bcm_eth_header EThHdr;
|
|
} __packed;
|
|
|
|
#define ETHERNET_FRAMETYPE_IPV4 ntohs(0x0800)
|
|
#define ETHERNET_FRAMETYPE_IPV6 ntohs(0x86dd)
|
|
#define ETHERNET_FRAMETYPE_802QVLAN ntohs(0x8100)
|
|
|
|
/* Per SF CS Specification Encodings */
|
|
enum bcm_spec_encoding {
|
|
eCSSpecUnspecified = 0,
|
|
eCSPacketIPV4,
|
|
eCSPacketIPV6,
|
|
eCS802_3PacketEthernet,
|
|
eCS802_1QPacketVLAN,
|
|
eCSPacketIPV4Over802_3Ethernet,
|
|
eCSPacketIPV6Over802_3Ethernet,
|
|
eCSPacketIPV4Over802_1QVLAN,
|
|
eCSPacketIPV6Over802_1QVLAN,
|
|
eCSPacketUnsupported
|
|
};
|
|
|
|
#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 */
|
|
struct bcm_tcp_header {
|
|
unsigned short usSrcPort;
|
|
unsigned short usDestPort;
|
|
unsigned long ulSeqNumber;
|
|
unsigned long ulAckNumber;
|
|
unsigned char HeaderLength;
|
|
unsigned char ucFlags;
|
|
unsigned short usWindowsSize;
|
|
unsigned short usChkSum;
|
|
unsigned short usUrgetPtr;
|
|
};
|
|
|
|
#define TCP_HEADER_LEN sizeof(struct bcm_tcp_header)
|
|
#define TCP_ACK 0x10 /* Bit 4 in tcpflags field. */
|
|
#define GET_TCP_HEADER_LEN(byte) ((byte&0xF0)>>4)
|
|
|
|
#endif /* __PROTOCOL_H__ */
|