Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipv6: Export ipv6 functions for use by other protocols

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>

authored by

Chris Elston and committed by
David S. Miller
a495f836 f9bac8df

+9
+4
net/ipv6/datagram.c
··· 22 22 #include <linux/ipv6.h> 23 23 #include <linux/route.h> 24 24 #include <linux/slab.h> 25 + #include <linux/export.h> 25 26 26 27 #include <net/ipv6.h> 27 28 #include <net/ndisc.h> ··· 203 202 fl6_sock_release(flowlabel); 204 203 return err; 205 204 } 205 + EXPORT_SYMBOL_GPL(ip6_datagram_connect); 206 206 207 207 void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, 208 208 __be16 port, u32 info, u8 *payload) ··· 416 414 out: 417 415 return err; 418 416 } 417 + EXPORT_SYMBOL_GPL(ipv6_recv_error); 419 418 420 419 /* 421 420 * Handle IPV6_RECVPATHMTU ··· 871 868 exit_f: 872 869 return err; 873 870 } 871 + EXPORT_SYMBOL_GPL(datagram_send_ctl);
+1
net/ipv6/exthdrs.c
··· 883 883 884 884 return opt; 885 885 } 886 + EXPORT_SYMBOL_GPL(ipv6_fixup_options); 886 887 887 888 /** 888 889 * fl6_update_dst - update flowi destination address with info given
+1
net/ipv6/ip6_flowlabel.c
··· 294 294 opt_space->opt_flen = fopt->opt_flen; 295 295 return opt_space; 296 296 } 297 + EXPORT_SYMBOL_GPL(fl6_merge_options); 297 298 298 299 static unsigned long check_linger(unsigned long ttl) 299 300 {
+3
net/ipv6/ip6_output.c
··· 1535 1535 IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS); 1536 1536 return err; 1537 1537 } 1538 + EXPORT_SYMBOL_GPL(ip6_append_data); 1538 1539 1539 1540 static void ip6_cork_release(struct inet_sock *inet, struct ipv6_pinfo *np) 1540 1541 { ··· 1639 1638 IP6_INC_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS); 1640 1639 goto out; 1641 1640 } 1641 + EXPORT_SYMBOL_GPL(ip6_push_pending_frames); 1642 1642 1643 1643 void ip6_flush_pending_frames(struct sock *sk) 1644 1644 { ··· 1654 1652 1655 1653 ip6_cork_release(inet_sk(sk), inet6_sk(sk)); 1656 1654 } 1655 + EXPORT_SYMBOL_GPL(ip6_flush_pending_frames);