summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_usrreq.c
diff options
context:
space:
mode:
authorcmetz <cmetz@openbsd.org>1999-07-06 20:17:52 +0000
committercmetz <cmetz@openbsd.org>1999-07-06 20:17:52 +0000
commitb9de2beaa8a944cfbbd81ed84b47568ee4d25b2b (patch)
treeb7e9897e9d53628c4ed5a3f9a8236951b4ce912b /sys/netinet/tcp_usrreq.c
parentFixed compilation problems when INET6 is enabled. (diff)
downloadwireguard-openbsd-b9de2beaa8a944cfbbd81ed84b47568ee4d25b2b.tar.xz
wireguard-openbsd-b9de2beaa8a944cfbbd81ed84b47568ee4d25b2b.zip
Added support for TCP MD5 option (RFC 2385).
Diffstat (limited to 'sys/netinet/tcp_usrreq.c')
-rw-r--r--sys/netinet/tcp_usrreq.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index de6ee75474f..d9ca963cc58 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_usrreq.c,v 1.34 1999/07/02 20:39:08 cmetz Exp $ */
+/* $OpenBSD: tcp_usrreq.c,v 1.35 1999/07/06 20:17:53 cmetz Exp $ */
/* $NetBSD: tcp_usrreq.c,v 1.20 1996/02/13 23:44:16 christos Exp $ */
/*
@@ -555,13 +555,39 @@ tcp_ctloutput(op, so, level, optname, mp)
break;
}
+ if (tp->t_flags & TF_SIGNATURE) {
+ error = EPERM;
+ break;
+ }
+
if (*mtod(m, int *))
tp->sack_disable = 1;
else
tp->sack_disable = 0;
break;
#endif
- default:
+#ifdef TCP_SIGNATURE
+ case TCP_SIGNATURE_ENABLE:
+ if (m == NULL || m->m_len < sizeof (int)) {
+ error = EINVAL;
+ break;
+ }
+
+ if (TCPS_HAVEESTABLISHED(tp->t_state)) {
+ error = EPERM;
+ break;
+ }
+
+ if (*mtod(m, int *)) {
+ tp->t_flags |= TF_SIGNATURE;
+#ifdef TCP_SACK
+ tp->sack_disable = 1;
+#endif /* TCP_SACK */
+ } else
+ tp->t_flags &= ~TF_SIGNATURE;
+ break;
+#endif /* TCP_SIGNATURE */
+ default:
error = ENOPROTOOPT;
break;
}