mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-12-07 00:23:53 +01:00
build: remove support for Linux 3.6 / switch xt_DNETMAP to nf_nat
This commit is contained in:
@@ -78,7 +78,7 @@ struct dnetmap_entry {
|
||||
};
|
||||
|
||||
struct dnetmap_prefix {
|
||||
struct nf_nat_ipv4_multi_range_compat prefix;
|
||||
struct nf_nat_range prefix;
|
||||
char prefix_str[16];
|
||||
#ifdef CONFIG_PROC_FS
|
||||
char proc_str_data[20];
|
||||
@@ -168,7 +168,7 @@ dnetmap_addr_in_prefix(struct dnetmap_net *dnetmap_net, const __be32 addr,
|
||||
|
||||
static struct dnetmap_prefix *
|
||||
dnetmap_prefix_lookup(struct dnetmap_net *dnetmap_net,
|
||||
const struct nf_nat_ipv4_multi_range_compat *mr)
|
||||
const struct nf_nat_range *mr)
|
||||
{
|
||||
struct dnetmap_prefix *p;
|
||||
|
||||
@@ -247,7 +247,7 @@ static int dnetmap_tg_check(const struct xt_tgchk_param *par)
|
||||
{
|
||||
struct dnetmap_net *dnetmap_net = dnetmap_pernet(par->net);
|
||||
const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
|
||||
const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
|
||||
const struct nf_nat_range *mr = &tginfo->prefix;
|
||||
struct dnetmap_prefix *p;
|
||||
struct dnetmap_entry *e;
|
||||
#ifdef CONFIG_PROC_FS
|
||||
@@ -263,14 +263,10 @@ static int dnetmap_tg_check(const struct xt_tgchk_param *par)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!(mr->range[0].flags & NF_NAT_RANGE_MAP_IPS)) {
|
||||
if (!(mr->flags & NF_NAT_RANGE_MAP_IPS)) {
|
||||
pr_debug("DNETMAP:check: bad MAP_IPS.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (mr->rangesize != 1) {
|
||||
pr_debug("DNETMAP:check: bad rangesize %u.\n", mr->rangesize);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mutex_lock(&dnetmap_mutex);
|
||||
p = dnetmap_prefix_lookup(dnetmap_net, mr);
|
||||
@@ -296,15 +292,15 @@ static int dnetmap_tg_check(const struct xt_tgchk_param *par)
|
||||
INIT_LIST_HEAD(&p->lru_list);
|
||||
INIT_LIST_HEAD(&p->elist);
|
||||
|
||||
ip_min = ntohl(mr->range[0].min_ip) + (whole_prefix == 0);
|
||||
ip_max = ntohl(mr->range[0].max_ip) - (whole_prefix == 0);
|
||||
ip_min = ntohl(mr->min_addr.ip) + (whole_prefix == 0);
|
||||
ip_max = ntohl(mr->max_addr.ip) - (whole_prefix == 0);
|
||||
|
||||
sprintf(p->prefix_str, NIPQUAD_FMT "/%u", NIPQUAD(mr->range[0].min_ip),
|
||||
sprintf(p->prefix_str, NIPQUAD_FMT "/%u", NIPQUAD(mr->min_addr.ip),
|
||||
33 - ffs(~(ip_min ^ ip_max)));
|
||||
#ifdef CONFIG_PROC_FS
|
||||
sprintf(p->proc_str_data, NIPQUAD_FMT "_%u", NIPQUAD(mr->range[0].min_ip),
|
||||
sprintf(p->proc_str_data, NIPQUAD_FMT "_%u", NIPQUAD(mr->min_addr.ip),
|
||||
33 - ffs(~(ip_min ^ ip_max)));
|
||||
sprintf(p->proc_str_stat, NIPQUAD_FMT "_%u_stat", NIPQUAD(mr->range[0].min_ip),
|
||||
sprintf(p->proc_str_stat, NIPQUAD_FMT "_%u_stat", NIPQUAD(mr->min_addr.ip),
|
||||
33 - ffs(~(ip_min ^ ip_max)));
|
||||
#endif
|
||||
printk(KERN_INFO KBUILD_MODNAME ": new prefix %s\n", p->prefix_str);
|
||||
@@ -370,8 +366,8 @@ dnetmap_tg(struct sk_buff **pskb, const struct xt_action_param *par)
|
||||
enum ip_conntrack_info ctinfo;
|
||||
__be32 prenat_ip, postnat_ip, prenat_ip_prev;
|
||||
const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
|
||||
const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
|
||||
struct nf_nat_ipv4_range newrange;
|
||||
const struct nf_nat_range *mr = &tginfo->prefix;
|
||||
struct nf_nat_range newrange;
|
||||
struct dnetmap_entry *e;
|
||||
struct dnetmap_prefix *p;
|
||||
__s32 jttl;
|
||||
@@ -408,15 +404,14 @@ dnetmap_tg(struct sk_buff **pskb, const struct xt_action_param *par)
|
||||
|
||||
spin_unlock_bh(&dnetmap_lock);
|
||||
|
||||
newrange = ((struct nf_nat_ipv4_range) {
|
||||
mr->range[0].flags | NF_NAT_RANGE_MAP_IPS,
|
||||
e->prenat_addr, e->prenat_addr,
|
||||
mr->range[0].min, mr->range[0].max});
|
||||
|
||||
/* Hand modified range to generic setup. */
|
||||
memset(&newrange, 0, sizeof(newrange));
|
||||
newrange.flags = mr->flags | NF_NAT_RANGE_MAP_IPS;
|
||||
newrange.min_addr.ip = e->prenat_addr;
|
||||
newrange.max_addr.ip = e->prenat_addr;
|
||||
newrange.min_proto = mr->min_proto;
|
||||
newrange.max_proto = mr->max_proto;
|
||||
return nf_nat_setup_info(ct, &newrange,
|
||||
HOOK2MANIP(par->hooknum));
|
||||
|
||||
}
|
||||
|
||||
prenat_ip = ip_hdr(skb)->saddr;
|
||||
@@ -498,12 +493,12 @@ bind_new_prefix:
|
||||
|
||||
spin_unlock_bh(&dnetmap_lock);
|
||||
|
||||
newrange = ((struct nf_nat_ipv4_range) {
|
||||
mr->range[0].flags | NF_NAT_RANGE_MAP_IPS,
|
||||
postnat_ip, postnat_ip,
|
||||
mr->range[0].min, mr->range[0].max});
|
||||
|
||||
/* Hand modified range to generic setup. */
|
||||
memset(&newrange, 0, sizeof(newrange));
|
||||
newrange.flags = mr->flags | NF_NAT_RANGE_MAP_IPS;
|
||||
newrange.min_addr.ip = postnat_ip;
|
||||
newrange.max_addr.ip = postnat_ip;
|
||||
newrange.min_proto = mr->min_proto;
|
||||
newrange.max_proto = mr->max_proto;
|
||||
return nf_nat_setup_info(ct, &newrange, HOOK2MANIP(par->hooknum));
|
||||
|
||||
no_rev_map:
|
||||
@@ -517,7 +512,7 @@ static void dnetmap_tg_destroy(const struct xt_tgdtor_param *par)
|
||||
{
|
||||
struct dnetmap_net *dnetmap_net = dnetmap_pernet(par->net);
|
||||
const struct xt_DNETMAP_tginfo *tginfo = par->targinfo;
|
||||
const struct nf_nat_ipv4_multi_range_compat *mr = &tginfo->prefix;
|
||||
const struct nf_nat_range *mr = &tginfo->prefix;
|
||||
struct dnetmap_prefix *p;
|
||||
|
||||
if (!(tginfo->flags & XT_DNETMAP_PREFIX))
|
||||
|
||||
Reference in New Issue
Block a user