Purpose
Maps a remote procedure call to a port.
Library
C Library (libc.a)
Syntax
#include <rpc/rpc.h>
pmap_set (prognum, versnum, protocol, port)
u_long prognum, versnum, protocol;
u_short port;
Description
The pmap_set subroutine acts as a user interface to the portmap daemon to map the program number, version number, and protocol of a remote procedure call to a port on the machine portmap daemon.
Parameters
Item | Description |
---|---|
prognum | Specifies the program number of the remote program. |
versnum | Specifies the version number of the remote program. |
protocol | Specifies the transport protocol that the service recognizes. The values for this parameter can be IPPROTO_UDP or IPPROTO_TCP. |
port | Specifies the port on the machine's portmap daemon. |
Return Values
Upon successful completion, this routine returns a value of 1. If unsuccessful, it returns a value of 0.
Purpose
Creates a mapping of the triplet (the program, version, and protocol) to a port.
Library
Network Services Library (libnsl.a)
Syntax
#include <rpc/rpc.h>
bool_t pmap_set (prognum, versnum, protocol, port)
rpcprog_t prognum;
rpcvers_t versnum;
rpcprot_t protocol;
u_short port;
Description
The pmap_set subroutine acts as a user interface to the portmap daemon to map the program number, version number, and protocol of a remote procedure call to a port on the machine portmap daemon. The pmap_set subroutine is called by the svc_register subroutine.
Parameters
Item | Description |
---|---|
prognum | Specifies the program number of the remote program. |
versnum | Specifies the version number of the remote program. |
protocol | Specifies the transport protocol that the service recognizes. The values for this parameter can be IPPROTO_UDP or IPPROTO_TCP. |
port | Specifies the port on the portmap daemon of the machine. |
Return Values
Item | Description |
---|---|
1 | successful |
0 | unsuccessful |
Examples
#include <rpc/rpc.h>
u_short get_free_port(void)
{
/* Code to obtain a free port */
}
int main()
{
u_short port = 0;
rpcprog_t PROGNUM = 0x3ffffff0L;
rpcvers_t PROGVER = 0x1L;
/* Obtain a free port */
port = get_free_port();
/* Set the mapping between triplet [PROGNUM,PROGVER,PROTOCOL] and port */
if (pmap_set(PROGNUM, PROGVER, IPPROTO_TCP, port) == 0)
{
printf("pmap_set() failed");
exit(1);
}
return 0;
}