/* | |
* Copyright (C) 2000-2004 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; | |
} |