tcf_proto
struct tcf_proto *tp,
int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla,
struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp,
int tcf_action_check_ctrlact(int action, struct tcf_proto *tp,
struct tcf_proto __rcu **p_filter_chain, struct Qdisc *q,
const struct tcf_proto *tp,
tcf_bind_filter(struct tcf_proto *tp, struct tcf_result *r, unsigned long base)
tcf_unbind_filter(struct tcf_proto *tp, struct tcf_result *r)
int (*fn)(struct tcf_proto *, void *node, struct tcf_walker *);
int tcf_exts_validate(struct net *net, struct tcf_proto *tp,
int tcf_exts_validate_ex(struct net *net, struct tcf_proto *tp, struct nlattr **tb,
struct tcf_proto __rcu *filter_chain;
int tcf_em_tree_validate(struct tcf_proto *, struct nlattr *,
struct tcf_proto *tcf_get_next_proto(struct tcf_chain *chain,
struct tcf_proto *tp);
struct tcf_proto __rcu **p_filter_chain, struct Qdisc *q,
int tc_setup_cb_add(struct tcf_block *block, struct tcf_proto *tp,
int tc_setup_cb_replace(struct tcf_block *block, struct tcf_proto *tp,
int tc_setup_cb_destroy(struct tcf_block *block, struct tcf_proto *tp,
int tc_setup_cb_reoffload(struct tcf_block *block, struct tcf_proto *tp,
int police, struct tcf_proto *tp, u32 handle, bool used_action_miss);
const struct tcf_proto *tp, u32 flags,
static inline void tcf_proto_update_usesw(struct tcf_proto *tp, u32 flags)
const struct tcf_proto *tp, struct tcf_result *res,
static inline bool tc_cls_stats_dump(struct tcf_proto *tp,
struct tcf_proto *filter_list;
struct tcf_proto *tp_head);
const struct tcf_proto *goto_tp;
const struct tcf_proto *,
int (*init)(struct tcf_proto*);
void (*destroy)(struct tcf_proto *tp, bool rtnl_held,
void* (*get)(struct tcf_proto*, u32 handle);
void (*put)(struct tcf_proto *tp, void *f);
struct tcf_proto*, unsigned long,
int (*delete)(struct tcf_proto *tp, void *arg,
bool (*delete_empty)(struct tcf_proto *tp);
void (*walk)(struct tcf_proto *tp,
int (*reoffload)(struct tcf_proto *tp, bool add,
void (*hw_add)(struct tcf_proto *tp,
void (*hw_del)(struct tcf_proto *tp,
struct tcf_exts * (*get_exts)(const struct tcf_proto *tp,
int (*dump)(struct net*, struct tcf_proto*, void *,
struct tcf_proto *tp, void *fh,
struct tcf_proto __rcu *next;
const struct tcf_proto *,
typedef void tcf_chain_head_change_t(struct tcf_proto *tp_head, void *priv);
struct tcf_proto __rcu *filter_chain;
static inline bool lockdep_tcf_proto_is_locked(struct tcf_proto *tp)
const struct tcf_proto *tp, \
static inline int tc_classify(struct sk_buff *skb, const struct tcf_proto *tp,
static inline int tc_classify(struct sk_buff *skb, const struct tcf_proto *tp,
struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp,
int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla,
int tcf_action_check_ctrlact(int action, struct tcf_proto *tp,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp,
struct tcf_proto *tp, u32 flags,
struct tc_action **a, struct tcf_proto *tp,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp,
struct tc_defact *p, struct tcf_proto *tp,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 act_flags,
struct tcf_proto *tp, u32 flags,
struct tcf_proto *tp, u32 act_flags,
struct tcf_proto *tp, u32 flags,
static struct tcf_proto *
__tcf_get_next_proto(struct tcf_chain *chain, struct tcf_proto *tp)
struct tcf_proto *
tcf_get_next_proto(struct tcf_chain *chain, struct tcf_proto *tp)
struct tcf_proto *tp_next = __tcf_get_next_proto(chain, tp);
tcf_exts_miss_cookie_base_alloc(struct tcf_exts *exts, struct tcf_proto *tp,
static void tcf_chain_head_change_dflt(struct tcf_proto *tp_head, void *priv)
struct tcf_proto __rcu **p_filter_chain = priv;
struct tcf_proto __rcu **p_filter_chain, struct Qdisc *q,
struct tcf_proto *tp, *tp_prev;
const struct tcf_proto *tp,
const struct tcf_proto *orig_tp,
static u32 destroy_obj_hashfn(const struct tcf_proto *tp)
const struct tcf_proto *first_tp;
struct tcf_proto *tp)
const struct tcf_proto *tp,
const struct tcf_proto *orig_tp = tp;
struct tcf_proto __rcu **pprev;
struct tcf_proto __rcu *next;
static bool tcf_proto_cmp(const struct tcf_proto *tp1,
static struct tcf_proto *tcf_chain_tp_prev(struct tcf_chain *chain,
const struct tcf_proto *tp2)
struct tcf_proto *tp)
struct tcf_proto *tp)
struct tcf_proto *next = tcf_chain_dereference(chain_info->next, chain);
static struct tcf_proto *tcf_chain_tp_find(struct tcf_chain *chain,
static struct tcf_proto *tcf_chain_tp_insert_unique(struct tcf_chain *chain,
struct tcf_proto *tp_new,
struct tcf_proto *tp;
struct tcf_proto *tp, bool rtnl_held,
struct tcf_proto *tp_iter;
struct tcf_proto **pprev;
struct tcf_proto *next;
struct tcf_proto *tp)
struct tcf_proto *iter;
static struct tcf_proto *tcf_chain_tp_find(struct tcf_chain *chain,
struct tcf_proto **pprev;
struct tcf_proto *tp;
struct tcf_proto *tp, struct tcf_block *block,
struct tcf_proto *tp,
struct nlmsghdr *n, struct tcf_proto *tp,
struct nlmsghdr *n, struct tcf_proto *tp,
tcf_proto_signal_destroyed(struct tcf_chain *chain, struct tcf_proto *tp)
struct tcf_proto *tp;
static void tfilter_put(struct tcf_proto *tp, void *fh)
struct tcf_proto *tp;
struct tcf_proto *tp_new = NULL;
struct tcf_proto *tp = NULL;
struct tcf_proto *tp = NULL;
static int tcf_node_dump(struct tcf_proto *tp, void *n, struct tcf_walker *arg)
struct tcf_proto *tp, *tp_prev;
int police, struct tcf_proto *tp, u32 handle,
static inline u32 tcf_auto_prio(struct tcf_proto *tp)
int tcf_exts_validate_ex(struct net *net, struct tcf_proto *tp, struct nlattr **tb,
int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb,
struct tcf_proto *tp, u32 *cnt,
tc_cls_offload_cnt_reset(struct tcf_block *block, struct tcf_proto *tp,
int tc_setup_cb_add(struct tcf_block *block, struct tcf_proto *tp,
int tc_setup_cb_replace(struct tcf_block *block, struct tcf_proto *tp,
static struct tcf_proto *tcf_proto_create(const char *kind, u32 protocol,
int tc_setup_cb_destroy(struct tcf_block *block, struct tcf_proto *tp,
struct tcf_proto *tp;
int tc_setup_cb_reoffload(struct tcf_block *block, struct tcf_proto *tp,
struct tcf_proto *fl;
static void tcf_proto_get(struct tcf_proto *tp)
static void tcf_proto_count_usesw(struct tcf_proto *tp, bool add)
static void tcf_proto_destroy(struct tcf_proto *tp, bool rtnl_held,
static void tcf_proto_put(struct tcf_proto *tp, bool rtnl_held,
static bool tcf_proto_check_delete(struct tcf_proto *tp)
static void tcf_proto_mark_delete(struct tcf_proto *tp)
static bool tcf_proto_is_deleting(struct tcf_proto *tp)
struct tcf_proto *tp_head)
struct tcf_proto *tp_head)
const struct tcf_proto *tp;
struct tcf_proto *tp, *tp_next;
tcf_exts_miss_cookie_base_alloc(struct tcf_exts *exts, struct tcf_proto *tp,
struct tcf_proto *tp_head;
static void basic_destroy(struct tcf_proto *tp, bool rtnl_held,
static int basic_delete(struct tcf_proto *tp, void *arg, bool *last,
static int basic_set_parms(struct net *net, struct tcf_proto *tp,
struct tcf_proto *tp, unsigned long base, u32 handle,
static void basic_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int basic_dump(struct net *net, struct tcf_proto *tp, void *fh,
struct tcf_proto *tp;
const struct tcf_proto *tp,
static void *basic_get(struct tcf_proto *tp, u32 handle)
static int basic_init(struct tcf_proto *tp)
static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog,
static int cls_bpf_offload(struct tcf_proto *tp, struct cls_bpf_prog *prog,
static void cls_bpf_stop_offload(struct tcf_proto *tp,
static void cls_bpf_offload_update_stats(struct tcf_proto *tp,
static int cls_bpf_init(struct tcf_proto *tp)
static void __cls_bpf_delete(struct tcf_proto *tp, struct cls_bpf_prog *prog,
static int cls_bpf_delete(struct tcf_proto *tp, void *arg, bool *last,
static void cls_bpf_destroy(struct tcf_proto *tp, bool rtnl_held,
static void *cls_bpf_get(struct tcf_proto *tp, u32 handle)
u32 gen_flags, const struct tcf_proto *tp)
struct tcf_proto *tp, unsigned long base,
struct tcf_proto *tp;
static int cls_bpf_dump(struct net *net, struct tcf_proto *tp, void *fh,
static void cls_bpf_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int cls_bpf_reoffload(struct tcf_proto *tp, bool add, flow_setup_cb_t *cb,
const struct tcf_proto *tp,
static void cls_cgroup_destroy(struct tcf_proto *tp, bool rtnl_held,
static int cls_cgroup_delete(struct tcf_proto *tp, void *arg, bool *last,
static void cls_cgroup_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int cls_cgroup_dump(struct net *net, struct tcf_proto *tp, void *fh,
struct tcf_proto *tp;
const struct tcf_proto *tp,
static void *cls_cgroup_get(struct tcf_proto *tp, u32 handle)
static int cls_cgroup_init(struct tcf_proto *tp)
struct tcf_proto *tp, unsigned long base,
const struct tcf_proto *tp,
struct tcf_proto *tp, unsigned long base,
struct tcf_proto *tp;
static int flow_delete(struct tcf_proto *tp, void *arg, bool *last,
static int flow_init(struct tcf_proto *tp)
static void flow_destroy(struct tcf_proto *tp, bool rtnl_held,
static void *flow_get(struct tcf_proto *tp, u32 handle)
static int flow_dump(struct net *net, struct tcf_proto *tp, void *fh,
static void flow_walk(struct tcf_proto *tp, struct tcf_walker *arg,
struct tcf_proto *tp, unsigned long base,
static int fl_delete(struct tcf_proto *tp, void *arg, bool *last,
static void fl_walk(struct tcf_proto *tp, struct tcf_walker *arg,
fl_get_next_hw_filter(struct tcf_proto *tp, struct cls_fl_filter *f, bool add)
static int fl_reoffload(struct tcf_proto *tp, bool add, flow_setup_cb_t *cb,
static void fl_hw_add(struct tcf_proto *tp, void *type_data)
static void fl_hw_del(struct tcf_proto *tp, void *type_data)
const struct tcf_proto *tp,
static int fl_init(struct tcf_proto *tp)
static int fl_dump(struct net *net, struct tcf_proto *tp, void *fh,
static int fl_terse_dump(struct net *net, struct tcf_proto *tp, void *fh,
static bool fl_delete_empty(struct tcf_proto *tp)
static struct cls_fl_head *fl_head_dereference(struct tcf_proto *tp)
static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f,
static int fl_hw_replace_filter(struct tcf_proto *tp,
static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f,
static struct tcf_exts *fl_get_exts(const struct tcf_proto *tp, u32 handle)
static int __fl_delete(struct tcf_proto *tp, struct cls_fl_filter *f,
static void fl_destroy(struct tcf_proto *tp, bool rtnl_held,
static void fl_put(struct tcf_proto *tp, void *arg)
static void *fl_get(struct tcf_proto *tp, u32 handle)
static int fw_init(struct tcf_proto *tp)
static void fw_destroy(struct tcf_proto *tp, bool rtnl_held,
static int fw_delete(struct tcf_proto *tp, void *arg, bool *last,
static int fw_set_parms(struct net *net, struct tcf_proto *tp,
struct tcf_proto *tp, unsigned long base,
static void fw_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int fw_dump(struct net *net, struct tcf_proto *tp, void *fh,
struct tcf_proto *tp;
const struct tcf_proto *tp,
static void *fw_get(struct tcf_proto *tp, u32 handle)
static void mall_destroy(struct tcf_proto *tp, bool rtnl_held,
static void *mall_get(struct tcf_proto *tp, u32 handle)
struct tcf_proto *tp, unsigned long base,
static int mall_delete(struct tcf_proto *tp, void *arg, bool *last,
static void mall_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int mall_reoffload(struct tcf_proto *tp, bool add, flow_setup_cb_t *cb,
const struct tcf_proto *tp,
static void mall_stats_hw_filter(struct tcf_proto *tp,
static int mall_dump(struct net *net, struct tcf_proto *tp, void *fh,
static int mall_init(struct tcf_proto *tp)
static void mall_destroy_hw_filter(struct tcf_proto *tp,
static int mall_replace_hw_filter(struct tcf_proto *tp,
const struct tcf_proto *tp,
static void *route4_get(struct tcf_proto *tp, u32 handle)
static int route4_init(struct tcf_proto *tp)
static void route4_destroy(struct tcf_proto *tp, bool rtnl_held,
static int route4_delete(struct tcf_proto *tp, void *arg, bool *last,
static int route4_set_parms(struct net *net, struct tcf_proto *tp,
struct tcf_proto *tp, unsigned long base, u32 handle,
struct tcf_proto *tp;
static void route4_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int route4_dump(struct net *net, struct tcf_proto *tp, void *fh,
const struct tcf_proto *tp,
static void u32_walk(struct tcf_proto *tp, struct tcf_walker *arg,
static int u32_reoffload_hnode(struct tcf_proto *tp, struct tc_u_hnode *ht,
static int u32_reoffload_knode(struct tcf_proto *tp, struct tc_u_knode *n,
static int u32_reoffload(struct tcf_proto *tp, bool add, flow_setup_cb_t *cb,
static int u32_dump(struct net *net, struct tcf_proto *tp, void *fh,
static void *u32_get(struct tcf_proto *tp, u32 handle)
static void *tc_u_common_ptr(const struct tcf_proto *tp)
static int u32_init(struct tcf_proto *tp)
static int u32_delete_key(struct tcf_proto *tp, struct tc_u_knode *key)
static void u32_clear_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h,
static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h,
static void u32_remove_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n,
static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n,
static void u32_clear_hnode(struct tcf_proto *tp, struct tc_u_hnode *ht,
static int u32_destroy_hnode(struct tcf_proto *tp, struct tc_u_hnode *ht,
static void u32_destroy(struct tcf_proto *tp, bool rtnl_held,
static int u32_delete(struct tcf_proto *tp, void *arg, bool *last,
static void u32_unbind_filter(struct tcf_proto *tp, struct tc_u_knode *n,
static void u32_bind_filter(struct tcf_proto *tp, struct tc_u_knode *n,
static int u32_set_parms(struct net *net, struct tcf_proto *tp,
static void u32_replace_knode(struct tcf_proto *tp, struct tc_u_common *tp_c,
static struct tc_u_knode *u32_init_knode(struct net *net, struct tcf_proto *tp,
struct tcf_proto *tp, unsigned long base, u32 handle,
static int tcf_em_validate(struct tcf_proto *tp,
int tcf_em_tree_validate(struct tcf_proto *tp, struct nlattr *nla,
static int tcf_node_bind(struct tcf_proto *tp, void *n, struct tcf_walker *arg)
struct tcf_proto *tp;
struct tcf_proto *filter;
struct tcf_proto __rcu *filter_list; /* optional external classifier */
struct tcf_proto *fl;
struct tcf_proto __rcu *filter_list;
struct tcf_proto *fl;
struct tcf_proto __rcu *tcf_filters;
struct tcf_proto *fl;
struct tcf_proto __rcu *filter_list;
struct tcf_proto __rcu *filter_list; /* optional external classifier */
struct tcf_proto *filter;
struct tcf_proto __rcu *filter_list; /* optional external classifier */
struct tcf_proto *filter;
struct tcf_proto *tp_head)
struct tcf_proto *tcf;
struct tcf_proto __rcu *filter_list; /* filter list */
struct tcf_proto __rcu *filter_list; /* class attached filters */
struct tcf_proto __rcu *filter_list;
struct tcf_proto *tcf;
static void clsact_chain_head_change(struct tcf_proto *tp_head, void *priv)
struct tcf_proto __rcu *filter_list;
struct tcf_proto *fl = rcu_dereference_bh(q->filter_list);
struct tcf_proto __rcu *filter_list;
struct tcf_proto *fl;
struct tcf_proto __rcu *filter_list;
struct tcf_proto *fl;
static bool sfb_classify(struct sk_buff *skb, struct tcf_proto *fl,
struct tcf_proto *fl;
struct tcf_proto __rcu *filter_list;
struct tcf_proto __rcu *filter_list;
struct tcf_proto *fl;