Lines Matching refs:skb
51 int iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb, in iptunnel_xmit() argument
55 int pkt_len = skb->len - skb_inner_network_offset(skb); in iptunnel_xmit()
60 skb_scrub_packet(skb, xnet); in iptunnel_xmit()
62 skb_clear_hash(skb); in iptunnel_xmit()
63 skb_dst_set(skb, &rt->dst); in iptunnel_xmit()
64 memset(IPCB(skb), 0, sizeof(*IPCB(skb))); in iptunnel_xmit()
67 skb_push(skb, sizeof(struct iphdr)); in iptunnel_xmit()
68 skb_reset_network_header(skb); in iptunnel_xmit()
70 iph = ip_hdr(skb); in iptunnel_xmit()
80 __ip_select_ident(net, iph, skb_shinfo(skb)->gso_segs ?: 1); in iptunnel_xmit()
82 err = ip_local_out(net, sk, skb); in iptunnel_xmit()
89 int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto) in iptunnel_pull_header() argument
91 if (unlikely(!pskb_may_pull(skb, hdr_len))) in iptunnel_pull_header()
94 skb_pull_rcsum(skb, hdr_len); in iptunnel_pull_header()
99 if (unlikely(!pskb_may_pull(skb, ETH_HLEN))) in iptunnel_pull_header()
102 eh = (struct ethhdr *)skb->data; in iptunnel_pull_header()
104 skb->protocol = eh->h_proto; in iptunnel_pull_header()
106 skb->protocol = htons(ETH_P_802_2); in iptunnel_pull_header()
109 skb->protocol = inner_proto; in iptunnel_pull_header()
112 nf_reset(skb); in iptunnel_pull_header()
113 secpath_reset(skb); in iptunnel_pull_header()
114 skb_clear_hash_if_not_l4(skb); in iptunnel_pull_header()
115 skb_dst_drop(skb); in iptunnel_pull_header()
116 skb->vlan_tci = 0; in iptunnel_pull_header()
117 skb_set_queue_mapping(skb, 0); in iptunnel_pull_header()
118 skb->pkt_type = PACKET_HOST; in iptunnel_pull_header()
150 struct sk_buff *iptunnel_handle_offloads(struct sk_buff *skb, in iptunnel_handle_offloads() argument
156 if (likely(!skb->encapsulation)) { in iptunnel_handle_offloads()
157 skb_reset_inner_headers(skb); in iptunnel_handle_offloads()
158 skb->encapsulation = 1; in iptunnel_handle_offloads()
161 if (skb_is_gso(skb)) { in iptunnel_handle_offloads()
162 err = skb_unclone(skb, GFP_ATOMIC); in iptunnel_handle_offloads()
165 skb_shinfo(skb)->gso_type |= gso_type_mask; in iptunnel_handle_offloads()
166 return skb; in iptunnel_handle_offloads()
175 skb->encapsulation = 0; in iptunnel_handle_offloads()
177 if (skb->ip_summed == CHECKSUM_PARTIAL && csum_help) { in iptunnel_handle_offloads()
178 err = skb_checksum_help(skb); in iptunnel_handle_offloads()
181 } else if (skb->ip_summed != CHECKSUM_PARTIAL) in iptunnel_handle_offloads()
182 skb->ip_summed = CHECKSUM_NONE; in iptunnel_handle_offloads()
184 return skb; in iptunnel_handle_offloads()
186 kfree_skb(skb); in iptunnel_handle_offloads()
279 static int ip_tun_fill_encap_info(struct sk_buff *skb, in ip_tun_fill_encap_info() argument
284 if (nla_put_u64(skb, LWTUNNEL_IP_ID, tun_info->key.tun_id) || in ip_tun_fill_encap_info()
285 nla_put_be32(skb, LWTUNNEL_IP_DST, tun_info->key.u.ipv4.dst) || in ip_tun_fill_encap_info()
286 nla_put_be32(skb, LWTUNNEL_IP_SRC, tun_info->key.u.ipv4.src) || in ip_tun_fill_encap_info()
287 nla_put_u8(skb, LWTUNNEL_IP_TOS, tun_info->key.tos) || in ip_tun_fill_encap_info()
288 nla_put_u8(skb, LWTUNNEL_IP_TTL, tun_info->key.ttl) || in ip_tun_fill_encap_info()
289 nla_put_u16(skb, LWTUNNEL_IP_FLAGS, tun_info->key.tun_flags)) in ip_tun_fill_encap_info()
374 static int ip6_tun_fill_encap_info(struct sk_buff *skb, in ip6_tun_fill_encap_info() argument
379 if (nla_put_u64(skb, LWTUNNEL_IP6_ID, tun_info->key.tun_id) || in ip6_tun_fill_encap_info()
380 nla_put_in6_addr(skb, LWTUNNEL_IP6_DST, &tun_info->key.u.ipv6.dst) || in ip6_tun_fill_encap_info()
381 nla_put_in6_addr(skb, LWTUNNEL_IP6_SRC, &tun_info->key.u.ipv6.src) || in ip6_tun_fill_encap_info()
382 nla_put_u8(skb, LWTUNNEL_IP6_HOPLIMIT, tun_info->key.tos) || in ip6_tun_fill_encap_info()
383 nla_put_u8(skb, LWTUNNEL_IP6_TC, tun_info->key.ttl) || in ip6_tun_fill_encap_info()
384 nla_put_u16(skb, LWTUNNEL_IP6_FLAGS, tun_info->key.tun_flags)) in ip6_tun_fill_encap_info()