ipv6: Export ipv6 functions for use by other protocols
authorChris Elston <celston@katalix.com>
Sun, 29 Apr 2012 21:48:53 +0000 (21:48 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 May 2012 13:30:55 +0000 (09:30 -0400)
For implementing other protocols on top of IPv6, such as L2TPv3's IP
encapsulation over ipv6, we'd like to call some IPv6 functions which
are not currently exported. This patch exports them.

Signed-off-by: Chris Elston <celston@katalix.com>
Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/datagram.c
net/ipv6/exthdrs.c
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_output.c

index 7fba35aea06c6cc11b627f7e8e649ba16df8476d..b8b61ac88bc27742d1a28a28420c08ec6a6bbc61 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/ipv6.h>
 #include <linux/route.h>
 #include <linux/slab.h>
+#include <linux/export.h>
 
 #include <net/ipv6.h>
 #include <net/ndisc.h>
@@ -202,6 +203,7 @@ out:
        fl6_sock_release(flowlabel);
        return err;
 }
+EXPORT_SYMBOL_GPL(ip6_datagram_connect);
 
 void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err,
                     __be16 port, u32 info, u8 *payload)
@@ -414,6 +416,7 @@ out_free_skb:
 out:
        return err;
 }
+EXPORT_SYMBOL_GPL(ipv6_recv_error);
 
 /*
  *     Handle IPV6_RECVPATHMTU
@@ -868,3 +871,4 @@ int datagram_send_ctl(struct net *net, struct sock *sk,
 exit_f:
        return err;
 }
+EXPORT_SYMBOL_GPL(datagram_send_ctl);
index aa0a51e64682ac4a9e8db3aa9e57f1c02f227f66..a93bd231eca141b5dc4b0699f134b83d08fbfa68 100644 (file)
@@ -883,6 +883,7 @@ struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,
 
        return opt;
 }
+EXPORT_SYMBOL_GPL(ipv6_fixup_options);
 
 /**
  * fl6_update_dst - update flowi destination address with info given
index 1dd632971bce3676bcc13b957144af2a4bddc34a..cb43df690210196d52fb1932e003ad0967aa9028 100644 (file)
@@ -294,6 +294,7 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions * opt_space,
        opt_space->opt_flen = fopt->opt_flen;
        return opt_space;
 }
+EXPORT_SYMBOL_GPL(fl6_merge_options);
 
 static unsigned long check_linger(unsigned long ttl)
 {
index b347062aa8090fa7a0dd7f4d78b82c5bb9078d07..d8e05af2c4bb0745823db6cfa37933a3f0269b8b 100644 (file)
@@ -1535,6 +1535,7 @@ error:
        IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
        return err;
 }
+EXPORT_SYMBOL_GPL(ip6_append_data);
 
 static void ip6_cork_release(struct inet_sock *inet, struct ipv6_pinfo *np)
 {
@@ -1638,6 +1639,7 @@ error:
        IP6_INC_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
        goto out;
 }
+EXPORT_SYMBOL_GPL(ip6_push_pending_frames);
 
 void ip6_flush_pending_frames(struct sock *sk)
 {
@@ -1652,3 +1654,4 @@ void ip6_flush_pending_frames(struct sock *sk)
 
        ip6_cork_release(inet_sk(sk), inet6_sk(sk));
 }
+EXPORT_SYMBOL_GPL(ip6_flush_pending_frames);