#!/bin/bash
######################################################################
# ipvsadm-1.9-1.um.PREBUILD April 2000
# Horms h
[email protected]
#
# ipvsadm-1.9 needs an updated kernel header to be able to build
# This script shold be run in the ctk/ directory and inserts
# the updated header file into the build tree. The .spec file
# for ipvsadm has been patched so it will find this udated header
# file before any others that may be installed on the system.
#
# Released under the terms of the GNU Genereal Public Licence
#
######################################################################
INCLUDE=ipvsadm/SOURCES/include/linux/ip_masq.h
DIR="$(dirname $INCLUDE)"
[ -d "$DIR" ] || mkdir -p "$DIR"
cat > $INCLUDE << _____EOF_____
/*
* IP_MASQ user space control interface
* $Id: ip_masq.h,v 1.2 1998/12/08 05:41:48 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 */
};
/*
* MFW stuff
*/
struct ip_mfw_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 */
unsigned flags; /* misc flags */
};
#define IP_MASQ_MFW_SCHED 0x01
/*
* Virtual server stuff
*/
struct ip_vs_user {
/* virtual service options */
u_int16_t protocol;
u_int32_t vaddr; /* virtual address */
u_int16_t vport;
u_int32_t vfwmark; /* firwall mark of virtual */
unsigned vs_flags; /* virtual service flags */
unsigned timeout; /* persistent timeout in ticks */
u_int32_t netmask; /* persistent netmask */
/* destination specific options */
u_int32_t daddr; /* real destination address */
u_int16_t dport;
unsigned masq_flags; /* destination flags */
int weight; /* destination weight */
};
#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_mfw_user mfw_user;
struct ip_masq_user user;
struct ip_vs_user vs_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_VS 4
#define IP_MASQ_TARGET_LAST 5
#define IP_MASQ_CMD_NONE 0 /* just peek */
#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 /* actually fake: done via /proc */
#define IP_MASQ_CMD_ENABLE 8
#define IP_MASQ_CMD_DISABLE 9
#define IP_MASQ_CMD_ADD_DEST 10 /* for adding dest in IPVS */
#define IP_MASQ_CMD_DEL_DEST 11 /* for deleting dest in IPVS */
#define IP_MASQ_CMD_SET_DEST 12 /* for setting dest in IPVS */
#endif /* _LINUX_IP_MASQ_H */
_____EOF_____