aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svc.c
diff options
context:
space:
mode:
authorStanislav Kinsbursky <skinsbursky@parallels.com>2011-10-25 07:16:58 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-10-25 07:18:05 -0400
commitd99085605cd245d8f24858e9d0b06013e13aa044 (patch)
tree267911a05e429edd0a5628228d42721bace2ebfd /net/sunrpc/svc.c
parent253fb070e78db981740b000914b04b9203092925 (diff)
SUNRPC: introduce svc helpers for prepairing rpcbind infrastructure
This helpers will be used only for those services, that will send portmapper registration calls. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/svc.c')
-rw-r--r--net/sunrpc/svc.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 6a69a1131fb7..d2d61bfa3306 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -354,6 +354,41 @@ svc_pool_for_cpu(struct svc_serv *serv, int cpu)
354 return &serv->sv_pools[pidx % serv->sv_nrpools]; 354 return &serv->sv_pools[pidx % serv->sv_nrpools];
355} 355}
356 356
357static int svc_rpcb_setup(struct svc_serv *serv)
358{
359 int err;
360
361 err = rpcb_create_local();
362 if (err)
363 return err;
364
365 /* Remove any stale portmap registrations */
366 svc_unregister(serv);
367 return 0;
368}
369
370static void svc_rpcb_cleanup(struct svc_serv *serv)
371{
372 svc_unregister(serv);
373 rpcb_put_local();
374}
375
376static int svc_uses_rpcbind(struct svc_serv *serv)
377{
378 struct svc_program *progp;
379 unsigned int i;
380
381 for (progp = serv->sv_program; progp; progp = progp->pg_next) {
382 for (i = 0; i < progp->pg_nvers; i++) {
383 if (progp->pg_vers[i] == NULL)
384 continue;
385 if (progp->pg_vers[i]->vs_hidden == 0)
386 return 1;
387 }
388 }
389
390 return 0;
391}
357 392
358/* 393/*
359 * Create an RPC service 394 * Create an RPC service