Lines Matching refs:skb

49 int iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,  in iptunnel_xmit()  argument
53 int pkt_len = skb->len; in iptunnel_xmit()
57 skb_scrub_packet(skb, xnet); in iptunnel_xmit()
59 skb_clear_hash(skb); in iptunnel_xmit()
60 skb_dst_set(skb, &rt->dst); in iptunnel_xmit()
61 memset(IPCB(skb), 0, sizeof(*IPCB(skb))); in iptunnel_xmit()
64 skb_push(skb, sizeof(struct iphdr)); in iptunnel_xmit()
65 skb_reset_network_header(skb); in iptunnel_xmit()
67 iph = ip_hdr(skb); in iptunnel_xmit()
78 skb_shinfo(skb)->gso_segs ?: 1); in iptunnel_xmit()
80 err = ip_local_out_sk(sk, skb); in iptunnel_xmit()
87 int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto) in iptunnel_pull_header() argument
89 if (unlikely(!pskb_may_pull(skb, hdr_len))) in iptunnel_pull_header()
92 skb_pull_rcsum(skb, hdr_len); in iptunnel_pull_header()
97 if (unlikely(!pskb_may_pull(skb, ETH_HLEN))) in iptunnel_pull_header()
100 eh = (struct ethhdr *)skb->data; in iptunnel_pull_header()
102 skb->protocol = eh->h_proto; in iptunnel_pull_header()
104 skb->protocol = htons(ETH_P_802_2); in iptunnel_pull_header()
107 skb->protocol = inner_proto; in iptunnel_pull_header()
110 nf_reset(skb); in iptunnel_pull_header()
111 secpath_reset(skb); in iptunnel_pull_header()
112 skb_clear_hash_if_not_l4(skb); in iptunnel_pull_header()
113 skb_dst_drop(skb); in iptunnel_pull_header()
114 skb->vlan_tci = 0; in iptunnel_pull_header()
115 skb_set_queue_mapping(skb, 0); in iptunnel_pull_header()
116 skb->pkt_type = PACKET_HOST; in iptunnel_pull_header()
121 struct sk_buff *iptunnel_handle_offloads(struct sk_buff *skb, in iptunnel_handle_offloads() argument
127 if (likely(!skb->encapsulation)) { in iptunnel_handle_offloads()
128 skb_reset_inner_headers(skb); in iptunnel_handle_offloads()
129 skb->encapsulation = 1; in iptunnel_handle_offloads()
132 if (skb_is_gso(skb)) { in iptunnel_handle_offloads()
133 err = skb_unclone(skb, GFP_ATOMIC); in iptunnel_handle_offloads()
136 skb_shinfo(skb)->gso_type |= gso_type_mask; in iptunnel_handle_offloads()
137 return skb; in iptunnel_handle_offloads()
146 skb->encapsulation = 0; in iptunnel_handle_offloads()
148 if (skb->ip_summed == CHECKSUM_PARTIAL && csum_help) { in iptunnel_handle_offloads()
149 err = skb_checksum_help(skb); in iptunnel_handle_offloads()
152 } else if (skb->ip_summed != CHECKSUM_PARTIAL) in iptunnel_handle_offloads()
153 skb->ip_summed = CHECKSUM_NONE; in iptunnel_handle_offloads()
155 return skb; in iptunnel_handle_offloads()
157 kfree_skb(skb); in iptunnel_handle_offloads()