• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/net/ipv4/netfilter/

Lines Matching refs:pskb

115 static int enlarge_skb(struct sk_buff **pskb, unsigned int extra)
119 if ((*pskb)->len + extra > 65535)
122 nskb = skb_copy_expand(*pskb, skb_headroom(*pskb), extra, GFP_ATOMIC);
127 if ((*pskb)->sk)
128 skb_set_owner_w(nskb, (*pskb)->sk);
129 kfree_skb(*pskb);
130 *pskb = nskb;
135 nf_nat_mangle_tcp_packet(struct sk_buff **pskb,
143 struct rtable *rt = (struct rtable *)(*pskb)->dst;
148 if (!skb_make_writable(pskb, (*pskb)->len))
152 rep_len - match_len > skb_tailroom(*pskb) &&
153 !enlarge_skb(pskb, rep_len - match_len))
156 SKB_LINEAR_ASSERT(*pskb);
158 iph = ip_hdr(*pskb);
161 oldlen = (*pskb)->len - iph->ihl*4;
162 mangle_contents(*pskb, iph->ihl*4 + tcph->doff*4,
165 datalen = (*pskb)->len - iph->ihl*4;
166 if ((*pskb)->ip_summed != CHECKSUM_PARTIAL) {
168 (*pskb)->dev->features & NETIF_F_ALL_CSUM) {
169 (*pskb)->ip_summed = CHECKSUM_PARTIAL;
170 (*pskb)->csum_start = skb_headroom(*pskb) +
171 skb_network_offset(*pskb) +
173 (*pskb)->csum_offset = offsetof(struct tcphdr, check);
184 nf_proto_csum_replace2(&tcph->check, *pskb,
193 nf_conntrack_tcp_update(*pskb, ip_hdrlen(*pskb),
201 nf_nat_mangle_udp_packet(struct sk_buff **pskb,
209 struct rtable *rt = (struct rtable *)(*pskb)->dst;
215 iph = ip_hdr(*pskb);
216 if ((*pskb)->len < iph->ihl*4 + sizeof(*udph) +
220 if (!skb_make_writable(pskb, (*pskb)->len))
224 rep_len - match_len > skb_tailroom(*pskb) &&
225 !enlarge_skb(pskb, rep_len - match_len))
228 iph = ip_hdr(*pskb);
231 oldlen = (*pskb)->len - iph->ihl*4;
232 mangle_contents(*pskb, iph->ihl*4 + sizeof(*udph),
236 datalen = (*pskb)->len - iph->ihl*4;
240 if (!udph->check && (*pskb)->ip_summed != CHECKSUM_PARTIAL)
243 if ((*pskb)->ip_summed != CHECKSUM_PARTIAL) {
245 (*pskb)->dev->features & NETIF_F_ALL_CSUM) {
246 (*pskb)->ip_summed = CHECKSUM_PARTIAL;
247 (*pskb)->csum_start = skb_headroom(*pskb) +
248 skb_network_offset(*pskb) +
250 (*pskb)->csum_offset = offsetof(struct udphdr, check);
264 nf_proto_csum_replace2(&udph->check, *pskb,
316 nf_nat_sack_adjust(struct sk_buff **pskb,
324 optoff = ip_hdrlen(*pskb) + sizeof(struct tcphdr);
325 optend = ip_hdrlen(*pskb) + tcph->doff * 4;
327 if (!skb_make_writable(pskb, optend))
334 unsigned char *op = (*pskb)->data + optoff;
351 sack_adjust(*pskb, tcph, optoff+2,
362 nf_nat_seq_adjust(struct sk_buff **pskb,
377 if (!skb_make_writable(pskb, ip_hdrlen(*pskb) + sizeof(*tcph)))
380 tcph = (void *)(*pskb)->data + ip_hdrlen(*pskb);
392 nf_proto_csum_replace4(&tcph->check, *pskb, tcph->seq, newseq, 0);
393 nf_proto_csum_replace4(&tcph->check, *pskb, tcph->ack_seq, newack, 0);
402 if (!nf_nat_sack_adjust(pskb, tcph, ct, ctinfo))
405 nf_conntrack_tcp_update(*pskb, ip_hdrlen(*pskb), ct, dir);