Module Name: src
Committed By: maxv
Date: Wed Mar 28 14:16:59 UTC 2018
Modified Files:
src/sys/netinet: tcp_input.c
Log Message:
Dedup: introduce tcp_urp_drop() and use it.
To generate a diff of this commit:
cvs rdiff -u -r1.389 -r1.390 src/sys/netinet/tcp_input.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/netinet/tcp_input.c
diff -u src/sys/netinet/tcp_input.c:1.389 src/sys/netinet/tcp_input.c:1.390
--- src/sys/netinet/tcp_input.c:1.389 Wed Mar 28 13:50:14 2018
+++ src/sys/netinet/tcp_input.c Wed Mar 28 14:16:59 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_input.c,v 1.389 2018/03/28 13:50:14 maxv Exp $ */
+/* $NetBSD: tcp_input.c,v 1.390 2018/03/28 14:16:59 maxv Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.389 2018/03/28 13:50:14 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.390 2018/03/28 14:16:59 maxv Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -337,6 +337,17 @@ tcp_fields_to_net(struct tcphdr *th)
HTONS(th->th_urp);
}
+static void
+tcp_urp_drop(struct tcphdr *th, int todrop, int *tiflags)
+{
+ if (th->th_urp > 1) {
+ th->th_urp -= todrop;
+ } else {
+ *tiflags &= ~TH_URG;
+ th->th_urp = 0;
+ }
+}
+
#ifdef TCP_CSUM_COUNTERS
#include <sys/device.h>
@@ -1008,14 +1019,9 @@ static void tcp_vtw_input(struct tcphdr
if (todrop > 0) {
if (tiflags & TH_SYN) {
tiflags &= ~TH_SYN;
- ++th->th_seq;
- if (th->th_urp > 1)
- --th->th_urp;
- else {
- tiflags &= ~TH_URG;
- th->th_urp = 0;
- }
- --todrop;
+ th->th_seq++;
+ tcp_urp_drop(th, 1, &tiflags);
+ todrop--;
}
if (todrop > tlen ||
(todrop == tlen && (tiflags & TH_FIN) == 0)) {
@@ -1057,13 +1063,7 @@ static void tcp_vtw_input(struct tcphdr
th->th_seq += todrop;
tlen -= todrop;
-
- if (th->th_urp > todrop)
- th->th_urp -= todrop;
- else {
- tiflags &= ~TH_URG;
- th->th_urp = 0;
- }
+ tcp_urp_drop(th, todrop, &tiflags);
}
/*
@@ -2264,12 +2264,7 @@ after_listen:
if (tiflags & TH_SYN) {
tiflags &= ~TH_SYN;
th->th_seq++;
- if (th->th_urp > 1)
- th->th_urp--;
- else {
- tiflags &= ~TH_URG;
- th->th_urp = 0;
- }
+ tcp_urp_drop(th, 1, &tiflags);
todrop--;
}
if (todrop > tlen ||
@@ -2310,12 +2305,7 @@ after_listen:
hdroptlen += todrop; /* drop from head afterwards */
th->th_seq += todrop;
tlen -= todrop;
- if (th->th_urp > todrop)
- th->th_urp -= todrop;
- else {
- tiflags &= ~TH_URG;
- th->th_urp = 0;
- }
+ tcp_urp_drop(th, todrop, &tiflags);
}
/*