aboutsummaryrefslogtreecommitdiff
path: root/contrib/ipfilter/lib/tcpflags.c
diff options
context:
space:
mode:
authorDarren Reed <darrenr@FreeBSD.org>2005-04-25 17:31:50 +0000
committerDarren Reed <darrenr@FreeBSD.org>2005-04-25 17:31:50 +0000
commit144279dcb8a3b2717370088ac878f23066aee9e9 (patch)
treee2e1c7115044e6dfc86ff65598566fa32e5f7421 /contrib/ipfilter/lib/tcpflags.c
parentdfb9a48c6965171c72436fae97fdb25542af491f (diff)
Notes
Diffstat (limited to 'contrib/ipfilter/lib/tcpflags.c')
-rw-r--r--contrib/ipfilter/lib/tcpflags.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/contrib/ipfilter/lib/tcpflags.c b/contrib/ipfilter/lib/tcpflags.c
new file mode 100644
index 000000000000..b7ea4b8c307e
--- /dev/null
+++ b/contrib/ipfilter/lib/tcpflags.c
@@ -0,0 +1,45 @@
+/* $NetBSD$ */
+
+/*
+ * Copyright (C) 1993-2001 by Darren Reed.
+ *
+ * See the IPFILTER.LICENCE file for details on licencing.
+ *
+ * Id: tcpflags.c,v 1.3 2002/11/02 07:18:01 darrenr Exp
+ */
+
+#include "ipf.h"
+
+
+/*
+ * ECN is a new addition to TCP - RFC 2481
+ */
+#ifndef TH_ECN
+# define TH_ECN 0x40
+#endif
+#ifndef TH_CWR
+# define TH_CWR 0x80
+#endif
+
+extern char flagset[];
+extern u_char flags[];
+
+
+u_char tcpflags(flgs)
+char *flgs;
+{
+ u_char tcpf = 0;
+ char *s, *t;
+
+ for (s = flgs; *s; s++) {
+ if (*s == 'W')
+ tcpf |= TH_CWR;
+ else {
+ if (!(t = strchr(flagset, *s))) {
+ return 0;
+ }
+ tcpf |= flags[t - flagset];
+ }
+ }
+ return tcpf;
+}