Lines Matching refs:skb

70 static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow)  in flow_get_src()  argument
77 return addr_fold(skb->sk); in flow_get_src()
80 static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_dst() argument
87 return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb); in flow_get_dst()
90 static u32 flow_get_proto(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto() argument
95 static u32 flow_get_proto_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto_src() argument
100 return addr_fold(skb->sk); in flow_get_proto_src()
103 static u32 flow_get_proto_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto_dst() argument
108 return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb); in flow_get_proto_dst()
111 static u32 flow_get_iif(const struct sk_buff *skb) in flow_get_iif() argument
113 return skb->skb_iif; in flow_get_iif()
116 static u32 flow_get_priority(const struct sk_buff *skb) in flow_get_priority() argument
118 return skb->priority; in flow_get_priority()
121 static u32 flow_get_mark(const struct sk_buff *skb) in flow_get_mark() argument
123 return skb->mark; in flow_get_mark()
126 static u32 flow_get_nfct(const struct sk_buff *skb) in flow_get_nfct() argument
129 return addr_fold(skb->nfct); in flow_get_nfct()
136 #define CTTUPLE(skb, member) \ argument
139 const struct nf_conn *ct = nf_ct_get(skb, &ctinfo); \
145 #define CTTUPLE(skb, member) \ argument
152 static u32 flow_get_nfct_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_src() argument
154 switch (tc_skb_protocol(skb)) { in flow_get_nfct_src()
156 return ntohl(CTTUPLE(skb, src.u3.ip)); in flow_get_nfct_src()
158 return ntohl(CTTUPLE(skb, src.u3.ip6[3])); in flow_get_nfct_src()
161 return flow_get_src(skb, flow); in flow_get_nfct_src()
164 static u32 flow_get_nfct_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_dst() argument
166 switch (tc_skb_protocol(skb)) { in flow_get_nfct_dst()
168 return ntohl(CTTUPLE(skb, dst.u3.ip)); in flow_get_nfct_dst()
170 return ntohl(CTTUPLE(skb, dst.u3.ip6[3])); in flow_get_nfct_dst()
173 return flow_get_dst(skb, flow); in flow_get_nfct_dst()
176 static u32 flow_get_nfct_proto_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_proto_src() argument
178 return ntohs(CTTUPLE(skb, src.u.all)); in flow_get_nfct_proto_src()
180 return flow_get_proto_src(skb, flow); in flow_get_nfct_proto_src()
183 static u32 flow_get_nfct_proto_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_proto_dst() argument
185 return ntohs(CTTUPLE(skb, dst.u.all)); in flow_get_nfct_proto_dst()
187 return flow_get_proto_dst(skb, flow); in flow_get_nfct_proto_dst()
190 static u32 flow_get_rtclassid(const struct sk_buff *skb) in flow_get_rtclassid() argument
193 if (skb_dst(skb)) in flow_get_rtclassid()
194 return skb_dst(skb)->tclassid; in flow_get_rtclassid()
199 static u32 flow_get_skuid(const struct sk_buff *skb) in flow_get_skuid() argument
201 struct sock *sk = skb_to_full_sk(skb); in flow_get_skuid()
211 static u32 flow_get_skgid(const struct sk_buff *skb) in flow_get_skgid() argument
213 struct sock *sk = skb_to_full_sk(skb); in flow_get_skgid()
223 static u32 flow_get_vlan_tag(const struct sk_buff *skb) in flow_get_vlan_tag() argument
227 if (vlan_get_tag(skb, &tag) < 0) in flow_get_vlan_tag()
232 static u32 flow_get_rxhash(struct sk_buff *skb) in flow_get_rxhash() argument
234 return skb_get_hash(skb); in flow_get_rxhash()
237 static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow) in flow_key_get() argument
241 return flow_get_src(skb, flow); in flow_key_get()
243 return flow_get_dst(skb, flow); in flow_key_get()
245 return flow_get_proto(skb, flow); in flow_key_get()
247 return flow_get_proto_src(skb, flow); in flow_key_get()
249 return flow_get_proto_dst(skb, flow); in flow_key_get()
251 return flow_get_iif(skb); in flow_key_get()
253 return flow_get_priority(skb); in flow_key_get()
255 return flow_get_mark(skb); in flow_key_get()
257 return flow_get_nfct(skb); in flow_key_get()
259 return flow_get_nfct_src(skb, flow); in flow_key_get()
261 return flow_get_nfct_dst(skb, flow); in flow_key_get()
263 return flow_get_nfct_proto_src(skb, flow); in flow_key_get()
265 return flow_get_nfct_proto_dst(skb, flow); in flow_key_get()
267 return flow_get_rtclassid(skb); in flow_key_get()
269 return flow_get_skuid(skb); in flow_key_get()
271 return flow_get_skgid(skb); in flow_key_get()
273 return flow_get_vlan_tag(skb); in flow_key_get()
275 return flow_get_rxhash(skb); in flow_key_get()
292 static int flow_classify(struct sk_buff *skb, const struct tcf_proto *tp, in flow_classify() argument
306 if (!tcf_em_tree_match(skb, &f->ematches, NULL)) in flow_classify()
311 skb_flow_dissect_flow_keys(skb, &flow_keys, 0); in flow_classify()
316 keys[n] = flow_key_get(skb, key, &flow_keys); in flow_classify()
333 r = tcf_exts_exec(skb, &f->exts, res); in flow_classify()
603 struct sk_buff *skb, struct tcmsg *t) in flow_dump() argument
609 return skb->len; in flow_dump()
613 nest = nla_nest_start(skb, TCA_OPTIONS); in flow_dump()
617 if (nla_put_u32(skb, TCA_FLOW_KEYS, f->keymask) || in flow_dump()
618 nla_put_u32(skb, TCA_FLOW_MODE, f->mode)) in flow_dump()
622 if (nla_put_u32(skb, TCA_FLOW_MASK, f->mask) || in flow_dump()
623 nla_put_u32(skb, TCA_FLOW_XOR, f->xor)) in flow_dump()
627 nla_put_u32(skb, TCA_FLOW_RSHIFT, f->rshift)) in flow_dump()
630 nla_put_u32(skb, TCA_FLOW_ADDEND, f->addend)) in flow_dump()
634 nla_put_u32(skb, TCA_FLOW_DIVISOR, f->divisor)) in flow_dump()
637 nla_put_u32(skb, TCA_FLOW_BASECLASS, f->baseclass)) in flow_dump()
641 nla_put_u32(skb, TCA_FLOW_PERTURB, f->perturb_period / HZ)) in flow_dump()
644 if (tcf_exts_dump(skb, &f->exts) < 0) in flow_dump()
648 tcf_em_tree_dump(skb, &f->ematches, TCA_FLOW_EMATCHES) < 0) in flow_dump()
651 nla_nest_end(skb, nest); in flow_dump()
653 if (tcf_exts_dump_stats(skb, &f->exts) < 0) in flow_dump()
656 return skb->len; in flow_dump()
659 nla_nest_cancel(skb, nest); in flow_dump()