~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/net/act_api.h

Version: ~ [ linux-5.15-rc1 ] ~ [ linux-5.14.5 ] ~ [ linux-5.13.18 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.66 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.147 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.206 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.246 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.282 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.283 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/net/act_api.h (Version linux-5.2.21) and /include/net/act_api.h (Version linux-2.6.32.71)


  1 /* SPDX-License-Identifier: GPL-2.0 */         << 
  2 #ifndef __NET_ACT_API_H                             1 #ifndef __NET_ACT_API_H
  3 #define __NET_ACT_API_H                             2 #define __NET_ACT_API_H
  4                                                     3 
  5 /*                                                  4 /*
  6  * Public action API for classifiers/qdiscs    !!   5  * Public police action API for classifiers/qdiscs
  7 */                                             !!   6  */
  8                                                     7 
  9 #include <linux/refcount.h>                    << 
 10 #include <net/sch_generic.h>                        8 #include <net/sch_generic.h>
 11 #include <net/pkt_sched.h>                          9 #include <net/pkt_sched.h>
 12 #include <net/net_namespace.h>                 << 
 13 #include <net/netns/generic.h>                 << 
 14                                                    10 
 15 struct tcf_idrinfo {                           !!  11 struct tcf_common {
 16         struct mutex    lock;                  !!  12         struct tcf_common               *tcfc_next;
 17         struct idr      action_idr;            !!  13         u32                             tcfc_index;
 18         struct net      *net;                  !!  14         int                             tcfc_refcnt;
                                                   >>  15         int                             tcfc_bindcnt;
                                                   >>  16         u32                             tcfc_capab;
                                                   >>  17         int                             tcfc_action;
                                                   >>  18         struct tcf_t                    tcfc_tm;
                                                   >>  19         struct gnet_stats_basic_packed  tcfc_bstats;
                                                   >>  20         struct gnet_stats_queue         tcfc_qstats;
                                                   >>  21         struct gnet_stats_rate_est      tcfc_rate_est;
                                                   >>  22         spinlock_t                      tcfc_lock;
 19 };                                                 23 };
                                                   >>  24 #define tcf_next        common.tcfc_next
                                                   >>  25 #define tcf_index       common.tcfc_index
                                                   >>  26 #define tcf_refcnt      common.tcfc_refcnt
                                                   >>  27 #define tcf_bindcnt     common.tcfc_bindcnt
                                                   >>  28 #define tcf_capab       common.tcfc_capab
                                                   >>  29 #define tcf_action      common.tcfc_action
                                                   >>  30 #define tcf_tm          common.tcfc_tm
                                                   >>  31 #define tcf_bstats      common.tcfc_bstats
                                                   >>  32 #define tcf_qstats      common.tcfc_qstats
                                                   >>  33 #define tcf_rate_est    common.tcfc_rate_est
                                                   >>  34 #define tcf_lock        common.tcfc_lock
                                                   >>  35 
                                                   >>  36 struct tcf_police {
                                                   >>  37         struct tcf_common       common;
                                                   >>  38         int                     tcfp_result;
                                                   >>  39         u32                     tcfp_ewma_rate;
                                                   >>  40         u32                     tcfp_burst;
                                                   >>  41         u32                     tcfp_mtu;
                                                   >>  42         u32                     tcfp_toks;
                                                   >>  43         u32                     tcfp_ptoks;
                                                   >>  44         psched_time_t           tcfp_t_c;
                                                   >>  45         struct qdisc_rate_table *tcfp_R_tab;
                                                   >>  46         struct qdisc_rate_table *tcfp_P_tab;
                                                   >>  47 };
                                                   >>  48 #define to_police(pc)   \
                                                   >>  49         container_of(pc, struct tcf_police, common)
 20                                                    50 
 21 struct tc_action_ops;                          !!  51 struct tcf_hashinfo {
 22                                                !!  52         struct tcf_common       **htab;
 23 struct tc_action {                             !!  53         unsigned int            hmask;
 24         const struct tc_action_ops      *ops;  !!  54         rwlock_t                *lock;
 25         __u32                           type;  !!  55 };
 26         __u32                           order; << 
 27         struct tcf_idrinfo              *idrin << 
 28                                                << 
 29         u32                             tcfa_i << 
 30         refcount_t                      tcfa_r << 
 31         atomic_t                        tcfa_b << 
 32         int                             tcfa_a << 
 33         struct tcf_t                    tcfa_t << 
 34         struct gnet_stats_basic_packed  tcfa_b << 
 35         struct gnet_stats_basic_packed  tcfa_b << 
 36         struct gnet_stats_queue         tcfa_q << 
 37         struct net_rate_estimator __rcu *tcfa_ << 
 38         spinlock_t                      tcfa_l << 
 39         struct gnet_stats_basic_cpu __percpu * << 
 40         struct gnet_stats_basic_cpu __percpu * << 
 41         struct gnet_stats_queue __percpu *cpu_ << 
 42         struct tc_cookie        __rcu *act_coo << 
 43         struct tcf_chain        __rcu *goto_ch << 
 44 };                                             << 
 45 #define tcf_index       common.tcfa_index      << 
 46 #define tcf_refcnt      common.tcfa_refcnt     << 
 47 #define tcf_bindcnt     common.tcfa_bindcnt    << 
 48 #define tcf_action      common.tcfa_action     << 
 49 #define tcf_tm          common.tcfa_tm         << 
 50 #define tcf_bstats      common.tcfa_bstats     << 
 51 #define tcf_qstats      common.tcfa_qstats     << 
 52 #define tcf_rate_est    common.tcfa_rate_est   << 
 53 #define tcf_lock        common.tcfa_lock       << 
 54                                                << 
 55 /* Update lastuse only if needed, to avoid dir << 
 56  * We use a temp variable to avoid fetching ji << 
 57  */                                            << 
 58 static inline void tcf_lastuse_update(struct t << 
 59 {                                              << 
 60         unsigned long now = jiffies;           << 
 61                                                << 
 62         if (tm->lastuse != now)                << 
 63                 tm->lastuse = now;             << 
 64         if (unlikely(!tm->firstuse))           << 
 65                 tm->firstuse = now;            << 
 66 }                                              << 
 67                                                    56 
 68 static inline void tcf_tm_dump(struct tcf_t *d !!  57 static inline unsigned int tcf_hash(u32 index, unsigned int hmask)
 69 {                                                  58 {
 70         dtm->install = jiffies_to_clock_t(jiff !!  59         return index & hmask;
 71         dtm->lastuse = jiffies_to_clock_t(jiff << 
 72         dtm->firstuse = jiffies_to_clock_t(jif << 
 73         dtm->expires = jiffies_to_clock_t(stm- << 
 74 }                                                  60 }
 75                                                    61 
 76 #ifdef CONFIG_NET_CLS_ACT                          62 #ifdef CONFIG_NET_CLS_ACT
 77                                                    63 
 78 #define ACT_P_CREATED 1                            64 #define ACT_P_CREATED 1
 79 #define ACT_P_DELETED 1                            65 #define ACT_P_DELETED 1
 80                                                    66 
                                                   >>  67 struct tcf_act_hdr {
                                                   >>  68         struct tcf_common       common;
                                                   >>  69 };
                                                   >>  70 
                                                   >>  71 struct tc_action {
                                                   >>  72         void                    *priv;
                                                   >>  73         struct tc_action_ops    *ops;
                                                   >>  74         __u32                   type; /* for backward compat(TCA_OLD_COMPAT) */
                                                   >>  75         __u32                   order;
                                                   >>  76         struct tc_action        *next;
                                                   >>  77 };
                                                   >>  78 
                                                   >>  79 #define TCA_CAP_NONE 0
 81 struct tc_action_ops {                             80 struct tc_action_ops {
 82         struct list_head head;                 !!  81         struct tc_action_ops *next;
                                                   >>  82         struct tcf_hashinfo *hinfo;
 83         char    kind[IFNAMSIZ];                    83         char    kind[IFNAMSIZ];
 84         enum tca_id  id; /* identifier should  !!  84         __u32   type; /* TBD to match kind */
 85         size_t  size;                          !!  85         __u32   capab;  /* capabilities includes 4 bit version */
 86         struct module           *owner;            86         struct module           *owner;
 87         int     (*act)(struct sk_buff *, const !!  87         int     (*act)(struct sk_buff *, struct tc_action *, struct tcf_result *);
 88                        struct tcf_result *); / !!  88         int     (*get_stats)(struct sk_buff *, struct tc_action *);
 89         int     (*dump)(struct sk_buff *, stru     89         int     (*dump)(struct sk_buff *, struct tc_action *, int, int);
 90         void    (*cleanup)(struct tc_action *) !!  90         int     (*cleanup)(struct tc_action *, int bind);
 91         int     (*lookup)(struct net *net, str !!  91         int     (*lookup)(struct tc_action *, u32);
 92         int     (*init)(struct net *net, struc !!  92         int     (*init)(struct nlattr *, struct nlattr *, struct tc_action *, int , int);
 93                         struct nlattr *est, st !!  93         int     (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *);
 94                         int bind, bool rtnl_he !!  94 };
 95                         struct netlink_ext_ack << 
 96         int     (*walk)(struct net *, struct s << 
 97                         struct netlink_callbac << 
 98                         const struct tc_action << 
 99                         struct netlink_ext_ack << 
100         void    (*stats_update)(struct tc_acti << 
101         size_t  (*get_fill_size)(const struct  << 
102         struct net_device *(*get_dev)(const st << 
103         void    (*put_dev)(struct net_device * << 
104 };                                             << 
105                                                << 
106 struct tc_action_net {                         << 
107         struct tcf_idrinfo *idrinfo;           << 
108         const struct tc_action_ops *ops;       << 
109 };                                             << 
110                                                << 
111 static inline                                  << 
112 int tc_action_net_init(struct net *net, struct << 
113                        const struct tc_action_ << 
114 {                                              << 
115         int err = 0;                           << 
116                                                << 
117         tn->idrinfo = kmalloc(sizeof(*tn->idri << 
118         if (!tn->idrinfo)                      << 
119                 return -ENOMEM;                << 
120         tn->ops = ops;                         << 
121         tn->idrinfo->net = net;                << 
122         mutex_init(&tn->idrinfo->lock);        << 
123         idr_init(&tn->idrinfo->action_idr);    << 
124         return err;                            << 
125 }                                              << 
126                                                << 
127 void tcf_idrinfo_destroy(const struct tc_actio << 
128                          struct tcf_idrinfo *i << 
129                                                << 
130 static inline void tc_action_net_exit(struct l << 
131                                       unsigned << 
132 {                                              << 
133         struct net *net;                       << 
134                                                << 
135         rtnl_lock();                           << 
136         list_for_each_entry(net, net_list, exi << 
137                 struct tc_action_net *tn = net << 
138                                                << 
139                 tcf_idrinfo_destroy(tn->ops, t << 
140                 kfree(tn->idrinfo);            << 
141         }                                      << 
142         rtnl_unlock();                         << 
143 }                                              << 
144                                                << 
145 int tcf_generic_walker(struct tc_action_net *t << 
146                        struct netlink_callback << 
147                        const struct tc_action_ << 
148                        struct netlink_ext_ack  << 
149 int tcf_idr_search(struct tc_action_net *tn, s << 
150 int tcf_idr_create(struct tc_action_net *tn, u << 
151                    struct tc_action **a, const << 
152                    int bind, bool cpustats);   << 
153 void tcf_idr_insert(struct tc_action_net *tn,  << 
154                                                << 
155 void tcf_idr_cleanup(struct tc_action_net *tn, << 
156 int tcf_idr_check_alloc(struct tc_action_net * << 
157                         struct tc_action **a,  << 
158 int __tcf_idr_release(struct tc_action *a, boo << 
159                                                << 
160 static inline int tcf_idr_release(struct tc_ac << 
161 {                                              << 
162         return __tcf_idr_release(a, bind, fals << 
163 }                                              << 
164                                                    95 
165 int tcf_register_action(struct tc_action_ops * !!  96 extern struct tcf_common *tcf_hash_lookup(u32 index,
166 int tcf_unregister_action(struct tc_action_ops !!  97                                           struct tcf_hashinfo *hinfo);
167                           struct pernet_operat !!  98 extern void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo);
168 int tcf_action_destroy(struct tc_action *actio !!  99 extern int tcf_hash_release(struct tcf_common *p, int bind,
169 int tcf_action_exec(struct sk_buff *skb, struc !! 100                             struct tcf_hashinfo *hinfo);
170                     int nr_actions, struct tcf !! 101 extern int tcf_generic_walker(struct sk_buff *skb, struct netlink_callback *cb,
171 int tcf_action_init(struct net *net, struct tc !! 102                               int type, struct tc_action *a);
172                     struct nlattr *est, char * !! 103 extern u32 tcf_hash_new_index(u32 *idx_gen, struct tcf_hashinfo *hinfo);
173                     struct tc_action *actions[ !! 104 extern int tcf_hash_search(struct tc_action *a, u32 index);
174                     bool rtnl_held, struct net !! 105 extern struct tcf_common *tcf_hash_check(u32 index, struct tc_action *a,
175 struct tc_action *tcf_action_init_1(struct net !! 106                                          int bind, struct tcf_hashinfo *hinfo);
176                                     struct nla !! 107 extern struct tcf_common *tcf_hash_create(u32 index, struct nlattr *est,
177                                     char *name !! 108                                           struct tc_action *a, int size,
178                                     bool rtnl_ !! 109                                           int bind, u32 *idx_gen,
179                                     struct net !! 110                                           struct tcf_hashinfo *hinfo);
180 int tcf_action_dump(struct sk_buff *skb, struc !! 111 extern void tcf_hash_insert(struct tcf_common *p, struct tcf_hashinfo *hinfo);
181                     int ref);                  !! 112 
182 int tcf_action_dump_old(struct sk_buff *skb, s !! 113 extern int tcf_register_action(struct tc_action_ops *a);
183 int tcf_action_dump_1(struct sk_buff *skb, str !! 114 extern int tcf_unregister_action(struct tc_action_ops *a);
184 int tcf_action_copy_stats(struct sk_buff *, st !! 115 extern void tcf_action_destroy(struct tc_action *a, int bind);
185                                                !! 116 extern int tcf_action_exec(struct sk_buff *skb, struct tc_action *a, struct tcf_result *res);
186 int tcf_action_check_ctrlact(int action, struc !! 117 extern struct tc_action *tcf_action_init(struct nlattr *nla, struct nlattr *est, char *n, int ovr, int bind);
187                              struct tcf_chain  !! 118 extern struct tc_action *tcf_action_init_1(struct nlattr *nla, struct nlattr *est, char *n, int ovr, int bind);
188                              struct netlink_ex !! 119 extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int);
189 struct tcf_chain *tcf_action_set_ctrlact(struc !! 120 extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int);
190                                          struc !! 121 extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int);
                                                   >> 122 extern int tcf_action_copy_stats (struct sk_buff *,struct tc_action *, int);
191 #endif /* CONFIG_NET_CLS_ACT */                   123 #endif /* CONFIG_NET_CLS_ACT */
192                                                << 
193 static inline void tcf_action_stats_update(str << 
194                                            u64 << 
195 {                                              << 
196 #ifdef CONFIG_NET_CLS_ACT                      << 
197         if (!a->ops->stats_update)             << 
198                 return;                        << 
199                                                << 
200         a->ops->stats_update(a, bytes, packets << 
201 #endif                                         << 
202 }                                              << 
203                                                << 
204                                                << 
205 #endif                                            124 #endif
206                                                   125 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp