patch-2.1.124 linux/include/linux/ip_masq.h

Next file: linux/include/linux/linux_logo.h
Previous file: linux/include/linux/ip_fw.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.123/linux/include/linux/ip_masq.h linux/include/linux/ip_masq.h
@@ -0,0 +1,137 @@
+/*
+ *	IP_MASQ user space control interface
+ *	$Id: ip_masq.h,v 1.1 1998/08/29 23:50:56 davem Exp $
+ */
+
+#ifndef _LINUX_IP_MASQ_H
+#define _LINUX_IP_MASQ_H
+
+#ifdef __KERNEL__
+#include <linux/types.h>
+#include <linux/stddef.h>
+#else
+#include <sys/types.h>
+#include <stddef.h>
+#endif
+
+struct ip_masq_user {
+	int 	protocol;
+	u_int16_t	sport, dport, mport;
+	u_int32_t 	saddr, daddr, maddr;
+	u_int32_t	rt_daddr;	/* dst address to use for rt query */
+	u_int32_t	rt_saddr;	
+	u_int32_t	ip_tos;		/* TOS */
+	unsigned timeout;		/* in ticks (HZ per sec) */
+	unsigned flags;
+	int fd;				/* NOT IMPL: attach tunnel to this fd */
+	int state;			/* NOT IMPL: return conn state */
+};
+
+#define IP_MASQ_USER_F_LISTEN	0x01	/* put entry to LISTEN state */
+#define IP_MASQ_USER_F_DEAD	0x02	/* mark as DEAD */
+#define IP_MASQ_USER_F_FORCE	0x04	/* force operation */
+
+struct ip_masq_timeout {
+	int protocol;
+	union {
+		struct {
+			unsigned established;
+			unsigned syn_sent;
+			unsigned syn_recv;
+			unsigned fin_wait;
+			unsigned time_wait;
+			unsigned close;
+			unsigned close_wait;
+			unsigned last_ack;
+			unsigned listen;
+		} tcp;
+		unsigned udp;
+		unsigned icmp;
+	} u;
+};
+
+/* 
+ *	AUTOFW stuff 
+ */
+#define IP_FWD_RANGE 		1
+#define IP_FWD_PORT		2
+#define IP_FWD_DIRECT		3
+
+#define IP_AUTOFW_ACTIVE	1
+#define IP_AUTOFW_USETIME	2
+#define IP_AUTOFW_SECURE	4
+
+
+/* WARNING: bitwise equal to ip_autofw  in net/ip_autofw.h */
+struct ip_autofw_user {
+	void * next;
+	u_int16_t type;
+	u_int16_t low;
+	u_int16_t hidden;
+	u_int16_t high;
+	u_int16_t visible;
+	u_int16_t protocol;
+	u_int32_t lastcontact;
+	u_int32_t where;
+	u_int16_t ctlproto;
+	u_int16_t ctlport;
+	u_int16_t flags;
+	/* struct timer_list timer; */
+};
+
+/* 
+ *	PORTFW stuff 
+ */
+struct ip_portfw_user {
+	u_int16_t	protocol;       /* Which protocol are we talking? */
+	u_int32_t	laddr, raddr;   /* Remote address */
+	u_int16_t	lport, rport;   /* Local and remote port */
+	int 		pref;		/* Preference value */
+};
+
+/* 
+ *	MARKFW stuff 
+ */
+struct ip_markfw_user {
+	u_int32_t           fwmark;	/* Firewalling mark */
+	u_int32_t           raddr;  	/* remote port */
+	u_int16_t           rport;	/* remote port */
+	u_int16_t           dummy;          /* Make up to multiple of 4 */
+	int 		pref;		/* Preference value */
+};
+
+#define IP_FW_MASQCTL_MAX 256
+#define IP_MASQ_TNAME_MAX  32
+
+struct ip_masq_ctl {
+	int m_target;
+	int m_cmd;
+	char m_tname[IP_MASQ_TNAME_MAX];
+	union {
+		struct ip_portfw_user portfw_user;
+		struct ip_autofw_user autofw_user;
+		struct ip_markfw_user markfw_user;
+		struct ip_masq_user user;
+		unsigned char m_raw[IP_FW_MASQCTL_MAX];
+	} u;
+};
+
+#define IP_MASQ_CTL_BSIZE (offsetof (struct ip_masq_ctl,u))
+
+#define IP_MASQ_TARGET_CORE	1
+#define IP_MASQ_TARGET_MOD	2	/* masq_mod is selected by "name" */
+#define IP_MASQ_TARGET_USER	3	
+#define IP_MASQ_TARGET_LAST	4
+
+#define IP_MASQ_CMD_NONE	0
+#define IP_MASQ_CMD_INSERT	1
+#define IP_MASQ_CMD_ADD		2
+#define IP_MASQ_CMD_SET		3
+#define IP_MASQ_CMD_DEL		4
+#define IP_MASQ_CMD_GET		5
+#define IP_MASQ_CMD_FLUSH	6
+#define IP_MASQ_CMD_LIST	7
+#define IP_MASQ_CMD_ENABLE	8
+#define IP_MASQ_CMD_DISABLE	9
+
+#endif /* _LINUX_IP_MASQ_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov