|
@@ -916,9 +916,6 @@ static int __svc_register(struct net *net, const char *progname,
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
- if (error < 0)
|
|
|
|
- printk(KERN_WARNING "svc: failed to register %sv%u RPC "
|
|
|
|
- "service (errno %d).\n", progname, version, -error);
|
|
|
|
return error;
|
|
return error;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -937,6 +934,7 @@ int svc_register(const struct svc_serv *serv, struct net *net,
|
|
const unsigned short port)
|
|
const unsigned short port)
|
|
{
|
|
{
|
|
struct svc_program *progp;
|
|
struct svc_program *progp;
|
|
|
|
+ struct svc_version *vers;
|
|
unsigned int i;
|
|
unsigned int i;
|
|
int error = 0;
|
|
int error = 0;
|
|
|
|
|
|
@@ -946,7 +944,8 @@ int svc_register(const struct svc_serv *serv, struct net *net,
|
|
|
|
|
|
for (progp = serv->sv_program; progp; progp = progp->pg_next) {
|
|
for (progp = serv->sv_program; progp; progp = progp->pg_next) {
|
|
for (i = 0; i < progp->pg_nvers; i++) {
|
|
for (i = 0; i < progp->pg_nvers; i++) {
|
|
- if (progp->pg_vers[i] == NULL)
|
|
|
|
|
|
+ vers = progp->pg_vers[i];
|
|
|
|
+ if (vers == NULL)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
dprintk("svc: svc_register(%sv%d, %s, %u, %u)%s\n",
|
|
dprintk("svc: svc_register(%sv%d, %s, %u, %u)%s\n",
|
|
@@ -955,16 +954,26 @@ int svc_register(const struct svc_serv *serv, struct net *net,
|
|
proto == IPPROTO_UDP? "udp" : "tcp",
|
|
proto == IPPROTO_UDP? "udp" : "tcp",
|
|
port,
|
|
port,
|
|
family,
|
|
family,
|
|
- progp->pg_vers[i]->vs_hidden?
|
|
|
|
- " (but not telling portmap)" : "");
|
|
|
|
|
|
+ vers->vs_hidden ?
|
|
|
|
+ " (but not telling portmap)" : "");
|
|
|
|
|
|
- if (progp->pg_vers[i]->vs_hidden)
|
|
|
|
|
|
+ if (vers->vs_hidden)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
error = __svc_register(net, progp->pg_name, progp->pg_prog,
|
|
error = __svc_register(net, progp->pg_name, progp->pg_prog,
|
|
i, family, proto, port);
|
|
i, family, proto, port);
|
|
- if (error < 0)
|
|
|
|
|
|
+
|
|
|
|
+ if (vers->vs_rpcb_optnl) {
|
|
|
|
+ error = 0;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (error < 0) {
|
|
|
|
+ printk(KERN_WARNING "svc: failed to register "
|
|
|
|
+ "%sv%u RPC service (errno %d).\n",
|
|
|
|
+ progp->pg_name, i, -error);
|
|
break;
|
|
break;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|