Skip to content

Commit

Permalink
[NETFILTER]: futher {ip,ip6,arp}_tables unification
Browse files Browse the repository at this point in the history
This patch moves {ip,ip6,arp}t_entry_{match,target} definitions to
x_tables.h. This move simplifies code and future compatibility fixes.

Signed-off-by: Dmitry Mishin <dim@openvz.org>
Acked-off-by: Kirill Korotaev <dev@openvz.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Dmitry Mishin authored and David S. Miller committed Mar 22, 2006
1 parent 81fbfd6 commit 1e30a01
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 140 deletions.
56 changes: 56 additions & 0 deletions include/linux/netfilter/x_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,62 @@
#define XT_FUNCTION_MAXNAMELEN 30
#define XT_TABLE_MAXNAMELEN 32

struct xt_entry_match
{
union {
struct {
u_int16_t match_size;

/* Used by userspace */
char name[XT_FUNCTION_MAXNAMELEN-1];

u_int8_t revision;
} user;
struct {
u_int16_t match_size;

/* Used inside the kernel */
struct xt_match *match;
} kernel;

/* Total length */
u_int16_t match_size;
} u;

unsigned char data[0];
};

struct xt_entry_target
{
union {
struct {
u_int16_t target_size;

/* Used by userspace */
char name[XT_FUNCTION_MAXNAMELEN-1];

u_int8_t revision;
} user;
struct {
u_int16_t target_size;

/* Used inside the kernel */
struct xt_target *target;
} kernel;

/* Total length */
u_int16_t target_size;
} u;

unsigned char data[0];
};

struct xt_standard_target
{
struct xt_entry_target target;
int verdict;
};

/* The argument to IPT_SO_GET_REVISION_*. Returns highest revision
* kernel supports, if >= revision. */
struct xt_get_revision
Expand Down
31 changes: 2 additions & 29 deletions include/linux/netfilter_arp/arp_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,35 +65,8 @@ struct arpt_arp {
u_int16_t invflags;
};

struct arpt_entry_target
{
union {
struct {
u_int16_t target_size;

/* Used by userspace */
char name[ARPT_FUNCTION_MAXNAMELEN-1];
u_int8_t revision;
} user;
struct {
u_int16_t target_size;

/* Used inside the kernel */
struct arpt_target *target;
} kernel;

/* Total length */
u_int16_t target_size;
} u;

unsigned char data[0];
};

struct arpt_standard_target
{
struct arpt_entry_target target;
int verdict;
};
#define arpt_entry_target xt_entry_target
#define arpt_standard_target xt_standard_target

/* Values for "flag" field in struct arpt_ip (general arp structure).
* No flags defined yet.
Expand Down
58 changes: 3 additions & 55 deletions include/linux/netfilter_ipv4/ip_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,61 +52,9 @@ struct ipt_ip {
u_int8_t invflags;
};

struct ipt_entry_match
{
union {
struct {
u_int16_t match_size;

/* Used by userspace */
char name[IPT_FUNCTION_MAXNAMELEN-1];

u_int8_t revision;
} user;
struct {
u_int16_t match_size;

/* Used inside the kernel */
struct ipt_match *match;
} kernel;

/* Total length */
u_int16_t match_size;
} u;

unsigned char data[0];
};

struct ipt_entry_target
{
union {
struct {
u_int16_t target_size;

/* Used by userspace */
char name[IPT_FUNCTION_MAXNAMELEN-1];

u_int8_t revision;
} user;
struct {
u_int16_t target_size;

/* Used inside the kernel */
struct ipt_target *target;
} kernel;

/* Total length */
u_int16_t target_size;
} u;

unsigned char data[0];
};

struct ipt_standard_target
{
struct ipt_entry_target target;
int verdict;
};
#define ipt_entry_match xt_entry_match
#define ipt_entry_target xt_entry_target
#define ipt_standard_target xt_standard_target

#define ipt_counters xt_counters

Expand Down
57 changes: 3 additions & 54 deletions include/linux/netfilter_ipv6/ip6_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,60 +56,9 @@ struct ip6t_ip6 {
u_int8_t invflags;
};

/* FIXME: If alignment in kernel different from userspace? --RR */
struct ip6t_entry_match
{
union {
struct {
u_int16_t match_size;

/* Used by userspace */
char name[IP6T_FUNCTION_MAXNAMELEN-1];
u_int8_t revision;
} user;
struct {
u_int16_t match_size;

/* Used inside the kernel */
struct ip6t_match *match;
} kernel;

/* Total length */
u_int16_t match_size;
} u;

unsigned char data[0];
};

struct ip6t_entry_target
{
union {
struct {
u_int16_t target_size;

/* Used by userspace */
char name[IP6T_FUNCTION_MAXNAMELEN-1];
u_int8_t revision;
} user;
struct {
u_int16_t target_size;

/* Used inside the kernel */
struct ip6t_target *target;
} kernel;

/* Total length */
u_int16_t target_size;
} u;

unsigned char data[0];
};

struct ip6t_standard_target
{
struct ip6t_entry_target target;
int verdict;
};
#define ip6t_entry_match xt_entry_match
#define ip6t_entry_target xt_entry_target
#define ip6t_standard_target xt_standard_target

#define ip6t_counters xt_counters

Expand Down
4 changes: 2 additions & 2 deletions include/net/tc_act/tc_ipt.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@

#include <net/act_api.h>

struct ipt_entry_target;
struct xt_entry_target;

struct tcf_ipt
{
tca_gen(ipt);
u32 hook;
char *tname;
struct ipt_entry_target *t;
struct xt_entry_target *t;
};

#endif

0 comments on commit 1e30a01

Please sign in to comment.