Lines Matching refs:info

149 filter_src_dst_ip(struct pkt_info* info, struct fw_match_info* match_info)
151 if (info->type == V6) {
153 filter_ipv6_addr(&info->ip.ipv6->saddr);
154 } else if (info->type == V4) {
156 filter_ipv4_addr(info->ip.ipv4->saddr);
158 filter_ipv4_lpm(info->ip.ipv4->saddr);
160 filter_ipv4_lpm(info->ip.ipv4->daddr);
180 static __always_inline void set_tcp_flags(struct pkt_info *info,
183 info->flags |= TCP_SYN;
185 info->flags |= TCP_ACK;
187 info->flags |= TCP_RST;
191 parse_tcp(struct pkt_info *info, void *transport_hdr, void *data_end)
198 info->sport = bpf_ntohs(tcp->source);
199 info->dport = bpf_ntohs(tcp->dest);
200 set_tcp_flags(info, tcp);
206 parse_udp(struct pkt_info *info, void *transport_hdr, void *data_end)
213 info->sport = bpf_ntohs(udp->source);
214 info->dport = bpf_ntohs(udp->dest);
235 struct pkt_info *info, struct fw_match_info *match_info)
237 if (info->proto == IPPROTO_TCP) {
238 if (!parse_tcp(info, transport_hdr, data_end))
242 match_info->is_tcp_syn = (info->flags & TCP_SYN) > 0;
244 match_info->tcp_dp_match = filter_tcp_port(info->dport);
245 } else if (info->proto == IPPROTO_UDP) {
246 if (!parse_udp(info, transport_hdr, data_end))
249 match_info->udp_dp_match = filter_udp_port(info->dport);
250 match_info->udp_sp_match = filter_udp_port(info->sport);
257 parse_gue_v6(struct pkt_info *info, struct ipv6hdr *ip6h, void *data_end)
268 info->flags |= TUNNEL;
279 info->type = V6;
280 info->proto = inner_ip6h->nexthdr;
281 info->ip.ipv6 = inner_ip6h;
282 info->trans_hdr_offset += sizeof(struct ipv6hdr) + sizeof(struct udphdr);
289 info->type = V4;
290 info->proto = inner_ip4h->protocol;
291 info->ip.ipv4 = inner_ip4h;
292 info->trans_hdr_offset += sizeof(struct iphdr) + sizeof(struct udphdr);
298 static __always_inline __u8 parse_ipv6_gue(struct pkt_info *info,
306 info->proto = ip6h->nexthdr;
307 info->ip.ipv6 = ip6h;
308 info->type = V6;
309 info->trans_hdr_offset = sizeof(struct ethhdr) + sizeof(struct ipv6hdr);
311 if (info->proto == IPPROTO_UDP)
312 return parse_gue_v6(info, ip6h, data_end);
323 struct pkt_info info = {};
337 if (parse_ipv6_gue(&info, data, data_end))
340 if (info.proto == IPPROTO_ICMPV6)
343 if (info.proto != IPPROTO_TCP && info.proto != IPPROTO_UDP)
346 filter_src_dst_ip(&info, &match_info);
348 transport_hdr = get_transport_hdr(info.trans_hdr_offset, data,
354 &info, &match_info);