Lines Matching refs:skb

39 static inline void parse_eth_proto(struct __sk_buff *skb, u32 proto)  in parse_eth_proto()  argument
44 bpf_tail_call(skb, &jmp_table, PARSE_VLAN); in parse_eth_proto()
48 bpf_tail_call(skb, &jmp_table, PARSE_MPLS); in parse_eth_proto()
51 bpf_tail_call(skb, &jmp_table, PARSE_IP); in parse_eth_proto()
54 bpf_tail_call(skb, &jmp_table, PARSE_IPV6); in parse_eth_proto()
122 static void update_stats(struct __sk_buff *skb, struct globals *g) in update_stats() argument
130 __sync_fetch_and_add(&value->bytes, skb->len); in update_stats()
132 struct pair val = {1, skb->len}; in update_stats()
138 static __always_inline void parse_ip_proto(struct __sk_buff *skb, in parse_ip_proto() argument
141 __u32 nhoff = skb->cb[0]; in parse_ip_proto()
151 __u32 gre_flags = load_half(skb, in parse_ip_proto()
153 __u32 gre_proto = load_half(skb, in parse_ip_proto()
167 skb->cb[0] = nhoff; in parse_ip_proto()
168 parse_eth_proto(skb, gre_proto); in parse_ip_proto()
172 parse_eth_proto(skb, ETH_P_IP); in parse_ip_proto()
175 parse_eth_proto(skb, ETH_P_IPV6); in parse_ip_proto()
179 g->flow.ports = load_word(skb, nhoff); in parse_ip_proto()
182 update_stats(skb, g); in parse_ip_proto()
189 PROG(PARSE_IP)(struct __sk_buff *skb) in PROG()
197 nhoff = skb->cb[0]; in PROG()
199 if (unlikely(ip_is_fragment(skb, nhoff))) in PROG()
202 ip_proto = load_byte(skb, nhoff + offsetof(struct iphdr, protocol)); in PROG()
205 g->flow.src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); in PROG()
206 g->flow.dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); in PROG()
209 verlen = load_byte(skb, nhoff + 0/*offsetof(struct iphdr, ihl)*/); in PROG()
212 skb->cb[0] = nhoff; in PROG()
213 parse_ip_proto(skb, g, ip_proto); in PROG()
217 PROG(PARSE_IPV6)(struct __sk_buff *skb) in PROG()
225 nhoff = skb->cb[0]; in PROG()
227 ip_proto = load_byte(skb, in PROG()
229 g->flow.src = ipv6_addr_hash(skb, in PROG()
231 g->flow.dst = ipv6_addr_hash(skb, in PROG()
235 skb->cb[0] = nhoff; in PROG()
236 parse_ip_proto(skb, g, ip_proto); in PROG()
240 PROG(PARSE_VLAN)(struct __sk_buff *skb) in PROG()
244 nhoff = skb->cb[0]; in PROG()
246 proto = load_half(skb, nhoff + offsetof(struct vlan_hdr, in PROG()
249 skb->cb[0] = nhoff; in PROG()
251 parse_eth_proto(skb, proto); in PROG()
256 PROG(PARSE_MPLS)(struct __sk_buff *skb) in PROG()
260 nhoff = skb->cb[0]; in PROG()
262 label = load_word(skb, nhoff); in PROG()
264 skb->cb[0] = nhoff; in PROG()
267 __u8 verlen = load_byte(skb, nhoff); in PROG()
269 parse_eth_proto(skb, ETH_P_IP); in PROG()
271 parse_eth_proto(skb, ETH_P_IPV6); in PROG()
273 parse_eth_proto(skb, ETH_P_MPLS_UC); in PROG()
280 int main_prog(struct __sk_buff *skb) in main_prog() argument
283 __u32 proto = load_half(skb, 12); in main_prog()
285 skb->cb[0] = nhoff; in main_prog()
286 parse_eth_proto(skb, proto); in main_prog()