diff options
| author | Darren Reed <darrenr@FreeBSD.org> | 2005-04-25 17:31:50 +0000 |
|---|---|---|
| committer | Darren Reed <darrenr@FreeBSD.org> | 2005-04-25 17:31:50 +0000 |
| commit | 144279dcb8a3b2717370088ac878f23066aee9e9 (patch) | |
| tree | e2e1c7115044e6dfc86ff65598566fa32e5f7421 /contrib/ipfilter/lib/tcpflags.c | |
| parent | dfb9a48c6965171c72436fae97fdb25542af491f (diff) | |
Notes
Diffstat (limited to 'contrib/ipfilter/lib/tcpflags.c')
| -rw-r--r-- | contrib/ipfilter/lib/tcpflags.c | 45 |
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; +} |
