diff options
Diffstat (limited to 'lib/tcpflags.c')
-rw-r--r-- | lib/tcpflags.c | 43 |
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; +} |