11 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
12 #include <linux/types.h>
16 #include <linux/module.h>
17 #include <linux/netfilter.h>
22 #include <linux/netfilter_ipv4.h>
23 #include <linux/netfilter/x_tables.h>
59 ct = nf_ct_get(skb, &ctinfo);
73 nh = rt_nexthop(rt, ip_hdr(skb)->
daddr);
76 pr_info(
"%s ate my IP address\n", par->
out->name);
80 nat->masq_index = par->
out->ifindex;
83 memset(&newrange.min_addr, 0,
sizeof(newrange.min_addr));
84 memset(&newrange.max_addr, 0,
sizeof(newrange.max_addr));
86 newrange.min_addr.ip = newsrc;
87 newrange.max_addr.ip = newsrc;
88 newrange.min_proto = mr->
range[0].min;
89 newrange.max_proto = mr->
range[0].max;
96 device_cmp(
struct nf_conn *
i,
void *ifindex)
104 return nat->masq_index == (
int)(
long)ifindex;
112 struct net *
net = dev_net(dev);
131 struct net_device *dev = ((
struct in_ifaddr *)ptr)->ifa_dev->
dev;
132 return masq_device_event(
this, event, dev);
136 .notifier_call = masq_device_event,
140 .notifier_call = masq_inet_event,
144 .name =
"MASQUERADE",
146 .target = masquerade_tg,
150 .checkentry = masquerade_tg_check,
154 static int __init masquerade_tg_init(
void)
170 static void __exit masquerade_tg_exit(
void)