46 lines
703 B
C
46 lines
703 B
C
/* $NetBSD: tcpflags.c,v 1.1.1.2 2007/04/14 20:17:31 martin Exp $ */
|
|
|
|
/*
|
|
* 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;
|
|
}
|