• Home
  • Raw
  • Download

Lines Matching refs:skb

252 static inline bool flow_is_frag(struct __sk_buff *skb, int nh_off)  in flow_is_frag()  argument
254 return !!(load_half(skb, nh_off + offsetof(struct iphdr, frag_off)) & in flow_is_frag()
258 static inline int flow_parse_ipv4(struct __sk_buff *skb, int nh_off, in flow_parse_ipv4() argument
263 if (unlikely(flow_is_frag(skb, nh_off))) in flow_parse_ipv4()
266 *ip_proto = load_byte(skb, nh_off + offsetof(struct iphdr, in flow_parse_ipv4()
269 flow->src = load_word(skb, nh_off + offsetof(struct iphdr, saddr)); in flow_parse_ipv4()
270 flow->dst = load_word(skb, nh_off + offsetof(struct iphdr, daddr)); in flow_parse_ipv4()
273 ip_ver_len = load_byte(skb, nh_off + 0 /* offsetof(struct iphdr, ihl) */); in flow_parse_ipv4()
282 static inline __u32 flow_addr_hash_ipv6(struct __sk_buff *skb, int off) in flow_addr_hash_ipv6() argument
284 __u32 w0 = load_word(skb, off); in flow_addr_hash_ipv6()
285 __u32 w1 = load_word(skb, off + sizeof(w0)); in flow_addr_hash_ipv6()
286 __u32 w2 = load_word(skb, off + sizeof(w0) * 2); in flow_addr_hash_ipv6()
287 __u32 w3 = load_word(skb, off + sizeof(w0) * 3); in flow_addr_hash_ipv6()
292 static inline int flow_parse_ipv6(struct __sk_buff *skb, int nh_off, in flow_parse_ipv6() argument
295 *ip_proto = load_byte(skb, nh_off + offsetof(struct ipv6hdr, nexthdr)); in flow_parse_ipv6()
297 flow->src = flow_addr_hash_ipv6(skb, nh_off + offsetof(struct ipv6hdr, saddr)); in flow_parse_ipv6()
298 flow->dst = flow_addr_hash_ipv6(skb, nh_off + offsetof(struct ipv6hdr, daddr)); in flow_parse_ipv6()
303 static inline bool flow_dissector(struct __sk_buff *skb, in flow_dissector() argument
307 __be16 proto = skb->protocol; in flow_dissector()
312 proto = load_half(skb, nh_off + in flow_dissector()
317 proto = load_half(skb, nh_off + in flow_dissector()
323 nh_off = flow_parse_ipv4(skb, nh_off, &ip_proto, flow); in flow_dissector()
325 nh_off = flow_parse_ipv6(skb, nh_off, &ip_proto, flow); in flow_dissector()
336 __u16 gre_flags = load_half(skb, nh_off + in flow_dissector()
338 __u16 gre_proto = load_half(skb, nh_off + in flow_dissector()
353 gre_proto = load_half(skb, nh_off + in flow_dissector()
359 nh_off = flow_parse_ipv4(skb, nh_off, &ip_proto, flow); in flow_dissector()
361 nh_off = flow_parse_ipv6(skb, nh_off, &ip_proto, flow); in flow_dissector()
367 nh_off = flow_parse_ipv4(skb, nh_off, &ip_proto, flow); in flow_dissector()
370 nh_off = flow_parse_ipv6(skb, nh_off, &ip_proto, flow); in flow_dissector()
377 flow->ports = load_word(skb, nh_off); in flow_dissector()
384 static inline void cls_update_proto_map(const struct __sk_buff *skb, in cls_update_proto_map() argument
393 lock_xadd(&ct->bytes, skb->len); in cls_update_proto_map()
399 _ct.bytes = skb->len; in cls_update_proto_map()
404 static inline void cls_update_queue_map(const struct __sk_buff *skb) in cls_update_queue_map() argument
406 uint32_t queue = skb->queue_mapping; in cls_update_queue_map()
410 mismatch = skb->queue_mapping != get_smp_processor_id(); in cls_update_queue_map()
443 int cls_main(struct __sk_buff *skb) in cls_main() argument
447 if (!flow_dissector(skb, &flow)) in cls_main()
450 cls_update_proto_map(skb, &flow); in cls_main()
451 cls_update_queue_map(skb); in cls_main()
467 int act_mark_main(struct __sk_buff *skb) in act_mark_main() argument
475 if (skb->mark == 0xcafe) { in act_mark_main()
485 int act_rand_main(struct __sk_buff *skb) in act_rand_main() argument