11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Header file for iptables ipt_ECN target
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (C) 2002 by Harald Welte <laforge@gnumonks.org>
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This software is distributed under GNU GPL v2, 1991
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ipt_ECN.h,v 1.3 2002/05/29 12:17:40 laforge Exp
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _IPT_ECN_TARGET_H
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _IPT_ECN_TARGET_H
1106988b06935da7a210887e9d3f50f46f2faa4953Jan Engelhardt
1206988b06935da7a210887e9d3f50f46f2faa4953Jan Engelhardt#include <linux/types.h>
1393bb1e9d117bfc60306b2b8bd9e0fa7ba3c88636Jan Engelhardt#include <linux/netfilter/xt_DSCP.h>
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1593bb1e9d117bfc60306b2b8bd9e0fa7ba3c88636Jan Engelhardt#define IPT_ECN_IP_MASK	(~XT_DSCP_MASK)
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IPT_ECN_OP_SET_IP	0x01	/* set ECN bits of IPv4 header */
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IPT_ECN_OP_SET_ECE	0x10	/* set ECE bit of TCP header */
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IPT_ECN_OP_SET_CWR	0x20	/* set CWR bit of TCP header */
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IPT_ECN_OP_MASK		0xce
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct ipt_ECN_info {
240260c1dccc6a1018f8cf2c4778dffb47fc5d1c4cJan Engelhardt	__u8 operation;	/* bitset of operations */
250260c1dccc6a1018f8cf2c4778dffb47fc5d1c4cJan Engelhardt	__u8 ip_ect;	/* ECT codepoint of IPv4 header, pre-shifted */
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct {
280260c1dccc6a1018f8cf2c4778dffb47fc5d1c4cJan Engelhardt			__u8 ece:1, cwr:1; /* TCP ECT bits */
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		} tcp;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} proto;
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _IPT_ECN_TARGET_H */
34