Linux Audio

Check our new training course

Embedded Linux training

Mar 10-20, 2025, special US time zones
Register
Loading...
Note: File does not exist in v6.8.
  1/************************************
  2*	Protocol.h
  3*************************************/
  4#ifndef	__PROTOCOL_H__
  5#define	__PROTOCOL_H__
  6
  7#define IPV4 4
  8#define IPV6 6
  9
 10struct ArpHeader {
 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        */
 16};
 17
 18struct bcm_transport_header {
 19	union {
 20		struct udphdr uhdr;
 21		struct tcphdr thdr;
 22	};
 23} __packed;
 24
 25enum bcm_ip_frame_type {
 26	eNonIPPacket,
 27	eIPv4Packet,
 28	eIPv6Packet
 29};
 30
 31enum bcm_eth_frame_type {
 32	eEthUnsupportedFrame,
 33	eEth802LLCFrame,
 34	eEth802LLCSNAPFrame,
 35	eEth802QVLANFrame,
 36	eEthOtherFrame
 37};
 38
 39struct bcm_eth_packet_info {
 40	enum bcm_ip_frame_type  eNwpktIPFrameType;
 41	enum bcm_eth_frame_type eNwpktEthFrameType;
 42	unsigned short	usEtherType;
 43	unsigned char	ucDSAP;
 44};
 45
 46struct bcm_eth_q_frame {
 47	struct bcm_eth_header EThHdr;
 48	unsigned short UserPriority:3;
 49	unsigned short CFI:1;
 50	unsigned short VLANID:12;
 51	unsigned short EthType;
 52} __packed;
 53
 54struct bcm_eth_llc_frame {
 55	struct bcm_eth_header EThHdr;
 56	unsigned char DSAP;
 57	unsigned char SSAP;
 58	unsigned char Control;
 59} __packed;
 60
 61struct bcm_eth_llc_snap_frame {
 62	struct bcm_eth_header EThHdr;
 63	unsigned char DSAP;
 64	unsigned char SSAP;
 65	unsigned char Control;
 66	unsigned char OUI[3];
 67	unsigned short usEtherType;
 68} __packed;
 69
 70struct bcm_ethernet2_frame {
 71	struct bcm_eth_header EThHdr;
 72} __packed;
 73
 74#define ETHERNET_FRAMETYPE_IPV4		ntohs(0x0800)
 75#define ETHERNET_FRAMETYPE_IPV6		ntohs(0x86dd)
 76#define ETHERNET_FRAMETYPE_802QVLAN	ntohs(0x8100)
 77
 78/* Per SF CS Specification Encodings */
 79enum bcm_spec_encoding {
 80	eCSSpecUnspecified = 0,
 81	eCSPacketIPV4,
 82	eCSPacketIPV6,
 83	eCS802_3PacketEthernet,
 84	eCS802_1QPacketVLAN,
 85	eCSPacketIPV4Over802_3Ethernet,
 86	eCSPacketIPV6Over802_3Ethernet,
 87	eCSPacketIPV4Over802_1QVLAN,
 88	eCSPacketIPV6Over802_1QVLAN,
 89	eCSPacketUnsupported
 90};
 91
 92#define	IP6_HEADER_LEN		40
 93#define IP_VERSION(byte)	(((byte&0xF0)>>4))
 94
 95#define MAC_ADDRESS_SIZE	6
 96#define	ETH_AND_IP_HEADER_LEN	(14 + 20)
 97#define L4_SRC_PORT_LEN		2
 98#define L4_DEST_PORT_LEN	2
 99#define	CTRL_PKT_LEN		(8 + ETH_AND_IP_HEADER_LEN)
100
101#define	ETH_ARP_FRAME		0x806
102#define	ETH_IPV4_FRAME		0x800
103#define	ETH_IPV6_FRAME		0x86DD
104#define UDP			0x11
105#define TCP			0x06
106
107#define	ARP_OP_REQUEST		0x01
108#define	ARP_OP_REPLY		0x02
109#define	ARP_PKT_SIZE		60
110
111/* This is the format for the TCP packet header */
112struct bcm_tcp_header {
113	unsigned short usSrcPort;
114	unsigned short usDestPort;
115	unsigned long  ulSeqNumber;
116	unsigned long  ulAckNumber;
117	unsigned char  HeaderLength;
118	unsigned char  ucFlags;
119	unsigned short usWindowsSize;
120	unsigned short usChkSum;
121	unsigned short usUrgetPtr;
122};
123
124#define TCP_HEADER_LEN		sizeof(struct bcm_tcp_header)
125#define TCP_ACK			0x10  /* Bit 4 in tcpflags field. */
126#define GET_TCP_HEADER_LEN(byte) ((byte&0xF0)>>4)
127
128#endif /* __PROTOCOL_H__ */