Lines Matching refs:skb

69 static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow)  in flow_get_src()  argument
73 return addr_fold(skb->sk); in flow_get_src()
76 static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_dst() argument
80 return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb); in flow_get_dst()
83 static u32 flow_get_proto(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto() argument
88 static u32 flow_get_proto_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto_src() argument
93 return addr_fold(skb->sk); in flow_get_proto_src()
96 static u32 flow_get_proto_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_proto_dst() argument
101 return addr_fold(skb_dst(skb)) ^ (__force u16) tc_skb_protocol(skb); in flow_get_proto_dst()
104 static u32 flow_get_iif(const struct sk_buff *skb) in flow_get_iif() argument
106 return skb->skb_iif; in flow_get_iif()
109 static u32 flow_get_priority(const struct sk_buff *skb) in flow_get_priority() argument
111 return skb->priority; in flow_get_priority()
114 static u32 flow_get_mark(const struct sk_buff *skb) in flow_get_mark() argument
116 return skb->mark; in flow_get_mark()
119 static u32 flow_get_nfct(const struct sk_buff *skb) in flow_get_nfct() argument
122 return addr_fold(skb->nfct); in flow_get_nfct()
129 #define CTTUPLE(skb, member) \ argument
132 const struct nf_conn *ct = nf_ct_get(skb, &ctinfo); \
138 #define CTTUPLE(skb, member) \ argument
145 static u32 flow_get_nfct_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_src() argument
147 switch (tc_skb_protocol(skb)) { in flow_get_nfct_src()
149 return ntohl(CTTUPLE(skb, src.u3.ip)); in flow_get_nfct_src()
151 return ntohl(CTTUPLE(skb, src.u3.ip6[3])); in flow_get_nfct_src()
154 return flow_get_src(skb, flow); in flow_get_nfct_src()
157 static u32 flow_get_nfct_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_dst() argument
159 switch (tc_skb_protocol(skb)) { in flow_get_nfct_dst()
161 return ntohl(CTTUPLE(skb, dst.u3.ip)); in flow_get_nfct_dst()
163 return ntohl(CTTUPLE(skb, dst.u3.ip6[3])); in flow_get_nfct_dst()
166 return flow_get_dst(skb, flow); in flow_get_nfct_dst()
169 static u32 flow_get_nfct_proto_src(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_proto_src() argument
171 return ntohs(CTTUPLE(skb, src.u.all)); in flow_get_nfct_proto_src()
173 return flow_get_proto_src(skb, flow); in flow_get_nfct_proto_src()
176 static u32 flow_get_nfct_proto_dst(const struct sk_buff *skb, const struct flow_keys *flow) in flow_get_nfct_proto_dst() argument
178 return ntohs(CTTUPLE(skb, dst.u.all)); in flow_get_nfct_proto_dst()
180 return flow_get_proto_dst(skb, flow); in flow_get_nfct_proto_dst()
183 static u32 flow_get_rtclassid(const struct sk_buff *skb) in flow_get_rtclassid() argument
186 if (skb_dst(skb)) in flow_get_rtclassid()
187 return skb_dst(skb)->tclassid; in flow_get_rtclassid()
192 static u32 flow_get_skuid(const struct sk_buff *skb) in flow_get_skuid() argument
194 if (skb->sk && skb->sk->sk_socket && skb->sk->sk_socket->file) { in flow_get_skuid()
195 kuid_t skuid = skb->sk->sk_socket->file->f_cred->fsuid; in flow_get_skuid()
201 static u32 flow_get_skgid(const struct sk_buff *skb) in flow_get_skgid() argument
203 if (skb->sk && skb->sk->sk_socket && skb->sk->sk_socket->file) { in flow_get_skgid()
204 kgid_t skgid = skb->sk->sk_socket->file->f_cred->fsgid; in flow_get_skgid()
210 static u32 flow_get_vlan_tag(const struct sk_buff *skb) in flow_get_vlan_tag() argument
214 if (vlan_get_tag(skb, &tag) < 0) in flow_get_vlan_tag()
219 static u32 flow_get_rxhash(struct sk_buff *skb) in flow_get_rxhash() argument
221 return skb_get_hash(skb); in flow_get_rxhash()
224 static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow) in flow_key_get() argument
228 return flow_get_src(skb, flow); in flow_key_get()
230 return flow_get_dst(skb, flow); in flow_key_get()
232 return flow_get_proto(skb, flow); in flow_key_get()
234 return flow_get_proto_src(skb, flow); in flow_key_get()
236 return flow_get_proto_dst(skb, flow); in flow_key_get()
238 return flow_get_iif(skb); in flow_key_get()
240 return flow_get_priority(skb); in flow_key_get()
242 return flow_get_mark(skb); in flow_key_get()
244 return flow_get_nfct(skb); in flow_key_get()
246 return flow_get_nfct_src(skb, flow); in flow_key_get()
248 return flow_get_nfct_dst(skb, flow); in flow_key_get()
250 return flow_get_nfct_proto_src(skb, flow); in flow_key_get()
252 return flow_get_nfct_proto_dst(skb, flow); in flow_key_get()
254 return flow_get_rtclassid(skb); in flow_key_get()
256 return flow_get_skuid(skb); in flow_key_get()
258 return flow_get_skgid(skb); in flow_key_get()
260 return flow_get_vlan_tag(skb); in flow_key_get()
262 return flow_get_rxhash(skb); in flow_key_get()
279 static int flow_classify(struct sk_buff *skb, const struct tcf_proto *tp, in flow_classify() argument
293 if (!tcf_em_tree_match(skb, &f->ematches, NULL)) in flow_classify()
298 skb_flow_dissect(skb, &flow_keys); in flow_classify()
303 keys[n] = flow_key_get(skb, key, &flow_keys); in flow_classify()
320 r = tcf_exts_exec(skb, &f->exts, res); in flow_classify()
590 struct sk_buff *skb, struct tcmsg *t) in flow_dump() argument
596 return skb->len; in flow_dump()
600 nest = nla_nest_start(skb, TCA_OPTIONS); in flow_dump()
604 if (nla_put_u32(skb, TCA_FLOW_KEYS, f->keymask) || in flow_dump()
605 nla_put_u32(skb, TCA_FLOW_MODE, f->mode)) in flow_dump()
609 if (nla_put_u32(skb, TCA_FLOW_MASK, f->mask) || in flow_dump()
610 nla_put_u32(skb, TCA_FLOW_XOR, f->xor)) in flow_dump()
614 nla_put_u32(skb, TCA_FLOW_RSHIFT, f->rshift)) in flow_dump()
617 nla_put_u32(skb, TCA_FLOW_ADDEND, f->addend)) in flow_dump()
621 nla_put_u32(skb, TCA_FLOW_DIVISOR, f->divisor)) in flow_dump()
624 nla_put_u32(skb, TCA_FLOW_BASECLASS, f->baseclass)) in flow_dump()
628 nla_put_u32(skb, TCA_FLOW_PERTURB, f->perturb_period / HZ)) in flow_dump()
631 if (tcf_exts_dump(skb, &f->exts) < 0) in flow_dump()
635 tcf_em_tree_dump(skb, &f->ematches, TCA_FLOW_EMATCHES) < 0) in flow_dump()
638 nla_nest_end(skb, nest); in flow_dump()
640 if (tcf_exts_dump_stats(skb, &f->exts) < 0) in flow_dump()
643 return skb->len; in flow_dump()
646 nla_nest_cancel(skb, nest); in flow_dump()