diff --git a/net/uip/uip-tcpconn.c b/net/uip/uip-tcpconn.c index d2e2112321aed5e266da5cb29cc8b679322e17ba..0f48a4607a8110de8a71a1a1b7f2807221439973 100644 --- a/net/uip/uip-tcpconn.c +++ b/net/uip/uip-tcpconn.c @@ -449,18 +449,12 @@ struct uip_conn *uip_tcpaccept(struct uip_tcpip_hdr *buf) uip_ipaddr_copy(conn->ripaddr, uip_ip4addr_conv(buf->srcipaddr)); conn->tcpstateflags = UIP_SYN_RCVD; - conn->snd_nxt[0] = g_tcp_sequence[0]; - conn->snd_nxt[1] = g_tcp_sequence[1]; - conn->snd_nxt[2] = g_tcp_sequence[2]; - conn->snd_nxt[3] = g_tcp_sequence[3]; + memcpy(conn->snd_nxt, g_tcp_sequence, 4); conn->len = 1; /* rcv_nxt should be the seqno from the incoming packet + 1. */ - conn->rcv_nxt[3] = buf->seqno[3]; - conn->rcv_nxt[2] = buf->seqno[2]; - conn->rcv_nxt[1] = buf->seqno[1]; - conn->rcv_nxt[0] = buf->seqno[0]; + memcpy(conn->rcv_nxt, buf->seqno, 4); /* Initialize the list of TCP read-ahead buffers */ @@ -612,14 +606,9 @@ int uip_tcpconnect(struct uip_conn *conn, const struct sockaddr_in *addr) /* Initialize and return the connection structure, bind it to the port number */ conn->tcpstateflags = UIP_SYN_SENT; - - conn->snd_nxt[0] = g_tcp_sequence[0]; - conn->snd_nxt[1] = g_tcp_sequence[1]; - conn->snd_nxt[2] = g_tcp_sequence[2]; - conn->snd_nxt[3] = g_tcp_sequence[3]; + memcpy(conn->snd_nxt, g_tcp_sequence, 4); conn->initialmss = conn->mss = UIP_TCP_MSS; - conn->len = 1; /* TCP length of the SYN is one. */ conn->nrtx = 0; conn->timer = 1; /* Send the SYN next time around. */ diff --git a/net/uip/uip-tcpinput.c b/net/uip/uip-tcpinput.c index 11fb7cee024433a1bfa0b12b0c2453e818f5d822..8b551ca9effe75b1d034be55ccfe122293e8fe70 100644 --- a/net/uip/uip-tcpinput.c +++ b/net/uip/uip-tcpinput.c @@ -292,7 +292,7 @@ found: len = (BUF->tcpoffset >> 4) << 2; /* d_len will contain the length of the actual TCP data. This is - * calculated by subtracing the length of the TCP header (in + * calculated by subtracting the length of the TCP header (in * len) and the length of the IP header (20 bytes). */ @@ -307,10 +307,7 @@ found: ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { if ((dev->d_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && - (BUF->seqno[0] != conn->rcv_nxt[0] || - BUF->seqno[1] != conn->rcv_nxt[1] || - BUF->seqno[2] != conn->rcv_nxt[2] || - BUF->seqno[3] != conn->rcv_nxt[3])) + memcmp(BUF->seqno, conn->rcv_nxt, 4) != 0) { uip_tcpsend(dev, conn, TCP_ACK, UIP_IPTCPH_LEN); return; @@ -330,15 +327,11 @@ found: uint8 acc32[4]; uip_add32(conn->snd_nxt, conn->len, acc32); - if (BUF->ackno[0] == acc32[0] && BUF->ackno[1] == acc32[1] && - BUF->ackno[2] == acc32[2] && BUF->ackno[3] == acc32[3]) + if (memcmp(BUF->ackno, acc32, 4) == 0) { /* Update sequence number. */ - conn->snd_nxt[0] = acc32[0]; - conn->snd_nxt[1] = acc32[1]; - conn->snd_nxt[2] = acc32[2]; - conn->snd_nxt[3] = acc32[3]; + memcpy(conn->snd_nxt, acc32, 4); /* Do RTT estimation, unless we have done retransmissions. */ @@ -477,10 +470,7 @@ found: } conn->tcpstateflags = UIP_ESTABLISHED; - conn->rcv_nxt[0] = BUF->seqno[0]; - conn->rcv_nxt[1] = BUF->seqno[1]; - conn->rcv_nxt[2] = BUF->seqno[2]; - conn->rcv_nxt[3] = BUF->seqno[3]; + memcpy(conn->rcv_nxt, BUF->seqno, 4); nvdbg("TCP state: UIP_ESTABLISHED\n"); uip_incr32(conn->rcv_nxt, 1); diff --git a/net/uip/uip-tcpsend.c b/net/uip/uip-tcpsend.c index ae58ad5765e4cc56aeb1b006dc4ad1b033c93bea..5b28539bb20baa18ba9ee415225e2b1fd7b6dd9a 100644 --- a/net/uip/uip-tcpsend.c +++ b/net/uip/uip-tcpsend.c @@ -170,18 +170,10 @@ static void uip_tcpsendcomplete(struct uip_driver_s *dev) static void uip_tcpsendcommon(struct uip_driver_s *dev, struct uip_conn *conn) { - BUF->ackno[0] = conn->rcv_nxt[0]; - BUF->ackno[1] = conn->rcv_nxt[1]; - BUF->ackno[2] = conn->rcv_nxt[2]; - BUF->ackno[3] = conn->rcv_nxt[3]; - - BUF->seqno[0] = conn->snd_nxt[0]; - BUF->seqno[1] = conn->snd_nxt[1]; - BUF->seqno[2] = conn->snd_nxt[2]; - BUF->seqno[3] = conn->snd_nxt[3]; + memcpy(BUF->ackno, conn->rcv_nxt, 4); + memcpy(BUF->seqno, conn->snd_nxt, 4); BUF->proto = UIP_PROTO_TCP; - BUF->srcport = conn->lport; BUF->destport = conn->rport;