cregit-Linux how code gets into the kernel

Release 4.8 net/sched/sch_ingress.c

Directory: net/sched
/* net/sched/sch_ingress.c - Ingress and clsact qdisc
 *
 *              This program is free software; you can redistribute it and/or
 *              modify it under the terms of the GNU General Public License
 *              as published by the Free Software Foundation; either version
 *              2 of the License, or (at your option) any later version.
 *
 * Authors:     Jamal Hadi Salim 1999
 */

#include <linux/module.h>
#include <linux/types.h>
#include <linux/list.h>
#include <linux/skbuff.h>
#include <linux/rtnetlink.h>

#include <net/netlink.h>
#include <net/pkt_sched.h>


static struct Qdisc *ingress_leaf(struct Qdisc *sch, unsigned long arg) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git20100.00%1100.00%
Total20100.00%1100.00%


static unsigned long ingress_get(struct Qdisc *sch, u32 classid) { return TC_H_MIN(classid) + 1; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git23100.00%1100.00%
Total23100.00%1100.00%


static bool ingress_cl_offload(u32 classid) { return true; }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann12100.00%1100.00%
Total12100.00%1100.00%


static unsigned long ingress_bind_filter(struct Qdisc *sch, unsigned long parent, u32 classid) { return ingress_get(sch, classid); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git27100.00%1100.00%
Total27100.00%1100.00%


static void ingress_put(struct Qdisc *sch, unsigned long cl) { }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git14100.00%1100.00%
Total14100.00%1100.00%


static void ingress_walk(struct Qdisc *sch, struct qdisc_walker *walker) { }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git1493.33%150.00%
joe perchesjoe perches16.67%150.00%
Total15100.00%2100.00%


static struct tcf_proto __rcu **ingress_find_tcf(struct Qdisc *sch, unsigned long cl) { struct net_device *dev = qdisc_dev(sch); return &dev->ingress_cl_list; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git2880.00%125.00%
daniel borkmanndaniel borkmann514.29%125.00%
jamal hadi salimjamal hadi salim12.86%125.00%
john fastabendjohn fastabend12.86%125.00%
Total35100.00%4100.00%


static int ingress_init(struct Qdisc *sch, struct nlattr *opt) { net_inc_ingress_queue(); sch->flags |= TCQ_F_CPUSTATS; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann2278.57%150.00%
alexei starovoitovalexei starovoitov621.43%150.00%
Total28100.00%2100.00%


static void ingress_destroy(struct Qdisc *sch) { struct net_device *dev = qdisc_dev(sch); tcf_destroy_chain(&dev->ingress_cl_list); net_dec_ingress_queue(); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git2165.62%120.00%
daniel borkmanndaniel borkmann825.00%240.00%
patrick mchardypatrick mchardy39.38%240.00%
Total32100.00%5100.00%


static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb) { struct nlattr *nest; nest = nla_nest_start(skb, TCA_OPTIONS); if (nest == NULL) goto nla_put_failure; return nla_nest_end(skb, nest); nla_put_failure: nla_nest_cancel(skb, nest); return -1; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git3863.33%120.00%
patrick mchardypatrick mchardy1931.67%240.00%
arnaldo carvalho de meloarnaldo carvalho de melo23.33%120.00%
yang yingliangyang yingliang11.67%120.00%
Total60100.00%5100.00%

static const struct Qdisc_class_ops ingress_class_ops = { .leaf = ingress_leaf, .get = ingress_get, .put = ingress_put, .walk = ingress_walk, .tcf_chain = ingress_find_tcf, .tcf_cl_offload = ingress_cl_offload, .bind_tcf = ingress_bind_filter, .unbind_tcf = ingress_put, }; static struct Qdisc_ops ingress_qdisc_ops __read_mostly = { .cl_ops = &ingress_class_ops, .id = "ingress", .init = ingress_init, .destroy = ingress_destroy, .dump = ingress_dump, .owner = THIS_MODULE, };
static unsigned long clsact_get(struct Qdisc *sch, u32 classid) { switch (TC_H_MIN(classid)) { case TC_H_MIN(TC_H_MIN_INGRESS): case TC_H_MIN(TC_H_MIN_EGRESS): return TC_H_MIN(classid); default: return 0; } }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann46100.00%1100.00%
Total46100.00%1100.00%


static bool clsact_cl_offload(u32 classid) { return TC_H_MIN(classid) == TC_H_MIN(TC_H_MIN_INGRESS); }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann20100.00%1100.00%
Total20100.00%1100.00%


static unsigned long clsact_bind_filter(struct Qdisc *sch, unsigned long parent, u32 classid) { return clsact_get(sch, classid); }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann27100.00%1100.00%
Total27100.00%1100.00%


static struct tcf_proto __rcu **clsact_find_tcf(struct Qdisc *sch, unsigned long cl) { struct net_device *dev = qdisc_dev(sch); switch (cl) { case TC_H_MIN(TC_H_MIN_INGRESS): return &dev->ingress_cl_list; case TC_H_MIN(TC_H_MIN_EGRESS): return &dev->egress_cl_list; default: return NULL; } }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann63100.00%1100.00%
Total63100.00%1100.00%


static int clsact_init(struct Qdisc *sch, struct nlattr *opt) { net_inc_ingress_queue(); net_inc_egress_queue(); sch->flags |= TCQ_F_CPUSTATS; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann31100.00%1100.00%
Total31100.00%1100.00%


static void clsact_destroy(struct Qdisc *sch) { struct net_device *dev = qdisc_dev(sch); tcf_destroy_chain(&dev->ingress_cl_list); tcf_destroy_chain(&dev->egress_cl_list); net_dec_ingress_queue(); net_dec_egress_queue(); }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann43100.00%1100.00%
Total43100.00%1100.00%

static const struct Qdisc_class_ops clsact_class_ops = { .leaf = ingress_leaf, .get = clsact_get, .put = ingress_put, .walk = ingress_walk, .tcf_chain = clsact_find_tcf, .tcf_cl_offload = clsact_cl_offload, .bind_tcf = clsact_bind_filter, .unbind_tcf = ingress_put, }; static struct Qdisc_ops clsact_qdisc_ops __read_mostly = { .cl_ops = &clsact_class_ops, .id = "clsact", .init = clsact_init, .destroy = clsact_destroy, .dump = ingress_dump, .owner = THIS_MODULE, };
static int __init ingress_module_init(void) { int ret; ret = register_qdisc(&ingress_qdisc_ops); if (!ret) { ret = register_qdisc(&clsact_qdisc_ops); if (ret) unregister_qdisc(&ingress_qdisc_ops); } return ret; }

Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann3368.75%133.33%
pre-gitpre-git1225.00%133.33%
al viroal viro36.25%133.33%
Total48100.00%3100.00%


static void __exit ingress_module_exit(void) { unregister_qdisc(&ingress_qdisc_ops); unregister_qdisc(&clsact_qdisc_ops); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git1047.62%125.00%
daniel borkmanndaniel borkmann628.57%125.00%
al viroal viro314.29%125.00%
alexey kuznetsovalexey kuznetsov29.52%125.00%
Total21100.00%4100.00%

module_init(ingress_module_init); module_exit(ingress_module_exit); MODULE_ALIAS("sch_clsact"); MODULE_LICENSE("GPL");

Overall Contributors

PersonTokensPropCommitsCommitProp
daniel borkmanndaniel borkmann42354.16%416.67%
pre-gitpre-git25632.78%14.17%
dave jonesdave jones354.48%14.17%
patrick mchardypatrick mchardy243.07%520.83%
al viroal viro131.66%14.17%
alexei starovoitovalexei starovoitov60.77%14.17%
linus torvaldslinus torvalds50.64%14.17%
david s. millerdavid s. miller50.64%14.17%
arnaldo carvalho de meloarnaldo carvalho de melo50.64%28.33%
alexey kuznetsovalexey kuznetsov20.26%14.17%
eric dumazeteric dumazet20.26%14.17%
john fastabendjohn fastabend10.13%14.17%
joe perchesjoe perches10.13%14.17%
jamal hadi salimjamal hadi salim10.13%14.17%
yang yingliangyang yingliang10.13%14.17%
geert uytterhoevengeert uytterhoeven10.13%14.17%
Total781100.00%24100.00%
Directory: net/sched
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.