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

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

Version: ~ [ linux-5.15-rc5 ] ~ [ linux-5.14.11 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.72 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.152 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.210 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.250 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.286 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.288 ] ~ [ 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-5.13.18)


** Warning: Cannot open xref database.

  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 #ifndef __NET_ACT_API_H                           
  3 #define __NET_ACT_API_H                           
  4                                                   
  5 /*                                                
  6  * Public action API for classifiers/qdiscs       
  7 */                                                
  8                                                   
  9 #include <linux/refcount.h>                       
 10 #include <net/sch_generic.h>                      
 11 #include <net/pkt_sched.h>                        
 12 #include <net/net_namespace.h>                    
 13 #include <net/netns/generic.h>                    
 14                                                   
 15 struct tcf_idrinfo {                              
 16         struct mutex    lock;                     
 17         struct idr      action_idr;               
 18         struct net      *net;                     
 19 };                                                
 20                                                   
 21 struct tc_action_ops;                             
 22                                                   
 23 struct tc_action {                                
 24         const struct tc_action_ops      *ops;     
 25         __u32                           type;     
 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                                                   
 68 static inline void tcf_tm_dump(struct tcf_t *d    
 69 {                                                 
 70         dtm->install = jiffies_to_clock_t(jiff    
 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 }                                                 
 75                                                   
 76 #ifdef CONFIG_NET_CLS_ACT                         
 77                                                   
 78 #define ACT_P_CREATED 1                           
 79 #define ACT_P_DELETED 1                           
 80                                                   
 81 struct tc_action_ops {                            
 82         struct list_head head;                    
 83         char    kind[IFNAMSIZ];                   
 84         enum tca_id  id; /* identifier should     
 85         size_t  size;                             
 86         struct module           *owner;           
 87         int     (*act)(struct sk_buff *, const    
 88                        struct tcf_result *); /    
 89         int     (*dump)(struct sk_buff *, stru    
 90         void    (*cleanup)(struct tc_action *)    
 91         int     (*lookup)(struct net *net, str    
 92         int     (*init)(struct net *net, struc    
 93                         struct nlattr *est, st    
 94                         int bind, bool rtnl_he    
 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                                                   
165 int tcf_register_action(struct tc_action_ops *    
166 int tcf_unregister_action(struct tc_action_ops    
167                           struct pernet_operat    
168 int tcf_action_destroy(struct tc_action *actio    
169 int tcf_action_exec(struct sk_buff *skb, struc    
170                     int nr_actions, struct tcf    
171 int tcf_action_init(struct net *net, struct tc    
172                     struct nlattr *est, char *    
173                     struct tc_action *actions[    
174                     bool rtnl_held, struct net    
175 struct tc_action *tcf_action_init_1(struct net    
176                                     struct nla    
177                                     char *name    
178                                     bool rtnl_    
179                                     struct net    
180 int tcf_action_dump(struct sk_buff *skb, struc    
181                     int ref);                     
182 int tcf_action_dump_old(struct sk_buff *skb, s    
183 int tcf_action_dump_1(struct sk_buff *skb, str    
184 int tcf_action_copy_stats(struct sk_buff *, st    
185                                                   
186 int tcf_action_check_ctrlact(int action, struc    
187                              struct tcf_chain     
188                              struct netlink_ex    
189 struct tcf_chain *tcf_action_set_ctrlact(struc    
190                                          struc    
191 #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                                            
206                                                   

~ [ 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