summaryrefslogtreecommitdiffstats
path: root/lib/tcpflags.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tcpflags.c')
-rw-r--r--lib/tcpflags.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/tcpflags.c b/lib/tcpflags.c
new file mode 100644
index 0000000..bf2c284
--- /dev/null
+++ b/lib/tcpflags.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2001-2002 by Darren Reed.
+ *
+ * See the IPFILTER.LICENCE file for details on licencing.
+ *
+ * $Id: tcpflags.c,v 1.3.4.1 2006/06/16 17:21:17 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;
+}
OpenPOWER on IntegriCloud