cregit-Linux how code gets into the kernel

Release 4.11 net/netfilter/xt_nat.c

Directory: net/netfilter
/*
 * (C) 1999-2001 Paul `Rusty' Russell
 * (C) 2002-2006 Netfilter Core Team <coreteam@netfilter.org>
 * (C) 2011 Patrick McHardy <kaber@trash.net>
 *
 * 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
 * published by the Free Software Foundation.
 */

#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/netfilter.h>
#include <linux/netfilter/x_tables.h>
#include <net/netfilter/nf_nat_core.h>


static int xt_nat_checkentry_v0(const struct xt_tgchk_param *par) { const struct nf_nat_ipv4_multi_range_compat *mr = par->targinfo; if (mr->rangesize != 1) { pr_info("%s: multiple ranges no longer supported\n", par->target->name); return -EINVAL; } return nf_ct_netns_get(par->net, par->family); }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy4372.88%125.00%
Florian Westphal1016.95%125.00%
Jozsef Kadlecsik58.47%125.00%
Jan Engelhardt11.69%125.00%
Total59100.00%4100.00%


static int xt_nat_checkentry(const struct xt_tgchk_param *par) { return nf_ct_netns_get(par->net, par->family); }

Contributors

PersonTokensPropCommitsCommitProp
Florian Westphal24100.00%1100.00%
Total24100.00%1100.00%


static void xt_nat_destroy(const struct xt_tgdtor_param *par) { nf_ct_netns_put(par->net, par->family); }

Contributors

PersonTokensPropCommitsCommitProp
Florian Westphal23100.00%1100.00%
Total23100.00%1100.00%


static void xt_nat_convert_range(struct nf_nat_range *dst, const struct nf_nat_ipv4_range *src) { memset(&dst->min_addr, 0, sizeof(dst->min_addr)); memset(&dst->max_addr, 0, sizeof(dst->max_addr)); dst->flags = src->flags; dst->min_addr.ip = src->min_ip; dst->max_addr.ip = src->max_ip; dst->min_proto = src->min; dst->max_proto = src->max; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy8993.68%150.00%
Jozsef Kadlecsik66.32%150.00%
Total95100.00%2100.00%


static unsigned int xt_snat_target_v0(struct sk_buff *skb, const struct xt_action_param *par) { const struct nf_nat_ipv4_multi_range_compat *mr = par->targinfo; struct nf_nat_range range; enum ip_conntrack_info ctinfo; struct nf_conn *ct; ct = nf_ct_get(skb, &ctinfo); NF_CT_ASSERT(ct != NULL && (ctinfo == IP_CT_NEW || ctinfo == IP_CT_RELATED || ctinfo == IP_CT_RELATED_REPLY)); xt_nat_convert_range(&range, &mr->range[0]); return nf_nat_setup_info(ct, &range, NF_NAT_MANIP_SRC); }

Contributors

PersonTokensPropCommitsCommitProp
Jozsef Kadlecsik6162.89%114.29%
Patrick McHardy2828.87%228.57%
Jan Engelhardt55.15%228.57%
Herbert Xu22.06%114.29%
Eric Dumazet11.03%114.29%
Total97100.00%7100.00%


static unsigned int xt_dnat_target_v0(struct sk_buff *skb, const struct xt_action_param *par) { const struct nf_nat_ipv4_multi_range_compat *mr = par->targinfo; struct nf_nat_range range; enum ip_conntrack_info ctinfo; struct nf_conn *ct; ct = nf_ct_get(skb, &ctinfo); NF_CT_ASSERT(ct != NULL && (ctinfo == IP_CT_NEW || ctinfo == IP_CT_RELATED)); xt_nat_convert_range(&range, &mr->range[0]); return nf_nat_setup_info(ct, &range, NF_NAT_MANIP_DST); }

Contributors

PersonTokensPropCommitsCommitProp
Jozsef Kadlecsik5761.29%116.67%
Patrick McHardy3032.26%233.33%
Jan Engelhardt44.30%233.33%
Herbert Xu22.15%116.67%
Total93100.00%6100.00%


static unsigned int xt_snat_target_v1(struct sk_buff *skb, const struct xt_action_param *par) { const struct nf_nat_range *range = par->targinfo; enum ip_conntrack_info ctinfo; struct nf_conn *ct; ct = nf_ct_get(skb, &ctinfo); NF_CT_ASSERT(ct != NULL && (ctinfo == IP_CT_NEW || ctinfo == IP_CT_RELATED || ctinfo == IP_CT_RELATED_REPLY)); return nf_nat_setup_info(ct, range, NF_NAT_MANIP_SRC); }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy3848.72%228.57%
Jozsef Kadlecsik3038.46%114.29%
Jan Engelhardt56.41%342.86%
Changli Gao56.41%114.29%
Total78100.00%7100.00%


static unsigned int xt_dnat_target_v1(struct sk_buff *skb, const struct xt_action_param *par) { const struct nf_nat_range *range = par->targinfo; enum ip_conntrack_info ctinfo; struct nf_conn *ct; ct = nf_ct_get(skb, &ctinfo); NF_CT_ASSERT(ct != NULL && (ctinfo == IP_CT_NEW || ctinfo == IP_CT_RELATED)); return nf_nat_setup_info(ct, range, NF_NAT_MANIP_DST); }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy4155.41%133.33%
Jozsef Kadlecsik3141.89%133.33%
Herbert Xu22.70%133.33%
Total74100.00%3100.00%

static struct xt_target xt_nat_target_reg[] __read_mostly = { { .name = "SNAT", .revision = 0, .checkentry = xt_nat_checkentry_v0, .destroy = xt_nat_destroy, .target = xt_snat_target_v0, .targetsize = sizeof(struct nf_nat_ipv4_multi_range_compat), .family = NFPROTO_IPV4, .table = "nat", .hooks = (1 << NF_INET_POST_ROUTING) | (1 << NF_INET_LOCAL_IN), .me = THIS_MODULE, }, { .name = "DNAT", .revision = 0, .checkentry = xt_nat_checkentry_v0, .destroy = xt_nat_destroy, .target = xt_dnat_target_v0, .targetsize = sizeof(struct nf_nat_ipv4_multi_range_compat), .family = NFPROTO_IPV4, .table = "nat", .hooks = (1 << NF_INET_PRE_ROUTING) | (1 << NF_INET_LOCAL_OUT), .me = THIS_MODULE, }, { .name = "SNAT", .revision = 1, .checkentry = xt_nat_checkentry, .destroy = xt_nat_destroy, .target = xt_snat_target_v1, .targetsize = sizeof(struct nf_nat_range), .table = "nat", .hooks = (1 << NF_INET_POST_ROUTING) | (1 << NF_INET_LOCAL_IN), .me = THIS_MODULE, }, { .name = "DNAT", .revision = 1, .checkentry = xt_nat_checkentry, .destroy = xt_nat_destroy, .target = xt_dnat_target_v1, .targetsize = sizeof(struct nf_nat_range), .table = "nat", .hooks = (1 << NF_INET_PRE_ROUTING) | (1 << NF_INET_LOCAL_OUT), .me = THIS_MODULE, }, };
static int __init xt_nat_init(void) { return xt_register_targets(xt_nat_target_reg, ARRAY_SIZE(xt_nat_target_reg)); }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy840.00%133.33%
Jozsef Kadlecsik630.00%133.33%
Alexey Dobriyan630.00%133.33%
Total20100.00%3100.00%


static void __exit xt_nat_exit(void) { xt_unregister_targets(xt_nat_target_reg, ARRAY_SIZE(xt_nat_target_reg)); }

Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy1157.89%150.00%
Jozsef Kadlecsik842.11%150.00%
Total19100.00%2100.00%

module_init(xt_nat_init); module_exit(xt_nat_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Patrick McHardy <kaber@trash.net>"); MODULE_ALIAS("ipt_SNAT"); MODULE_ALIAS("ipt_DNAT"); MODULE_ALIAS("ip6t_SNAT"); MODULE_ALIAS("ip6t_DNAT");

Overall Contributors

PersonTokensPropCommitsCommitProp
Patrick McHardy46051.05%731.82%
Jozsef Kadlecsik30133.41%14.55%
Florian Westphal879.66%14.55%
Alexey Dobriyan192.11%14.55%
Jan Engelhardt182.00%836.36%
Herbert Xu60.67%14.55%
Changli Gao50.55%14.55%
Elison Niven40.44%14.55%
Eric Dumazet10.11%14.55%
Total901100.00%22100.00%
Directory: net/netfilter
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.