Lines Matching refs:skb

108 static inline __always_inline int do_forward6(struct __sk_buff* skb, const bool is_ethernet,
111 if (skb->protocol != htons(ETH_P_IPV6)) return TC_ACT_OK;
114 if (is_ethernet && (skb->pkt_type != PACKET_HOST)) return TC_ACT_OK;
122 try_make_readable(skb, l2_header_size + IP6_HLEN + TCP_HLEN);
124 void* data = (void*)(long)skb->data;
125 const void* data_end = (void*)(long)skb->data_end;
172 .iif = skb->ifindex,
177 .iif = skb->ifindex,
187 uint32_t stat_and_limit_k = downstream ? skb->ifindex : v->oif;
210 uint64_t bytes = skb->len;
231 if (bpf_skb_change_head(skb, sizeof(struct ethhdr), /*flags*/ 0)) {
237 data = (void*)(long)skb->data;
238 data_end = (void*)(long)skb->data_end;
262 bpf_csum_update(skb, 0xFFFF - ntohs(old_hl) + ntohs(new_hl));
282 (struct __sk_buff* skb) {
283 return do_forward6(skb, /* is_ethernet */ true, /* downstream */ true);
288 (struct __sk_buff* skb) {
289 return do_forward6(skb, /* is_ethernet */ true, /* downstream */ false);
307 (struct __sk_buff* skb) {
308 return do_forward6(skb, /* is_ethernet */ false, /* downstream */ true);
313 (struct __sk_buff* skb) {
314 return do_forward6(skb, /* is_ethernet */ false, /* downstream */ false);
322 (struct __sk_buff* skb) {
323 return do_forward6(skb, /* is_ethernet */ false, /* downstream */ true);
330 (struct __sk_buff* skb) {
331 return do_forward6(skb, /* is_ethernet */ false, /* downstream */ false);
339 (struct __sk_buff* skb) {
345 (struct __sk_buff* skb) {
355 static inline __always_inline int do_forward4(struct __sk_buff* skb, const bool is_ethernet,
358 if (is_ethernet && (skb->pkt_type != PACKET_HOST)) return TC_ACT_OK;
361 if (skb->protocol != htons(ETH_P_IP)) return TC_ACT_OK;
369 try_make_readable(skb, l2_header_size + IP4_HLEN + TCP_HLEN);
371 void* data = (void*)(long)skb->data;
372 const void* data_end = (void*)(long)skb->data_end;
481 if (!udph->check && (bpf_csum_update(skb, 0) >= 0)) TC_PUNT(UDP_CSUM_ZERO);
485 .iif = skb->ifindex,
500 uint32_t stat_and_limit_k = downstream ? skb->ifindex : v->oif;
523 uint64_t bytes = skb->len;
544 if (bpf_skb_change_head(skb, sizeof(struct ethhdr), /*flags*/ 0)) {
550 data = (void*)(long)skb->data;
551 data_end = (void*)(long)skb->data_end;
579 bpf_l3_csum_replace(skb, ETH_IP4_OFFSET(check), old_ttl_proto, new_ttl_proto, sz2);
580 bpf_skb_store_bytes(skb, ETH_IP4_OFFSET(ttl), &new_ttl_proto, sz2, 0);
591 bpf_l4_csum_replace(skb, l4_offs_csum, old_daddr, new_daddr, sz4 | BPF_F_PSEUDO_HDR | l4_flags);
592 bpf_l3_csum_replace(skb, ETH_IP4_OFFSET(check), old_daddr, new_daddr, sz4);
593 bpf_skb_store_bytes(skb, ETH_IP4_OFFSET(daddr), &new_daddr, sz4, 0);
595 bpf_l4_csum_replace(skb, l4_offs_csum, old_saddr, new_saddr, sz4 | BPF_F_PSEUDO_HDR | l4_flags);
596 bpf_l3_csum_replace(skb, ETH_IP4_OFFSET(check), old_saddr, new_saddr, sz4);
597 bpf_skb_store_bytes(skb, ETH_IP4_OFFSET(saddr), &new_saddr, sz4, 0);
601 bpf_l4_csum_replace(skb, l4_offs_csum, k.srcPort, v->srcPort, sz2 | l4_flags);
602 bpf_skb_store_bytes(skb, is_tcp ? ETH_IP4_TCP_OFFSET(source) : ETH_IP4_UDP_OFFSET(source),
605 bpf_l4_csum_replace(skb, l4_offs_csum, k.dstPort, v->dstPort, sz2 | l4_flags);
606 bpf_skb_store_bytes(skb, is_tcp ? ETH_IP4_TCP_OFFSET(dest) : ETH_IP4_UDP_OFFSET(dest),
629 (struct __sk_buff* skb) {
630 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ true, /* updatetime */ true);
635 (struct __sk_buff* skb) {
636 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ false, /* updatetime */ true);
641 (struct __sk_buff* skb) {
642 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ true, /* updatetime */ true);
647 (struct __sk_buff* skb) {
648 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ false, /* updatetime */ true);
658 (struct __sk_buff* skb) {
659 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ true, /* updatetime */ true);
666 (struct __sk_buff* skb) {
667 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ false, /* updatetime */ true);
674 (struct __sk_buff* skb) {
675 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ true, /* updatetime */ true);
682 (struct __sk_buff* skb) {
683 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ false, /* updatetime */ true);
702 (struct __sk_buff* skb) {
703 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ true, /* updatetime */ false);
708 (struct __sk_buff* skb) {
709 … return do_forward4(skb, /* is_ethernet */ false, /* downstream */ false, /* updatetime */ false);
719 (struct __sk_buff* skb) {
720 return do_forward4(skb, /* is_ethernet */ false, /* downstream */ true, /* updatetime */ false);
727 (struct __sk_buff* skb) {
728 … return do_forward4(skb, /* is_ethernet */ false, /* downstream */ false, /* updatetime */ false);
735 (struct __sk_buff* skb) {
736 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ true, /* updatetime */ false);
741 (struct __sk_buff* skb) {
742 return do_forward4(skb, /* is_ethernet */ true, /* downstream */ false, /* updatetime */ false);
751 (struct __sk_buff* skb) {
757 (struct __sk_buff* skb) {
765 (struct __sk_buff* skb) {
771 (struct __sk_buff* skb) {