Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP6
libtirpc.24711
0001-rpcb_clnt.c-config-to-try-protocolversion-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-rpcb_clnt.c-config-to-try-protocolversion-2-first.patch of Package libtirpc.24711
Index: libtirpc-1.2.6/man/Makefile.am =================================================================== --- libtirpc-1.2.6.orig/man/Makefile.am +++ libtirpc-1.2.6/man/Makefile.am @@ -16,6 +16,7 @@ RPCSEC_MANS = rpcsec_gss.3t rpc_gss_get rpc_gss_get_principal_name.3t rpc_gss_set_callback.3t \ rpc_gss_set_svc_name.3t rpc_gss_svc_max_data_length.3t +dist_man7_MANS = netconfig-try-2-first.7 dist_man5_MANS = netconfig.5 dist_man3_MANS = $(LOOKUP_MANS) $(NETCONFIG_MANS) \ $(BIND_MANS) $(GENERIC_MANS) $(COMPAT_MANS) \ Index: libtirpc-1.2.6/man/netconfig-try-2-first.7 =================================================================== --- /dev/null +++ libtirpc-1.2.6/man/netconfig-try-2-first.7 @@ -0,0 +1,18 @@ +.Dd January 16, 2019 +.Dt NETCONFIG-TRY-2-FIRST 7 +.Os +.Sh NAME +.Nm netconfig-try-2-first +.Nd indicator to enfore tcp protocol version 2 +.Sh SYNOPSIS +.Pa /etc/netconfig-try-2-first +.Sh DESCRIPTION +libtirpc tries per default for transport UDP and TCP the rpc protocol versions +in the sequence 4, 3, 2. +In some setups, it is necessary to try rpc protocol version 2 first. +Creating the file +.Nm +will enforce this. +.Ed +.Sh FILES +/etc/netconfig-try-2-first Index: libtirpc-1.2.6/man/netconfig.5 =================================================================== --- libtirpc-1.2.6.orig/man/netconfig.5 +++ libtirpc-1.2.6/man/netconfig.5 @@ -119,5 +119,6 @@ struct netconfig { .It Pa /etc/netconfig .El .Sh SEE ALSO +.Xr netconfig-try-2-first 7 , .Xr getnetconfig 3 , .Xr getnetpath 3 Index: libtirpc-1.2.6/src/rpcb_clnt.c =================================================================== --- libtirpc-1.2.6.orig/src/rpcb_clnt.c +++ libtirpc-1.2.6/src/rpcb_clnt.c @@ -32,6 +32,7 @@ */ #include <pthread.h> #include <reentrant.h> +#include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> @@ -839,6 +840,9 @@ __rpcb_findaddr_timed(program, version, #ifdef NOTUSED static bool_t check_rpcbind = TRUE; #endif +#ifdef PORTMAP + bool_t portmap_first = FALSE; +#endif CLIENT *client = NULL; RPCB parms; enum clnt_stat clnt_st; @@ -884,6 +888,18 @@ __rpcb_findaddr_timed(program, version, parms.r_addr = NULL; } +#ifdef PORTMAP + /*enforce protocol version 2 if file exists */ + struct stat fileStat; + + if (stat("/etc/netconfig-try-2-first" ,&fileStat) == 0 && + strcmp(nconf->nc_protofmly, NC_INET) == 0) { + portmap_first = TRUE; + goto portmap; + } +#endif + +rpcbind: if (client == NULL) { client = getclnthandle(host, nconf, &parms.r_addr); if (client == NULL) { @@ -943,17 +959,26 @@ __rpcb_findaddr_timed(program, version, } } + if (portmap_first) { + goto check_address; + } + +portmap: #ifdef PORTMAP /* Try version 2 for TCP or UDP */ if (strcmp(nconf->nc_protofmly, NC_INET) == 0) { address = __try_protocol_version_2(program, version, nconf, host, tp); - if (address == NULL) + if (address == NULL && portmap_first) + goto rpcbind; + else goto error; } #endif /* PORTMAP */ +check_address: if ((address == NULL) || (address->len == 0)) { - rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED; - clnt_geterr(client, &rpc_createerr.cf_error); + rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED; + if (client) + clnt_geterr(client, &rpc_createerr.cf_error); } error:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor