cregit-Linux how code gets into the kernel

Release 4.10 net/netfilter/xt_helper.c

Directory: net/netfilter
/* iptables module to match on related connections */
/*
 * (C) 2001 Martin Josefsson <gandalf@wlug.westbo.se>
 *
 * 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.
 */

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/netfilter.h>
#include <net/netfilter/nf_conntrack.h>
#include <net/netfilter/nf_conntrack_core.h>
#include <net/netfilter/nf_conntrack_helper.h>
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter/xt_helper.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Martin Josefsson <gandalf@netfilter.org>");
MODULE_DESCRIPTION("Xtables: Related connection matching");
MODULE_ALIAS("ipt_helper");
MODULE_ALIAS("ip6t_helper");



static bool helper_mt(const struct sk_buff *skb, struct xt_action_param *par) { const struct xt_helper_info *info = par->matchinfo; const struct nf_conn *ct; const struct nf_conn_help *master_help; const struct nf_conntrack_helper *helper; enum ip_conntrack_info ctinfo; bool ret = info->invert; ct = nf_ct_get(skb, &ctinfo); if (!ct || !ct->master) return ret; master_help = nfct_help(ct->master); if (!master_help) return ret; /* rcu_read_lock()ed by nf_hook_thresh */ helper = rcu_dereference(master_help->helper); if (!helper) return ret; if (info->name[0] == '\0') ret = !ret; else ret ^= !strncmp(helper->name, info->name, strlen(helper->name)); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
yasuyuki kozakaiyasuyuki kozakai10467.10%110.00%
patrick mchardypatrick mchardy2214.19%110.00%
harald welteharald welte1610.32%220.00%
jan engelhardtjan engelhardt127.74%550.00%
aaron conoleaaron conole10.65%110.00%
Total155100.00%10100.00%


static int helper_mt_check(const struct xt_mtchk_param *par) { struct xt_helper_info *info = par->matchinfo; int ret; ret = nf_ct_netns_get(par->net, par->family); if (ret < 0) { pr_info("cannot load conntrack support for proto=%u\n", par->family); return ret; } info->name[sizeof(info->name) - 1] = '\0'; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
jan engelhardtjan engelhardt2330.26%650.00%
harald welteharald welte2330.26%216.67%
pablo neira ayusopablo neira ayuso1519.74%18.33%
gao fenggao feng810.53%18.33%
florian westphalflorian westphal56.58%18.33%
patrick mchardypatrick mchardy22.63%18.33%
Total76100.00%12100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
pablo neira ayusopablo neira ayuso1356.52%125.00%
jan engelhardtjan engelhardt521.74%250.00%
florian westphalflorian westphal521.74%125.00%
Total23100.00%4100.00%

static struct xt_match helper_mt_reg __read_mostly = { .name = "helper", .revision = 0, .family = NFPROTO_UNSPEC, .checkentry = helper_mt_check, .match = helper_mt, .destroy = helper_mt_destroy, .matchsize = sizeof(struct xt_helper_info), .me = THIS_MODULE, };
static int __init helper_mt_init(void) { return xt_register_match(&helper_mt_reg); }

Contributors

PersonTokensPropCommitsCommitProp
harald welteharald welte1168.75%125.00%
jan engelhardtjan engelhardt425.00%250.00%
patrick mchardypatrick mchardy16.25%125.00%
Total16100.00%4100.00%


static void __exit helper_mt_exit(void) { xt_unregister_match(&helper_mt_reg); }

Contributors

PersonTokensPropCommitsCommitProp
harald welteharald welte1066.67%240.00%
jan engelhardtjan engelhardt426.67%240.00%
patrick mchardypatrick mchardy16.67%120.00%
Total15100.00%5100.00%

module_init(helper_mt_init); module_exit(helper_mt_exit);

Overall Contributors

PersonTokensPropCommitsCommitProp
harald welteharald welte12731.36%515.62%
yasuyuki kozakaiyasuyuki kozakai11327.90%13.12%
jan engelhardtjan engelhardt6516.05%1340.62%
patrick mchardypatrick mchardy409.88%618.75%
pablo neira ayusopablo neira ayuso358.64%26.25%
florian westphalflorian westphal102.47%13.12%
gao fenggao feng81.98%13.12%
art haasart haas51.23%13.12%
andrew mortonandrew morton10.25%13.12%
aaron conoleaaron conole10.25%13.12%
Total405100.00%32100.00%
Directory: net/netfilter
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.