(6/6) bcm57xx: package
[openwrt/staging/florian.git] / package / broadcom-57xx / src / proto / bcmtcp.h
diff --git a/package/broadcom-57xx/src/proto/bcmtcp.h b/package/broadcom-57xx/src/proto/bcmtcp.h
new file mode 100644 (file)
index 0000000..7e834a7
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2007, Broadcom Corporation
+ * All Rights Reserved.
+ * 
+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
+ *
+ * Fundamental constants relating to TCP Protocol
+ *
+ * $Id: bcmtcp.h,v 1.1.1.1 2007/05/31 08:00:41 michael Exp $
+ */
+
+#ifndef _bcmtcp_h_
+#define _bcmtcp_h_
+
+/* enable structure packing */
+#if defined(__GNUC__)
+#define        PACKED  __attribute__((packed))
+#else
+#pragma pack(1)
+#define        PACKED
+#endif
+
+#define TCP_SRC_PORT_OFFSET    0       /* TCP source port offset */
+#define TCP_DEST_PORT_OFFSET   2       /* TCP dest port offset */
+#define TCP_CHKSUM_OFFSET      16      /* TCP body checksum offset */
+
+/* These fields are stored in network order */
+struct bcmtcp_hdr
+{
+       uint16  src_port;       /* Source Port Address */
+       uint16  dst_port;       /* Destination Port Address */
+       uint32  seq_num;        /* TCP Sequence Number */
+       uint32  ack_num;        /* TCP Sequence Number */
+       uint16  hdrlen_rsvd_flags;      /* Header length, reserved bits and flags */
+       uint16  tcpwin;         /* TCP window */
+       uint16  chksum;         /* Segment checksum with pseudoheader */
+       uint16  urg_ptr;        /* Points to seq-num of byte following urg data */
+} PACKED;
+
+#undef PACKED
+#if !defined(__GNUC__)
+#pragma pack()
+#endif
+
+/* Byte offset of flags in TCP header */
+#define TCP_FLAGS_OFFSET       13
+
+#define TCP_FLAGS_FIN          0x01
+#define TCP_FLAGS_SYN          0x02
+#define TCP_FLAGS_RST          0x03
+#define TCP_FLAGS_PSH          0x04
+#define TCP_FLAGS_ACK          0x10
+#define TCP_FLAGS_URG          0x20
+#define TCP_FLAGS_ECN          0x40
+#define TCP_FLAGS_CWR          0x80
+
+#define TCP_FLAGS(tcp_hdr)     (((uint8 *)(tcp_hdr))[TCP_FLAGS_OFFSET])
+#define TCP_IS_ACK(tcp_hdr)    (TCP_FLAGS(tcp_hdr) & TCP_FLAGS_ACK)
+
+#define TCP_SRC_PORT(tcp_hdr)  (ntoh16(((struct bcmtcp_hdr*)(tcp_hdr))->src_port))
+#define TCP_DST_PORT(tcp_hdr)  (ntoh16(((struct bcmtcp_hdr*)(tcp_hdr))->dst_port))
+#define TCP_SEQ_NUM(tcp_hdr)   (ntoh32(((struct bcmtcp_hdr*)(tcp_hdr))->seq_num))
+#define TCP_ACK_NUM(tcp_hdr)   (ntoh32(((struct bcmtcp_hdr*)(tcp_hdr))->ack_num))
+
+#endif /* #ifndef _bcmtcp_h_ */