Lines Matching refs:tpi
184 static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, in parse_gre_header() argument
198 tpi->flags = gre_flags_to_tnl_flags(greh->flags); in parse_gre_header()
199 hdr_len = ip_gre_calc_hlen(tpi->flags); in parse_gre_header()
205 tpi->proto = greh->protocol; in parse_gre_header()
220 tpi->key = *options; in parse_gre_header()
223 tpi->key = 0; in parse_gre_header()
226 tpi->seq = *options; in parse_gre_header()
229 tpi->seq = 0; in parse_gre_header()
235 if (greh->flags == 0 && tpi->proto == htons(ETH_P_WCCP)) { in parse_gre_header()
236 tpi->proto = htons(ETH_P_IP); in parse_gre_header()
247 const struct tnl_ptk_info *tpi) in ipgre_err() argument
299 if (tpi->proto == htons(ETH_P_TEB)) in ipgre_err()
305 t = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags, in ipgre_err()
306 iph->daddr, iph->saddr, tpi->key); in ipgre_err()
343 struct tnl_ptk_info tpi; in gre_err() local
346 if (parse_gre_header(skb, &tpi, &csum_err) < 0) { in gre_err()
362 ipgre_err(skb, info, &tpi); in gre_err()
384 static int ipgre_rcv(struct sk_buff *skb, const struct tnl_ptk_info *tpi) in ipgre_rcv() argument
392 if (tpi->proto == htons(ETH_P_TEB)) in ipgre_rcv()
398 tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags, in ipgre_rcv()
399 iph->saddr, iph->daddr, tpi->key); in ipgre_rcv()
407 flags = tpi->flags & (TUNNEL_CSUM | TUNNEL_KEY); in ipgre_rcv()
408 tun_id = key_to_tunnel_id(tpi->key); in ipgre_rcv()
414 ip_tunnel_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error); in ipgre_rcv()
422 struct tnl_ptk_info tpi; in gre_rcv() local
434 hdr_len = parse_gre_header(skb, &tpi, &csum_err); in gre_rcv()
437 if (iptunnel_pull_header(skb, hdr_len, tpi.proto) < 0) in gre_rcv()
440 if (ipgre_rcv(skb, &tpi) == PACKET_RCVD) in gre_rcv()