#include <rpc/rpc.h> #include <netconfig.h> bool_t rpcb_set(const u_long prognum, const u_long versnum, const struct netconfig *netconf, const struct netbuf *svcaddr);
The rpcb_set() function is an interface to the RPC service package (RPCBind) daemon. The function establishes a mapping between the triple (prognum, versnum, netconf->nc_netid) and svcaddr on the machine's RPCBind service. The value of netconf->nc_netid must correspond to a network identifier that is defined by the netconfig database.
No authorization is required.
TRUE (1) | rpcb_set was successful. |
FALSE (0) | rpcb_set was unsuccessful. |
Upon failure, rpcb_set() sets the global structure rpc_createerr. The rpc_createerr.cf_stat variable contains a status value, which indicates the error reason. The rpc_createerr.cf_error.re_errno variable is meaningful when some status values are set.
The rpc_createerr.cf_stat variable can be set to one of the following values:
[RPC_INTR] | Interrupted RPC call. An exception has occurred in the RPC API. The rpc_createerr.cf_error.re_errno is set to EUNKNOWN. |
[RPC_N2AXLATEFAILURE] | Name to address translation failed. |
[RPC_RPCBFAILURE] | Unable to contact the RPCBind daemon. |
[RPC_UNKNOWNADDR] | Unknown address. The svcaddr is invalid. |
[RPC_UNKNOWNADDR] | Unknown remote address. The rpc_createerr.cf_error.re_errno variable is not applicable. |
[RPC_UNKNOWNPROTO] | Unknown client/server protocol. The rpc_createerr.cf_error.re_errno variable is not applicable. |
This API calls clnt_tli_create() and clnt_call() APIs in order to perform its task. It inherits RPC_SYSTEMERROR from clnt_tli_create() API and it inherits all error conditions from clnt_call() API except RPC_TIMEDOUT and RPC_FAILED.
Message ID | Error Message Text |
---|---|
CPIA1B1 I | A problem was encountered in the RPC client. |
CPIA1B2 I | TI-RPC encountered a problem in the transport protocol. |
CPIA1B8 I | A problem occurred while trying to contact the RPCBind daemon. |
CPE3418 E | Possible APAR condition or hardware failure. |
CPF3CF2 E | Error(s) occurred during running of &1 API. |
CPF9872 E | Program or service program &1 in library &2 ended. Reason code &3. |
See Code disclaimer information for information pertaining to code examples.
The following example shows how rpcb_set() is used:
/* Define remote program number and version */ #define RMTPROGNUM (u_long)0x3fffffffL #define RMTPROGVER (u_long)0x1 #include <stdio.h> #include <rpc/rpc.h> #include <netconfig.h> main() { struct netconfig *nconf; struct netbuf *svcaddr; ... /* Returns a pointer to nconf corresponding to NETCONF */ if ((nconf = getnetconfigent("UDP")) == (struct netconfig *)NULL) { fprintf(stderr, "Cannot get netconfig entry for UDP\n"); exit(1); } ... /* Register to the RPCBind */ if (!rpcb_set(RMTPROGNUM, RMTPROGVER, nconf, svcaddr)){ fprintf(stderr, "rpcb_set failed!!\n"); exit(1); } ... }
Top | Remote Procedure Call (RPC) APIs | APIs by category |