mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-20 19:44:56 +02:00
ipset: update to 5.3
This commit is contained in:
@@ -5,6 +5,10 @@ Fixes:
|
|||||||
- build: restore functionality of `configure --without-kbuild`
|
- build: restore functionality of `configure --without-kbuild`
|
||||||
- build: fix objdir builds for ipset-5 (xt-a specific)
|
- build: fix objdir builds for ipset-5 (xt-a specific)
|
||||||
- xt_LOGMARK: fix detection of untracked connection for Linux >= 2.6.36
|
- xt_LOGMARK: fix detection of untracked connection for Linux >= 2.6.36
|
||||||
|
Enhancements:
|
||||||
|
- Update to ipset 5.3
|
||||||
|
* make IPv4 and IPv6 address handling similar
|
||||||
|
* show correct line numbers in restore output for parser errors
|
||||||
|
|
||||||
|
|
||||||
v1.32 (2011-01-04)
|
v1.32 (2011-01-04)
|
||||||
|
@@ -5,3 +5,7 @@ obj-m += ip_set.o ip_set_bitmap_ip.o ip_set_bitmap_ipmac.o
|
|||||||
obj-m += ip_set_bitmap_port.o ip_set_hash_ip.o ip_set_hash_ipport.o
|
obj-m += ip_set_bitmap_port.o ip_set_hash_ip.o ip_set_hash_ipport.o
|
||||||
obj-m += ip_set_hash_ipportip.o ip_set_hash_ipportnet.o ip_set_hash_net.o
|
obj-m += ip_set_hash_ipportip.o ip_set_hash_ipportnet.o ip_set_hash_net.o
|
||||||
obj-m += ip_set_hash_netport.o ip_set_list_set.o
|
obj-m += ip_set_hash_netport.o ip_set_list_set.o
|
||||||
|
|
||||||
|
ip_set-y := ip_set_core.o pfxlen.o
|
||||||
|
|
||||||
|
EXTRA_CFLAGS += -DLCONFIG_IP_SET_MAX=256
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# -*- Makefile -*-
|
# -*- Makefile -*-
|
||||||
|
|
||||||
AM_CPPFLAGS = -I${srcdir}/include
|
AM_CPPFLAGS = -I${srcdir}/include -DNDEBUG
|
||||||
AM_CFLAGS = ${regular_CFLAGS} ${libmnl_CFLAGS}
|
AM_CFLAGS = ${regular_CFLAGS} ${libmnl_CFLAGS}
|
||||||
|
|
||||||
include ../../Makefile.extra
|
include ../../Makefile.extra
|
||||||
|
@@ -24,6 +24,7 @@ struct ipset_handle;
|
|||||||
extern struct ipset_data * ipset_session_data(const struct ipset_session *session);
|
extern struct ipset_data * ipset_session_data(const struct ipset_session *session);
|
||||||
extern struct ipset_handle * ipset_session_handle(const struct ipset_session *session);
|
extern struct ipset_handle * ipset_session_handle(const struct ipset_session *session);
|
||||||
extern const struct ipset_type * ipset_saved_type(const struct ipset_session *session);
|
extern const struct ipset_type * ipset_saved_type(const struct ipset_session *session);
|
||||||
|
extern void ipset_session_lineno(struct ipset_session *session, uint32_t lineno);
|
||||||
|
|
||||||
enum ipset_err_type {
|
enum ipset_err_type {
|
||||||
IPSET_ERROR,
|
IPSET_ERROR,
|
||||||
|
@@ -25,6 +25,11 @@
|
|||||||
#define MAX(a, b) (a > b ? a : b)
|
#define MAX(a, b) (a > b ? a : b)
|
||||||
|
|
||||||
#define UNUSED __attribute__ ((unused))
|
#define UNUSED __attribute__ ((unused))
|
||||||
|
#ifdef NDEBUG
|
||||||
|
#define ASSERT_UNUSED UNUSED
|
||||||
|
#else
|
||||||
|
#define ASSERT_UNUSED
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef ARRAY_SIZE
|
#ifndef ARRAY_SIZE
|
||||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||||
* Patrick Schaaf <bof@bof.de>
|
* Patrick Schaaf <bof@bof.de>
|
||||||
* Martin Josefsson <gandalf@wlug.westbo.se>
|
* Martin Josefsson <gandalf@wlug.westbo.se>
|
||||||
* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -279,6 +279,7 @@ struct ip_set_type {
|
|||||||
struct module *me;
|
struct module *me;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* register and unregister set type */
|
||||||
extern int ip_set_type_register(struct ip_set_type *set_type);
|
extern int ip_set_type_register(struct ip_set_type *set_type);
|
||||||
extern void ip_set_type_unregister(struct ip_set_type *set_type);
|
extern void ip_set_type_unregister(struct ip_set_type *set_type);
|
||||||
|
|
||||||
@@ -491,15 +492,6 @@ bitmap_bytes(u32 a, u32 b)
|
|||||||
return 4 * ((((b - a + 8) / 8) + 3) / 4);
|
return 4 * ((((b - a + 8) / 8) + 3) / 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prefixlen maps */
|
|
||||||
extern const union nf_inet_addr prefixlen_netmask_map[];
|
|
||||||
extern const union nf_inet_addr prefixlen_hostmask_map[];
|
|
||||||
|
|
||||||
#define NETMASK(n) prefixlen_netmask_map[n].ip
|
|
||||||
#define NETMASK6(n) prefixlen_netmask_map[n].ip6
|
|
||||||
#define HOSTMASK(n) prefixlen_hostmask_map[n].ip
|
|
||||||
#define HOSTMASK6(n) prefixlen_hostmask_map[n].ip6
|
|
||||||
|
|
||||||
/* Interface to iptables/ip6tables */
|
/* Interface to iptables/ip6tables */
|
||||||
|
|
||||||
#define SO_IP_SET 83
|
#define SO_IP_SET 83
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||||
* Patrick Schaaf <bof@bof.de>
|
* Patrick Schaaf <bof@bof.de>
|
||||||
* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_bitmap.h"
|
#include "ip_set_bitmap.h"
|
||||||
#define IP_SET_BITMAP_TIMEOUT
|
#define IP_SET_BITMAP_TIMEOUT
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||||
* Patrick Schaaf <bof@bof.de>
|
* Patrick Schaaf <bof@bof.de>
|
||||||
* Martin Josefsson <gandalf@wlug.westbo.se>
|
* Martin Josefsson <gandalf@wlug.westbo.se>
|
||||||
* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_bitmap.h"
|
#include "ip_set_bitmap.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||||
* Patrick Schaaf <bof@bof.de>
|
* Patrick Schaaf <bof@bof.de>
|
||||||
* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -30,7 +30,7 @@ static struct list_head ip_set_type_list; /* all registered set types */
|
|||||||
static DEFINE_MUTEX(ip_set_type_mutex); /* protects ip_set_type_list */
|
static DEFINE_MUTEX(ip_set_type_mutex); /* protects ip_set_type_list */
|
||||||
|
|
||||||
static struct ip_set **ip_set_list; /* all individual sets */
|
static struct ip_set **ip_set_list; /* all individual sets */
|
||||||
static ip_set_id_t ip_set_max = 256; /* max number of sets */
|
static ip_set_id_t ip_set_max = LCONFIG_IP_SET_MAX; /* max number of sets */
|
||||||
|
|
||||||
#define STREQ(a, b) (strncmp(a, b, IPSET_MAXNAMELEN) == 0)
|
#define STREQ(a, b) (strncmp(a, b, IPSET_MAXNAMELEN) == 0)
|
||||||
|
|
||||||
@@ -42,294 +42,6 @@ MODULE_LICENSE("GPL");
|
|||||||
MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
|
MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");
|
||||||
MODULE_DESCRIPTION("core IP set support");
|
MODULE_DESCRIPTION("core IP set support");
|
||||||
|
|
||||||
/*
|
|
||||||
* Prefixlen maps for fast conversions
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define E(a, b, c, d) \
|
|
||||||
{.ip6 = { \
|
|
||||||
__constant_htonl(a), __constant_htonl(b), \
|
|
||||||
__constant_htonl(c), __constant_htonl(d), \
|
|
||||||
} }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This table works for both IPv4 and IPv6;
|
|
||||||
* just use prefixlen_netmask_map[prefixlength].ip.
|
|
||||||
*/
|
|
||||||
const union nf_inet_addr prefixlen_netmask_map[] = {
|
|
||||||
E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
|
|
||||||
};
|
|
||||||
EXPORT_SYMBOL_GPL(prefixlen_netmask_map);
|
|
||||||
|
|
||||||
#undef E
|
|
||||||
#define E(a, b, c, d) \
|
|
||||||
{.ip6 = { a, b, c, d } }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This table works for both IPv4 and IPv6;
|
|
||||||
* just use prefixlen_hostmask_map[prefixlength].ip.
|
|
||||||
*/
|
|
||||||
const union nf_inet_addr prefixlen_hostmask_map[] = {
|
|
||||||
E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
|
|
||||||
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
|
|
||||||
};
|
|
||||||
EXPORT_SYMBOL_GPL(prefixlen_hostmask_map);
|
|
||||||
|
|
||||||
static struct genl_family ip_set_netlink_subsys;
|
static struct genl_family ip_set_netlink_subsys;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -387,8 +99,7 @@ find_set_type_rcu(const char *name, u8 family, u8 revision)
|
|||||||
* filled out.
|
* filled out.
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
find_set_type_minmax(const char *name, u8 family,
|
find_set_type_minmax(const char *name, u8 family, u8 *min, u8 *max)
|
||||||
u8 *min, u8 *max)
|
|
||||||
{
|
{
|
||||||
struct ip_set_type *type;
|
struct ip_set_type *type;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
@@ -840,7 +551,7 @@ ip_set_create(struct sk_buff *skb, struct genl_info *info)
|
|||||||
if (!set)
|
if (!set)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
rwlock_init(&set->lock);
|
rwlock_init(&set->lock);
|
||||||
strncpy(set->name, name, IPSET_MAXNAMELEN);
|
strlcpy(set->name, name, IPSET_MAXNAMELEN);
|
||||||
atomic_set(&set->ref, 0);
|
atomic_set(&set->ref, 0);
|
||||||
set->family = family;
|
set->family = family;
|
||||||
|
|
||||||
@@ -1105,10 +816,6 @@ ip_set_swap(struct sk_buff *skb, struct genl_info *info)
|
|||||||
ip_set_list[from_id] = to;
|
ip_set_list[from_id] = to;
|
||||||
ip_set_list[to_id] = from;
|
ip_set_list[to_id] = from;
|
||||||
|
|
||||||
/* Avoid possible race between ongoing slow add/del in kernel space
|
|
||||||
* and next destroy command. */
|
|
||||||
synchronize_net();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_hash.h"
|
#include "ip_set_hash.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_getport.h"
|
#include "ip_set_getport.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_getport.h"
|
#include "ip_set_getport.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_getport.h"
|
#include "ip_set_getport.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_hash.h"
|
#include "ip_set_hash.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include "pfxlen.h"
|
||||||
#include "ip_set.h"
|
#include "ip_set.h"
|
||||||
#include "ip_set_timeout.h"
|
#include "ip_set_timeout.h"
|
||||||
#include "ip_set_getport.h"
|
#include "ip_set_getport.h"
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2008-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2008-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#ifndef _IP_SET_TIMEOUT_H
|
#ifndef _IP_SET_TIMEOUT_H
|
||||||
#define _IP_SET_TIMEOUT_H
|
#define _IP_SET_TIMEOUT_H
|
||||||
|
|
||||||
/* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@@ -711,6 +711,14 @@ enum ipaddr_type {
|
|||||||
IPADDR_RANGE,
|
IPADDR_RANGE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline bool
|
||||||
|
cidr_hostaddr(const char *str, uint8_t family)
|
||||||
|
{
|
||||||
|
char *a = cidr_separator(str);
|
||||||
|
|
||||||
|
return family == AF_INET ? STREQ(a, "/32") : STREQ(a, "/128");
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
parse_ip(struct ipset_session *session,
|
parse_ip(struct ipset_session *session,
|
||||||
enum ipset_opt opt, const char *str, enum ipaddr_type addrtype)
|
enum ipset_opt opt, const char *str, enum ipaddr_type addrtype)
|
||||||
@@ -725,7 +733,8 @@ parse_ip(struct ipset_session *session,
|
|||||||
|
|
||||||
switch (addrtype) {
|
switch (addrtype) {
|
||||||
case IPADDR_PLAIN:
|
case IPADDR_PLAIN:
|
||||||
if (range_separator(str) || cidr_separator(str))
|
if (range_separator(str)
|
||||||
|
|| (cidr_separator(str) && !cidr_hostaddr(str, family)))
|
||||||
return syntax_err("plain IP address must be supplied: %s",
|
return syntax_err("plain IP address must be supplied: %s",
|
||||||
str);
|
str);
|
||||||
break;
|
break;
|
||||||
@@ -836,7 +845,7 @@ ipset_parse_net(struct ipset_session *session,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_parse_range(struct ipset_session *session,
|
ipset_parse_range(struct ipset_session *session,
|
||||||
enum ipset_opt opt, const char *str)
|
enum ipset_opt opt ASSERT_UNUSED, const char *str)
|
||||||
{
|
{
|
||||||
assert(session);
|
assert(session);
|
||||||
assert(opt == IPSET_OPT_IP || opt == IPSET_OPT_IP2);
|
assert(opt == IPSET_OPT_IP || opt == IPSET_OPT_IP2);
|
||||||
@@ -1313,7 +1322,7 @@ ipset_parse_flag(struct ipset_session *session,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_parse_typename(struct ipset_session *session,
|
ipset_parse_typename(struct ipset_session *session,
|
||||||
enum ipset_opt opt, const char *str)
|
enum ipset_opt opt ASSERT_UNUSED, const char *str)
|
||||||
{
|
{
|
||||||
const struct ipset_type *type;
|
const struct ipset_type *type;
|
||||||
const char *typename;
|
const char *typename;
|
||||||
|
@@ -89,7 +89,8 @@ ipset_print_ether(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_family(char *buf, unsigned int len,
|
ipset_print_family(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
uint8_t family;
|
uint8_t family;
|
||||||
@@ -410,7 +411,8 @@ ipset_print_name(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_port(char *buf, unsigned int len,
|
ipset_print_port(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
const uint16_t *port;
|
const uint16_t *port;
|
||||||
@@ -454,7 +456,8 @@ ipset_print_port(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_proto(char *buf, unsigned int len,
|
ipset_print_proto(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
const struct protoent *protoent;
|
const struct protoent *protoent;
|
||||||
@@ -490,7 +493,8 @@ ipset_print_proto(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_icmp(char *buf, unsigned int len,
|
ipset_print_icmp(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
@@ -523,7 +527,8 @@ ipset_print_icmp(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_icmpv6(char *buf, unsigned int len,
|
ipset_print_icmpv6(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
@@ -556,7 +561,8 @@ ipset_print_icmpv6(char *buf, unsigned int len,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ipset_print_proto_port(char *buf, unsigned int len,
|
ipset_print_proto_port(char *buf, unsigned int len,
|
||||||
const struct ipset_data *data, enum ipset_opt opt,
|
const struct ipset_data *data,
|
||||||
|
enum ipset_opt opt ASSERT_UNUSED,
|
||||||
uint8_t env UNUSED)
|
uint8_t env UNUSED)
|
||||||
{
|
{
|
||||||
int size, offset = 0;
|
int size, offset = 0;
|
||||||
|
@@ -100,6 +100,19 @@ ipset_saved_type(const struct ipset_session *session)
|
|||||||
return session->saved_type;
|
return session->saved_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ipset_session_lineno - set session lineno
|
||||||
|
* @session: session structure
|
||||||
|
*
|
||||||
|
* Set session lineno to report parser errors correctly.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ipset_session_lineno(struct ipset_session *session, uint32_t lineno)
|
||||||
|
{
|
||||||
|
assert(session);
|
||||||
|
session->lineno = lineno;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Environment options
|
* Environment options
|
||||||
*/
|
*/
|
||||||
|
289
extensions/ipset-5/pfxlen.c
Normal file
289
extensions/ipset-5/pfxlen.c
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
#include "pfxlen.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prefixlen maps for fast conversions, by Jan Engelhardt.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define E(a, b, c, d) \
|
||||||
|
{.ip6 = { \
|
||||||
|
__constant_htonl(a), __constant_htonl(b), \
|
||||||
|
__constant_htonl(c), __constant_htonl(d), \
|
||||||
|
} }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This table works for both IPv4 and IPv6;
|
||||||
|
* just use prefixlen_netmask_map[prefixlength].ip.
|
||||||
|
*/
|
||||||
|
const union nf_inet_addr prefixlen_netmask_map[] = {
|
||||||
|
E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
|
||||||
|
};
|
||||||
|
EXPORT_SYMBOL_GPL(prefixlen_netmask_map);
|
||||||
|
|
||||||
|
#undef E
|
||||||
|
#define E(a, b, c, d) \
|
||||||
|
{.ip6 = { a, b, c, d } }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This table works for both IPv4 and IPv6;
|
||||||
|
* just use prefixlen_hostmask_map[prefixlength].ip.
|
||||||
|
*/
|
||||||
|
const union nf_inet_addr prefixlen_hostmask_map[] = {
|
||||||
|
E(0x00000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0x80000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xC0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xE0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xF0000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xF8000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFC000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFE000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFF000000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFF800000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFC00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFE00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFF00000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFF80000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFC0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFE0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFF0000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFF8000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFC000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFE000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFF000, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFF800, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFC00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFE00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFF00, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFF80, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFC0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFE0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFF0, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFF8, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFC, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0x80000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xC0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xE0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xF0000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xF8000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFC000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFE000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFF000000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFF800000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFC00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFE00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFF00000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFF80000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFC0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFE0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFF0000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFF8000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFC000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFE000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFF000, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFF800, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFC00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFE00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFF00, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFF80, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFC0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFE0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFF0, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFC, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFE, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0x80000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFC000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFE000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF800000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFC00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF00000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF80000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFC0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF0000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF8000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFC000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF000),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF800),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFE00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF00),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF80),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFC0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFE0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFC),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE),
|
||||||
|
E(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF),
|
||||||
|
};
|
||||||
|
EXPORT_SYMBOL_GPL(prefixlen_hostmask_map);
|
16
extensions/ipset-5/pfxlen.h
Normal file
16
extensions/ipset-5/pfxlen.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#ifndef _PFXLEN_H
|
||||||
|
#define _PFXLEN_H
|
||||||
|
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
#include <linux/netfilter.h>
|
||||||
|
|
||||||
|
/* Prefixlen maps, by Jan Engelhardt */
|
||||||
|
extern const union nf_inet_addr prefixlen_netmask_map[];
|
||||||
|
extern const union nf_inet_addr prefixlen_hostmask_map[];
|
||||||
|
|
||||||
|
#define NETMASK(n) prefixlen_netmask_map[n].ip
|
||||||
|
#define NETMASK6(n) prefixlen_netmask_map[n].ip6
|
||||||
|
#define HOSTMASK(n) prefixlen_hostmask_map[n].ip
|
||||||
|
#define HOSTMASK6(n) prefixlen_hostmask_map[n].ip6
|
||||||
|
|
||||||
|
#endif /*_PFXLEN_H */
|
@@ -431,13 +431,8 @@ parse_commandline(int argc, char *argv[])
|
|||||||
const struct ipset_commands *command;
|
const struct ipset_commands *command;
|
||||||
const struct ipset_type *type;
|
const struct ipset_type *type;
|
||||||
|
|
||||||
/* Initialize session */
|
/* Set session lineno to report parser errors correctly */
|
||||||
if (session == NULL) {
|
ipset_session_lineno(session, restore_line);
|
||||||
session = ipset_session_init(printf);
|
|
||||||
if (session == NULL)
|
|
||||||
return exit_error(OTHER_PROBLEM,
|
|
||||||
"Cannot initialize ipset session, aborting.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Commandline parsing, somewhat similar to that of 'ip' */
|
/* Commandline parsing, somewhat similar to that of 'ip' */
|
||||||
|
|
||||||
@@ -743,5 +738,11 @@ main(int argc, char *argv[])
|
|||||||
ipset_type_add(&ipset_hash_ipportnet0);
|
ipset_type_add(&ipset_hash_ipportnet0);
|
||||||
ipset_type_add(&ipset_list_set0);
|
ipset_type_add(&ipset_list_set0);
|
||||||
|
|
||||||
|
/* Initialize session */
|
||||||
|
session = ipset_session_init(printf);
|
||||||
|
if (session == NULL)
|
||||||
|
return exit_error(OTHER_PROBLEM,
|
||||||
|
"Cannot initialize ipset session, aborting.");
|
||||||
|
|
||||||
return parse_commandline(argc, argv);
|
return parse_commandline(argc, argv);
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||||
* Patrick Schaaf <bof@bof.de>
|
* Patrick Schaaf <bof@bof.de>
|
||||||
* Martin Josefsson <gandalf@wlug.westbo.se>
|
* Martin Josefsson <gandalf@wlug.westbo.se>
|
||||||
* Copyright (C) 2003-2010 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
Reference in New Issue
Block a user