[SK_BUFF]: Introduce skb_network_header()
[powerpc.git] / net / ipv6 / icmp.c
index edfe98b..e5293b3 100644 (file)
@@ -68,6 +68,7 @@
 #include <asm/system.h>
 
 DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics) __read_mostly;
+EXPORT_SYMBOL(icmpv6_statistics);
 
 /*
  *     The ICMP socket(s). This is the most convenient way to flow control
@@ -205,7 +206,7 @@ static __inline__ int opt_unrec(struct sk_buff *skb, __u32 offset)
 {
        u8 _optval, *op;
 
-       offset += skb->nh.raw - skb->data;
+       offset += skb_network_offset(skb);
        op = skb_header_pointer(skb, offset, sizeof(_optval), &_optval);
        if (op == NULL)
                return 1;
@@ -283,7 +284,8 @@ static void mip6_addr_swap(struct sk_buff *skb)
        if (opt->dsthao) {
                off = ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO);
                if (likely(off >= 0)) {
-                       hao = (struct ipv6_destopt_hao *)(skb->nh.raw + off);
+                       hao = (struct ipv6_destopt_hao *)
+                                       (skb_network_header(skb) + off);
                        ipv6_addr_copy(&tmp, &iph->saddr);
                        ipv6_addr_copy(&iph->saddr, &hao->addr);
                        ipv6_addr_copy(&hao->addr, &tmp);
@@ -430,7 +432,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
                tclass = 0;
 
        msg.skb = skb;
-       msg.offset = skb->nh.raw - skb->data;
+       msg.offset = skb_network_offset(skb);
        msg.type = type;
 
        len = skb->len - msg.offset;
@@ -466,6 +468,8 @@ out:
        icmpv6_xmit_unlock();
 }
 
+EXPORT_SYMBOL(icmpv6_send);
+
 static void icmpv6_echo_reply(struct sk_buff *skb)
 {
        struct sock *sk;
@@ -865,6 +869,8 @@ int icmpv6_err_convert(int type, int code, int *err)
        return fatal;
 }
 
+EXPORT_SYMBOL(icmpv6_err_convert);
+
 #ifdef CONFIG_SYSCTL
 ctl_table ipv6_icmp_table[] = {
        {