xref: /openbmc/linux/net/sunrpc/sunrpc_syms.c (revision 2f72c9b7)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * linux/net/sunrpc/sunrpc_syms.c
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Symbols exported by the sunrpc module.
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  * Copyright (C) 1997 Olaf Kirch <okir@monad.swb.de>
71da177e4SLinus Torvalds  */
81da177e4SLinus Torvalds 
91da177e4SLinus Torvalds #include <linux/module.h>
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #include <linux/types.h>
121da177e4SLinus Torvalds #include <linux/uio.h>
131da177e4SLinus Torvalds #include <linux/unistd.h>
141da177e4SLinus Torvalds #include <linux/init.h>
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds #include <linux/sunrpc/sched.h>
171da177e4SLinus Torvalds #include <linux/sunrpc/clnt.h>
181da177e4SLinus Torvalds #include <linux/sunrpc/svc.h>
191da177e4SLinus Torvalds #include <linux/sunrpc/svcsock.h>
201da177e4SLinus Torvalds #include <linux/sunrpc/auth.h>
211da177e4SLinus Torvalds #include <linux/workqueue.h>
221da177e4SLinus Torvalds #include <linux/sunrpc/rpc_pipe_fs.h>
2349c36fccS\"Talpey, Thomas\ #include <linux/sunrpc/xprtsock.h>
241da177e4SLinus Torvalds 
252f72c9b7SPavel Emelyanov #include "netns.h"
262f72c9b7SPavel Emelyanov 
272f72c9b7SPavel Emelyanov int sunrpc_net_id;
282f72c9b7SPavel Emelyanov 
292f72c9b7SPavel Emelyanov static __net_init int sunrpc_init_net(struct net *net)
302f72c9b7SPavel Emelyanov {
312f72c9b7SPavel Emelyanov 	return 0;
322f72c9b7SPavel Emelyanov }
332f72c9b7SPavel Emelyanov 
342f72c9b7SPavel Emelyanov static __net_exit void sunrpc_exit_net(struct net *net)
352f72c9b7SPavel Emelyanov {
362f72c9b7SPavel Emelyanov }
372f72c9b7SPavel Emelyanov 
382f72c9b7SPavel Emelyanov static struct pernet_operations sunrpc_net_ops = {
392f72c9b7SPavel Emelyanov 	.init = sunrpc_init_net,
402f72c9b7SPavel Emelyanov 	.exit = sunrpc_exit_net,
412f72c9b7SPavel Emelyanov 	.id = &sunrpc_net_id,
422f72c9b7SPavel Emelyanov 	.size = sizeof(struct sunrpc_net),
432f72c9b7SPavel Emelyanov };
442f72c9b7SPavel Emelyanov 
453fc605a2SNeilBrown extern struct cache_detail ip_map_cache, unix_gid_cache;
461da177e4SLinus Torvalds 
47c526611dSChuck Lever extern void cleanup_rpcb_clnt(void);
48c526611dSChuck Lever 
491da177e4SLinus Torvalds static int __init
501da177e4SLinus Torvalds init_sunrpc(void)
511da177e4SLinus Torvalds {
521da177e4SLinus Torvalds 	int err = register_rpc_pipefs();
531da177e4SLinus Torvalds 	if (err)
541da177e4SLinus Torvalds 		goto out;
555bd5f581SAkinobu Mita 	err = rpc_init_mempool();
565d8d9a4dSTrond Myklebust 	if (err)
575d8d9a4dSTrond Myklebust 		goto out2;
585d8d9a4dSTrond Myklebust 	err = rpcauth_init_module();
595d8d9a4dSTrond Myklebust 	if (err)
605d8d9a4dSTrond Myklebust 		goto out3;
612f72c9b7SPavel Emelyanov 
622f72c9b7SPavel Emelyanov 	cache_initialize();
632f72c9b7SPavel Emelyanov 
642f72c9b7SPavel Emelyanov 	err = register_pernet_subsys(&sunrpc_net_ops);
652f72c9b7SPavel Emelyanov 	if (err)
662f72c9b7SPavel Emelyanov 		goto out4;
671da177e4SLinus Torvalds #ifdef RPC_DEBUG
681da177e4SLinus Torvalds 	rpc_register_sysctl();
691da177e4SLinus Torvalds #endif
701da177e4SLinus Torvalds #ifdef CONFIG_PROC_FS
711da177e4SLinus Torvalds 	rpc_proc_init();
721da177e4SLinus Torvalds #endif
731da177e4SLinus Torvalds 	cache_register(&ip_map_cache);
743fc605a2SNeilBrown 	cache_register(&unix_gid_cache);
75360d8738STom Tucker 	svc_init_xprt_sock();	/* svc sock transport */
76360d8738STom Tucker 	init_socket_xprt();	/* clnt sock transport */
775d8d9a4dSTrond Myklebust 	return 0;
782f72c9b7SPavel Emelyanov 
792f72c9b7SPavel Emelyanov out4:
802f72c9b7SPavel Emelyanov 	rpcauth_remove_module();
815d8d9a4dSTrond Myklebust out3:
825d8d9a4dSTrond Myklebust 	rpc_destroy_mempool();
835d8d9a4dSTrond Myklebust out2:
845d8d9a4dSTrond Myklebust 	unregister_rpc_pipefs();
851da177e4SLinus Torvalds out:
861da177e4SLinus Torvalds 	return err;
871da177e4SLinus Torvalds }
881da177e4SLinus Torvalds 
891da177e4SLinus Torvalds static void __exit
901da177e4SLinus Torvalds cleanup_sunrpc(void)
911da177e4SLinus Torvalds {
92c526611dSChuck Lever 	cleanup_rpcb_clnt();
93f5c2187cSTrond Myklebust 	rpcauth_remove_module();
94282b32e1SChuck Lever 	cleanup_socket_xprt();
95360d8738STom Tucker 	svc_cleanup_xprt_sock();
961da177e4SLinus Torvalds 	unregister_rpc_pipefs();
971da177e4SLinus Torvalds 	rpc_destroy_mempool();
98df95a9d4SJ. Bruce Fields 	cache_unregister(&ip_map_cache);
99df95a9d4SJ. Bruce Fields 	cache_unregister(&unix_gid_cache);
1002f72c9b7SPavel Emelyanov 	unregister_pernet_subsys(&sunrpc_net_ops);
1011da177e4SLinus Torvalds #ifdef RPC_DEBUG
1021da177e4SLinus Torvalds 	rpc_unregister_sysctl();
1031da177e4SLinus Torvalds #endif
1041da177e4SLinus Torvalds #ifdef CONFIG_PROC_FS
1051da177e4SLinus Torvalds 	rpc_proc_exit();
1061da177e4SLinus Torvalds #endif
10775de874fSJesper Dangaard Brouer 	rcu_barrier(); /* Wait for completion of call_rcu()'s */
1081da177e4SLinus Torvalds }
1091da177e4SLinus Torvalds MODULE_LICENSE("GPL");
110405d8f8bSTrond Myklebust fs_initcall(init_sunrpc); /* Ensure we're initialised before nfs */
1111da177e4SLinus Torvalds module_exit(cleanup_sunrpc);
112