1d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt/* iptables module for matching the ECN header in IPv4 and TCP header
2d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt *
3d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt * (C) 2002 Harald Welte <laforge@gnumonks.org>
4d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt *
5d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt * This software is distributed under GNU GPL v2, 1991
6d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt *
7d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt * ipt_ecn.h,v 1.4 2002/08/05 19:39:00 laforge Exp
8d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt*/
9d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt#ifndef _XT_ECN_H
10d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt#define _XT_ECN_H
11d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
12d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt#include <linux/types.h>
13d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt#include <linux/netfilter/xt_dscp.h>
14d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
15a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardt#define XT_ECN_IP_MASK	(~XT_DSCP_MASK)
16d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
17a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardt#define XT_ECN_OP_MATCH_IP	0x01
18a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardt#define XT_ECN_OP_MATCH_ECE	0x10
19a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardt#define XT_ECN_OP_MATCH_CWR	0x20
20d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
21a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardt#define XT_ECN_OP_MATCH_MASK	0xce
22d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
23d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt/* match info */
24a4c6f9d3636db538025f9622c008192a0835cc23Jan Engelhardtstruct xt_ecn_info {
25d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt	__u8 operation;
26d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt	__u8 invert;
27d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt	__u8 ip_ect;
28d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt	union {
29d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt		struct {
30d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt			__u8 ect;
31d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt		} tcp;
32d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt	} proto;
33d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt};
34d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt
35d446a8202c81d95f91b1682fc67e7fadd9a31389Jan Engelhardt#endif /* _XT_ECN_H */
36