diff options
Diffstat (limited to 'net/sunrpc/svc.c')
| -rw-r--r-- | net/sunrpc/svc.c | 35 |
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 | ||
| 357 | static 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 | |||
| 370 | static void svc_rpcb_cleanup(struct svc_serv *serv) | ||
| 371 | { | ||
| 372 | svc_unregister(serv); | ||
| 373 | rpcb_put_local(); | ||
| 374 | } | ||
| 375 | |||
| 376 | static 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 |
