* @(#)tcp.h 8.1 (Berkeley) 6/10/93
*/
-typedef uint32_t tcp_seq;
/*
* TCP header.
* Per RFC 793, September, 1981.
*/
struct tcphdr {
- uint16_t th_sport; /* source port */
- uint16_t th_dport; /* destination port */
- tcp_seq th_seq; /* sequence number */
- tcp_seq th_ack; /* acknowledgement number */
- uint8_t th_offx2; /* data offset, rsvd */
- uint8_t th_flags;
- uint16_t th_win; /* window */
- uint16_t th_sum; /* checksum */
- uint16_t th_urp; /* urgent pointer */
-} UNALIGNED;
+ nd_uint16_t th_sport; /* source port */
+ nd_uint16_t th_dport; /* destination port */
+ nd_uint32_t th_seq; /* sequence number */
+ nd_uint32_t th_ack; /* acknowledgement number */
+ nd_uint8_t th_offx2; /* data offset, rsvd */
+ nd_uint8_t th_flags;
+ nd_uint16_t th_win; /* window */
+ nd_uint16_t th_sum; /* checksum */
+ nd_uint16_t th_urp; /* urgent pointer */
+};
-#define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4)
+#define TH_OFF(th) ((GET_U_1((th)->th_offx2) & 0xf0) >> 4)
+#define tcp_get_flags(th) ((GET_U_1((th)->th_flags)) | \
+ ((GET_U_1((th)->th_offx2) & 0x0f) << 8))
/* TCP flags */
#define TH_FIN 0x01
#define TH_URG 0x20
#define TH_ECNECHO 0x40 /* ECN Echo */
#define TH_CWR 0x80 /* ECN Cwnd Reduced */
+#define TH_AE 0x100 /* AccECN (draft-ietf-tcpm-accurate-ecn;rfc7560) part of L4S (rfc9330) */
+extern const struct tok tcp_flag_values[];
#define TCPOPT_EOL 0
#ifndef HTTP_PORT
#define HTTP_PORT 80
#endif
-#ifndef NETBIOS_NS_PORT
-#define NETBIOS_NS_PORT 137 /* RFC 1001, RFC 1002 */
-#endif
#ifndef NETBIOS_SSN_PORT
#define NETBIOS_SSN_PORT 139 /* RFC 1001, RFC 1002 */
#endif
#ifndef NFS_PORT
#define NFS_PORT 2049
#endif
+#ifndef REDIS_PORT
+#define REDIS_PORT 6379
+#endif
#ifndef OPENFLOW_PORT_OLD
#define OPENFLOW_PORT_OLD 6633
#endif
#ifndef BEEP_PORT
#define BEEP_PORT 10288
#endif
-#ifndef REDIS_PORT
-#define REDIS_PORT 6379
-#endif