Commit 089af26c authored by Harald Welte's avatar Harald Welte Committed by David S. Miller

[NETFILTER]: Rename skb_ip_make_writable() to skb_make_writable()

There is nothing IPv4-specific in it.  In fact, it was already used by
IPv6, too...  Upcoming nfnetlink_queue code will use it for any kind
of packet.
Signed-off-by: default avatarHarald Welte <laforge@netfilter.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 373ac735
...@@ -193,6 +193,11 @@ extern void nf_ct_attach(struct sk_buff *, struct sk_buff *); ...@@ -193,6 +193,11 @@ extern void nf_ct_attach(struct sk_buff *, struct sk_buff *);
/* FIXME: Before cache is ever used, this must be implemented for real. */ /* FIXME: Before cache is ever used, this must be implemented for real. */
extern void nf_invalidate_cache(int pf); extern void nf_invalidate_cache(int pf);
/* Call this before modifying an existing packet: ensures it is
modifiable and linear to the point you care about (writable_len).
Returns true or false. */
extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len);
#else /* !CONFIG_NETFILTER */ #else /* !CONFIG_NETFILTER */
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb) #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {} static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {}
......
...@@ -80,11 +80,6 @@ enum nf_ip_hook_priorities { ...@@ -80,11 +80,6 @@ enum nf_ip_hook_priorities {
#ifdef __KERNEL__ #ifdef __KERNEL__
extern int ip_route_me_harder(struct sk_buff **pskb); extern int ip_route_me_harder(struct sk_buff **pskb);
/* Call this before modifying an existing IP packet: ensures it is
modifiable and linear to the point you care about (writable_len).
Returns true or false. */
extern int skb_ip_make_writable(struct sk_buff **pskb,
unsigned int writable_len);
#endif /*__KERNEL__*/ #endif /*__KERNEL__*/
#endif /*__LINUX_IP_NETFILTER_H*/ #endif /*__LINUX_IP_NETFILTER_H*/
...@@ -512,8 +512,9 @@ int ip_route_me_harder(struct sk_buff **pskb) ...@@ -512,8 +512,9 @@ int ip_route_me_harder(struct sk_buff **pskb)
return 0; return 0;
} }
EXPORT_SYMBOL(ip_route_me_harder); EXPORT_SYMBOL(ip_route_me_harder);
#endif /*CONFIG_INET*/
int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len)
{ {
struct sk_buff *nskb; struct sk_buff *nskb;
...@@ -540,8 +541,7 @@ copy_skb: ...@@ -540,8 +541,7 @@ copy_skb:
*pskb = nskb; *pskb = nskb;
return 1; return 1;
} }
EXPORT_SYMBOL(skb_ip_make_writable); EXPORT_SYMBOL(skb_make_writable);
#endif /*CONFIG_INET*/
/* Internal logging interface, which relies on the real /* Internal logging interface, which relies on the real
LOG target modules */ LOG target modules */
......
...@@ -359,7 +359,7 @@ manip_pkt(u_int16_t proto, ...@@ -359,7 +359,7 @@ manip_pkt(u_int16_t proto,
struct iphdr *iph; struct iphdr *iph;
struct ip_nat_protocol *p; struct ip_nat_protocol *p;
if (!skb_ip_make_writable(pskb, iphdroff + sizeof(*iph))) if (!skb_make_writable(pskb, iphdroff + sizeof(*iph)))
return 0; return 0;
iph = (void *)(*pskb)->data + iphdroff; iph = (void *)(*pskb)->data + iphdroff;
...@@ -431,7 +431,7 @@ int icmp_reply_translation(struct sk_buff **pskb, ...@@ -431,7 +431,7 @@ int icmp_reply_translation(struct sk_buff **pskb,
struct ip_conntrack_tuple inner, target; struct ip_conntrack_tuple inner, target;
int hdrlen = (*pskb)->nh.iph->ihl * 4; int hdrlen = (*pskb)->nh.iph->ihl * 4;
if (!skb_ip_make_writable(pskb, hdrlen + sizeof(*inside))) if (!skb_make_writable(pskb, hdrlen + sizeof(*inside)))
return 0; return 0;
inside = (void *)(*pskb)->data + (*pskb)->nh.iph->ihl*4; inside = (void *)(*pskb)->data + (*pskb)->nh.iph->ihl*4;
......
...@@ -168,7 +168,7 @@ ip_nat_mangle_tcp_packet(struct sk_buff **pskb, ...@@ -168,7 +168,7 @@ ip_nat_mangle_tcp_packet(struct sk_buff **pskb,
struct tcphdr *tcph; struct tcphdr *tcph;
int datalen; int datalen;
if (!skb_ip_make_writable(pskb, (*pskb)->len)) if (!skb_make_writable(pskb, (*pskb)->len))
return 0; return 0;
if (rep_len > match_len if (rep_len > match_len
...@@ -228,7 +228,7 @@ ip_nat_mangle_udp_packet(struct sk_buff **pskb, ...@@ -228,7 +228,7 @@ ip_nat_mangle_udp_packet(struct sk_buff **pskb,
match_offset + match_len) match_offset + match_len)
return 0; return 0;
if (!skb_ip_make_writable(pskb, (*pskb)->len)) if (!skb_make_writable(pskb, (*pskb)->len))
return 0; return 0;
if (rep_len > match_len if (rep_len > match_len
...@@ -315,7 +315,7 @@ ip_nat_sack_adjust(struct sk_buff **pskb, ...@@ -315,7 +315,7 @@ ip_nat_sack_adjust(struct sk_buff **pskb,
optoff = (*pskb)->nh.iph->ihl*4 + sizeof(struct tcphdr); optoff = (*pskb)->nh.iph->ihl*4 + sizeof(struct tcphdr);
optend = (*pskb)->nh.iph->ihl*4 + tcph->doff*4; optend = (*pskb)->nh.iph->ihl*4 + tcph->doff*4;
if (!skb_ip_make_writable(pskb, optend)) if (!skb_make_writable(pskb, optend))
return 0; return 0;
dir = CTINFO2DIR(ctinfo); dir = CTINFO2DIR(ctinfo);
...@@ -363,7 +363,7 @@ ip_nat_seq_adjust(struct sk_buff **pskb, ...@@ -363,7 +363,7 @@ ip_nat_seq_adjust(struct sk_buff **pskb,
this_way = &ct->nat.info.seq[dir]; this_way = &ct->nat.info.seq[dir];
other_way = &ct->nat.info.seq[!dir]; other_way = &ct->nat.info.seq[!dir];
if (!skb_ip_make_writable(pskb, (*pskb)->nh.iph->ihl*4+sizeof(*tcph))) if (!skb_make_writable(pskb, (*pskb)->nh.iph->ihl*4+sizeof(*tcph)))
return 0; return 0;
tcph = (void *)(*pskb)->data + (*pskb)->nh.iph->ihl*4; tcph = (void *)(*pskb)->data + (*pskb)->nh.iph->ihl*4;
......
...@@ -62,7 +62,7 @@ icmp_manip_pkt(struct sk_buff **pskb, ...@@ -62,7 +62,7 @@ icmp_manip_pkt(struct sk_buff **pskb,
struct icmphdr *hdr; struct icmphdr *hdr;
unsigned int hdroff = iphdroff + iph->ihl*4; unsigned int hdroff = iphdroff + iph->ihl*4;
if (!skb_ip_make_writable(pskb, hdroff + sizeof(*hdr))) if (!skb_make_writable(pskb, hdroff + sizeof(*hdr)))
return 0; return 0;
hdr = (struct icmphdr *)((*pskb)->data + hdroff); hdr = (struct icmphdr *)((*pskb)->data + hdroff);
......
...@@ -103,7 +103,7 @@ tcp_manip_pkt(struct sk_buff **pskb, ...@@ -103,7 +103,7 @@ tcp_manip_pkt(struct sk_buff **pskb,
if ((*pskb)->len >= hdroff + sizeof(struct tcphdr)) if ((*pskb)->len >= hdroff + sizeof(struct tcphdr))
hdrsize = sizeof(struct tcphdr); hdrsize = sizeof(struct tcphdr);
if (!skb_ip_make_writable(pskb, hdroff + hdrsize)) if (!skb_make_writable(pskb, hdroff + hdrsize))
return 0; return 0;
iph = (struct iphdr *)((*pskb)->data + iphdroff); iph = (struct iphdr *)((*pskb)->data + iphdroff);
......
...@@ -94,7 +94,7 @@ udp_manip_pkt(struct sk_buff **pskb, ...@@ -94,7 +94,7 @@ udp_manip_pkt(struct sk_buff **pskb,
u32 oldip, newip; u32 oldip, newip;
u16 *portptr, newport; u16 *portptr, newport;
if (!skb_ip_make_writable(pskb, hdroff + sizeof(*hdr))) if (!skb_make_writable(pskb, hdroff + sizeof(*hdr)))
return 0; return 0;
iph = (struct iphdr *)((*pskb)->data + iphdroff); iph = (struct iphdr *)((*pskb)->data + iphdroff);
......
...@@ -1275,7 +1275,7 @@ static int help(struct sk_buff **pskb, ...@@ -1275,7 +1275,7 @@ static int help(struct sk_buff **pskb,
return NF_DROP; return NF_DROP;
} }
if (!skb_ip_make_writable(pskb, (*pskb)->len)) if (!skb_make_writable(pskb, (*pskb)->len))
return NF_DROP; return NF_DROP;
spin_lock_bh(&snmp_lock); spin_lock_bh(&snmp_lock);
......
...@@ -388,7 +388,7 @@ ipq_mangle_ipv4(ipq_verdict_msg_t *v, struct ipq_queue_entry *e) ...@@ -388,7 +388,7 @@ ipq_mangle_ipv4(ipq_verdict_msg_t *v, struct ipq_queue_entry *e)
} }
skb_put(e->skb, diff); skb_put(e->skb, diff);
} }
if (!skb_ip_make_writable(&e->skb, v->data_len)) if (!skb_make_writable(&e->skb, v->data_len))
return -ENOMEM; return -ENOMEM;
memcpy(e->skb->data, v->payload, v->data_len); memcpy(e->skb->data, v->payload, v->data_len);
e->skb->ip_summed = CHECKSUM_NONE; e->skb->ip_summed = CHECKSUM_NONE;
......
...@@ -39,7 +39,7 @@ target(struct sk_buff **pskb, ...@@ -39,7 +39,7 @@ target(struct sk_buff **pskb,
if (((*pskb)->nh.iph->tos & IPT_DSCP_MASK) != sh_dscp) { if (((*pskb)->nh.iph->tos & IPT_DSCP_MASK) != sh_dscp) {
u_int16_t diffs[2]; u_int16_t diffs[2];
if (!skb_ip_make_writable(pskb, sizeof(struct iphdr))) if (!skb_make_writable(pskb, sizeof(struct iphdr)))
return NF_DROP; return NF_DROP;
diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF; diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF;
......
...@@ -31,7 +31,7 @@ set_ect_ip(struct sk_buff **pskb, const struct ipt_ECN_info *einfo) ...@@ -31,7 +31,7 @@ set_ect_ip(struct sk_buff **pskb, const struct ipt_ECN_info *einfo)
!= (einfo->ip_ect & IPT_ECN_IP_MASK)) { != (einfo->ip_ect & IPT_ECN_IP_MASK)) {
u_int16_t diffs[2]; u_int16_t diffs[2];
if (!skb_ip_make_writable(pskb, sizeof(struct iphdr))) if (!skb_make_writable(pskb, sizeof(struct iphdr)))
return 0; return 0;
diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF; diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF;
...@@ -66,7 +66,7 @@ set_ect_tcp(struct sk_buff **pskb, const struct ipt_ECN_info *einfo, int inward) ...@@ -66,7 +66,7 @@ set_ect_tcp(struct sk_buff **pskb, const struct ipt_ECN_info *einfo, int inward)
tcph->cwr == einfo->proto.tcp.cwr))) tcph->cwr == einfo->proto.tcp.cwr)))
return 1; return 1;
if (!skb_ip_make_writable(pskb, (*pskb)->nh.iph->ihl*4+sizeof(*tcph))) if (!skb_make_writable(pskb, (*pskb)->nh.iph->ihl*4+sizeof(*tcph)))
return 0; return 0;
tcph = (void *)(*pskb)->nh.iph + (*pskb)->nh.iph->ihl*4; tcph = (void *)(*pskb)->nh.iph + (*pskb)->nh.iph->ihl*4;
......
...@@ -58,7 +58,7 @@ ipt_tcpmss_target(struct sk_buff **pskb, ...@@ -58,7 +58,7 @@ ipt_tcpmss_target(struct sk_buff **pskb,
unsigned int i; unsigned int i;
u_int8_t *opt; u_int8_t *opt;
if (!skb_ip_make_writable(pskb, (*pskb)->len)) if (!skb_make_writable(pskb, (*pskb)->len))
return NF_DROP; return NF_DROP;
if ((*pskb)->ip_summed == CHECKSUM_HW && if ((*pskb)->ip_summed == CHECKSUM_HW &&
......
...@@ -33,7 +33,7 @@ target(struct sk_buff **pskb, ...@@ -33,7 +33,7 @@ target(struct sk_buff **pskb,
if (((*pskb)->nh.iph->tos & IPTOS_TOS_MASK) != tosinfo->tos) { if (((*pskb)->nh.iph->tos & IPTOS_TOS_MASK) != tosinfo->tos) {
u_int16_t diffs[2]; u_int16_t diffs[2];
if (!skb_ip_make_writable(pskb, sizeof(struct iphdr))) if (!skb_make_writable(pskb, sizeof(struct iphdr)))
return NF_DROP; return NF_DROP;
diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF; diffs[0] = htons((*pskb)->nh.iph->tos) ^ 0xFFFF;
......
...@@ -384,7 +384,7 @@ ipq_mangle_ipv6(ipq_verdict_msg_t *v, struct ipq_queue_entry *e) ...@@ -384,7 +384,7 @@ ipq_mangle_ipv6(ipq_verdict_msg_t *v, struct ipq_queue_entry *e)
} }
skb_put(e->skb, diff); skb_put(e->skb, diff);
} }
if (!skb_ip_make_writable(&e->skb, v->data_len)) if (!skb_make_writable(&e->skb, v->data_len))
return -ENOMEM; return -ENOMEM;
memcpy(e->skb->data, v->payload, v->data_len); memcpy(e->skb->data, v->payload, v->data_len);
e->skb->ip_summed = CHECKSUM_NONE; e->skb->ip_summed = CHECKSUM_NONE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment