| /* |
| * Copyright (C) 2009 by Darren Reed. |
| * |
| * See the IPFILTER.LICENCE file for details on licencing. |
| * |
| * $Id$ |
| */ |
| |
| #include "ipf.h" |
| |
| extern char flagset[]; |
| extern u_char flags[]; |
| |
| |
| u_char tcp_flags(flgs, mask, linenum) |
| char *flgs; |
| u_char *mask; |
| int linenum; |
| { |
| u_char tcpf = 0, tcpfm = 0; |
| char *s; |
| |
| s = strchr(flgs, '/'); |
| if (s) |
| *s++ = '\0'; |
| |
| if (*flgs == '0') { |
| tcpf = strtol(flgs, NULL, 0); |
| } else { |
| tcpf = tcpflags(flgs); |
| } |
| |
| if (s != NULL) { |
| if (*s == '0') |
| tcpfm = strtol(s, NULL, 0); |
| else |
| tcpfm = tcpflags(s); |
| } |
| |
| if (!tcpfm) { |
| if (tcpf == TH_SYN) |
| tcpfm = 0xff & ~(TH_ECN|TH_CWR); |
| else |
| tcpfm = 0xff & ~(TH_ECN); |
| } |
| *mask = tcpfm; |
| return tcpf; |
| } |