Lines Matching refs:pckt

244 	       bool is_ipv6, struct packet_description *pckt)  in parse_udp()  argument
247 bool is_icmp = !((pckt->flags & (1 << 0)) == 0); in parse_udp()
255 pckt->flow.port16[0] = udp->source; in parse_udp()
256 pckt->flow.port16[1] = udp->dest; in parse_udp()
258 pckt->flow.port16[0] = udp->dest; in parse_udp()
259 pckt->flow.port16[1] = udp->source; in parse_udp()
266 bool is_ipv6, struct packet_description *pckt) in parse_tcp() argument
269 bool is_icmp = !((pckt->flags & (1 << 0)) == 0); in parse_tcp()
277 pckt->flags |= (1 << 1); in parse_tcp()
279 pckt->flow.port16[0] = tcp->source; in parse_tcp()
280 pckt->flow.port16[1] = tcp->dest; in parse_tcp()
282 pckt->flow.port16[0] = tcp->dest; in parse_tcp()
283 pckt->flow.port16[1] = tcp->source; in parse_tcp()
290 struct packet_description *pckt, in encap_v6() argument
318 ip_suffix = pckt->flow.srcv6[3] ^ pckt->flow.port16[0]; in encap_v6()
333 struct packet_description *pckt, in encap_v4() argument
337 __u32 ip_suffix = __builtin_bswap16(pckt->flow.port16[0]); in encap_v4()
347 ip_suffix ^= pckt->flow.src; in encap_v4()
496 struct packet_description *pckt) in parse_icmpv6() argument
512 pckt->flow.proto = ip6h->nexthdr; in parse_icmpv6()
513 pckt->flags |= (1 << 0); in parse_icmpv6()
514 memcpy(pckt->flow.srcv6, ip6h->daddr.in6_u.u6_addr32, 16); in parse_icmpv6()
515 memcpy(pckt->flow.dstv6, ip6h->saddr.in6_u.u6_addr32, 16); in parse_icmpv6()
521 struct packet_description *pckt) in parse_icmp() argument
539 pckt->flow.proto = iph->protocol; in parse_icmp()
540 pckt->flags |= (1 << 0); in parse_icmp()
541 pckt->flow.src = iph->daddr; in parse_icmp()
542 pckt->flow.dst = iph->saddr; in parse_icmp()
547 __u32 get_packet_hash(struct packet_description *pckt, in get_packet_hash() argument
551 return jhash_2words(jhash(pckt->flow.srcv6, 16, 12), in get_packet_hash()
552 pckt->flow.ports, 24); in get_packet_hash()
554 return jhash_2words(pckt->flow.src, pckt->flow.ports, in get_packet_hash()
560 struct packet_description *pckt, in get_packet_dst() argument
572 pckt->flow.port16[0] = pckt->flow.port16[1]; in get_packet_dst()
573 memset(pckt->flow.srcv6, 0, 16); in get_packet_dst()
575 hash = get_packet_hash(pckt, hash_16bytes); in get_packet_dst()
603 if (pckt->flow.proto == IPPROTO_UDP) in get_packet_dst()
606 bpf_map_update_elem(lru_map, &pckt->flow, &new_dst_lru, 0); in get_packet_dst()
613 struct packet_description *pckt, in connection_table_lookup() argument
621 dst_lru = bpf_map_lookup_elem(lru_map, &pckt->flow); in connection_table_lookup()
624 if (pckt->flow.proto == IPPROTO_UDP) { in connection_table_lookup()
639 static int process_l3_headers_v6(struct packet_description *pckt, in process_l3_headers_v6() argument
653 pckt->flow.proto = *protocol; in process_l3_headers_v6()
659 action = parse_icmpv6(data, data_end, off, pckt); in process_l3_headers_v6()
663 memcpy(pckt->flow.srcv6, ip6h->saddr.in6_u.u6_addr32, 16); in process_l3_headers_v6()
664 memcpy(pckt->flow.dstv6, ip6h->daddr.in6_u.u6_addr32, 16); in process_l3_headers_v6()
670 static int process_l3_headers_v4(struct packet_description *pckt, in process_l3_headers_v4() argument
685 pckt->flow.proto = *protocol; in process_l3_headers_v4()
691 action = parse_icmp(data, data_end, off, pckt); in process_l3_headers_v4()
695 pckt->flow.src = iph->saddr; in process_l3_headers_v4()
696 pckt->flow.dst = iph->daddr; in process_l3_headers_v4()
707 struct packet_description pckt = { }; in process_packet() local
724 action = process_l3_headers_v6(&pckt, &protocol, off, in process_packet()
727 action = process_l3_headers_v4(&pckt, &protocol, off, in process_packet()
731 protocol = pckt.flow.proto; in process_packet()
733 if (!parse_tcp(data, data_end, is_ipv6, &pckt)) in process_packet()
736 if (!parse_udp(data, data_end, is_ipv6, &pckt)) in process_packet()
743 memcpy(vip.vipv6, pckt.flow.dstv6, 16); in process_packet()
745 vip.vip = pckt.flow.dst; in process_packet()
746 vip.port = pckt.flow.port16[1]; in process_packet()
747 vip.proto = pckt.flow.proto; in process_packet()
755 pckt.flow.port16[1] = 0; in process_packet()
765 pckt.flow.port16[0] = 0; in process_packet()
766 if (!(pckt.flags & (1 << 1)) && !(vip_info->flags & (1 << 1))) in process_packet()
767 connection_table_lookup(&dst, &pckt, lru_map); in process_packet()
770 if (pckt.flow.proto == IPPROTO_TCP) { in process_packet()
776 if (pckt.flags & (1 << 1)) in process_packet()
781 if (!get_packet_dst(&dst, &pckt, vip_info, is_ipv6, lru_map)) in process_packet()
790 if (!encap_v6(xdp, cval, &pckt, dst, pkt_bytes)) in process_packet()
793 if (!encap_v4(xdp, cval, &pckt, dst, pkt_bytes)) in process_packet()