net: tcp: Refactor the tcp header structs
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 6 Nov 2017 16:40:42 +0000 (11:40 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Nov 2017 15:46:56 +0000 (10:46 -0500)
v4 and v6 have the same TCP header (since it's the same protocol).  Plan 9
embeds them in TCP-IPv4 and TCP-IPv6 structs.  It behooves us to have a
common struct.  It could be used to clean up a bunch of tcp.c code, but for
now I just need it for a header helper.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/net/tcp.h

index 78c0004..1d56fbb 100644 (file)
@@ -132,6 +132,19 @@ struct tcptimer {
        void *arg;
 };
 
+struct tcphdr {
+       uint8_t tcpsport[2];
+       uint8_t tcpdport[2];
+       uint8_t tcpseq[4];
+       uint8_t tcpack[4];
+       uint8_t tcpflag[2];
+       uint8_t tcpwin[2];
+       uint8_t tcpcksum[2];
+       uint8_t tcpurg[2];
+       /* Options segment */
+       uint8_t tcpopt[1];
+};
+
 /*
  *  v4 and v6 pseudo headers used for
  *  checksuming tcp
@@ -148,16 +161,7 @@ struct tcp4hdr {
        uint8_t tcplen[2];
        uint8_t tcpsrc[4];
        uint8_t tcpdst[4];
-       uint8_t tcpsport[2];
-       uint8_t tcpdport[2];
-       uint8_t tcpseq[4];
-       uint8_t tcpack[4];
-       uint8_t tcpflag[2];
-       uint8_t tcpwin[2];
-       uint8_t tcpcksum[2];
-       uint8_t tcpurg[2];
-       /* Options segment */
-       uint8_t tcpopt[1];
+       struct tcphdr;
 };
 
 typedef struct tcp6hdr Tcp6hdr;
@@ -168,16 +172,7 @@ struct tcp6hdr {
        uint8_t ttl;
        uint8_t tcpsrc[IPaddrlen];
        uint8_t tcpdst[IPaddrlen];
-       uint8_t tcpsport[2];
-       uint8_t tcpdport[2];
-       uint8_t tcpseq[4];
-       uint8_t tcpack[4];
-       uint8_t tcpflag[2];
-       uint8_t tcpwin[2];
-       uint8_t tcpcksum[2];
-       uint8_t tcpurg[2];
-       /* Options segment */
-       uint8_t tcpopt[1];
+       struct tcphdr;
 };
 
 struct sack_block {