pmap_getport Subroutine

Important: The subroutine is exported from both the libc and the libnsl libraries.

pmap_getport Subroutine Exported from the libc Library

Purpose

Requests the port number on which a service waits.

Library

C Library (libc.a)

Syntax

#include <rpc/rpc.h>

u_short pmap_getport (addr, prognum, versnum, protocol)
struct sockaddr_in * addr;
u_long  prognum,  versnum,  protocol;

Description

The pmap_getport subroutine acts as a user interface to the portmap daemon in order to return the port number on which a service waits.

Parameters

Item Description
addr Points to the Internet Protocol (IP) address of the host where the remote program supporting the waiting service resides.
prognum Specifies the program number of the remote program.
versnum Specifies the version number of the remote program.
protocol Specifies the transport protocol the service recognizes.

Return Values

Upon successful completion, the pmap_getport subroutine returns the port number of the requested program; otherwise, if the mapping does not exist or the Remote Procedure Call (RPC) system could not contact the remote portmap daemon, this subroutine returns a value of 0. If the remote portmap daemon could not be contacted, the rpc_createerr subroutine contains the RPC status.

pmap_getport Subroutine Exported from the libnsl Library

Purpose

Requests the port number on which a service waits.

Library

Network Services Library (libnsl.a)

Syntax

#include <rpc/rpc.h>
u_short pmap_getport (addr, prognum, versnum, protocol)
struct sockaddr_in * addr;
rpcprog_t prognum;
rpcvers_t versnum;
rpcprot_t protocol;

Description

The pmap_getport subroutine acts as a user interface to the portmap daemon in order to return the port number on which a service waits.

Parameters

Item Description
addr Points to the Internet Protocol (IP) address of the host where the remote program supporting the waiting service resides.
prognum Specifies the program number of the remote program.
versnum Specifies the version number of the remote program.
protocol Specifies the transport protocol the service recognizes, which can be IPPROTO_TCP or IPPROTO_UDP.

Return Values

Upon successful completion, the pmap_getport subroutine returns the port number of the requested program; otherwise, if the mapping does not exist or the Remote Procedure Call (RPC) system could not contact the remote portmap daemon, this subroutine returns a value of 0. If the remote portmap daemon could not be contacted, the rpc_createerr subroutine contains the RPC status.

Examples

#include <rpc/rpc.h>
int main()
{
  struct sockaddr_in addr;
  u_short   port    = 0;
  rpcprog_t PROGNUM = 0x3ffffff0L;
  rpcvers_t PROGVER = 0x1L;
  struct hostent *hp;
  char hostname[255]; /* Remote host name */

  /* Get the information of host */
  hp = (struct hostent *) gethostbyname(hostname);
  if (hp == NULL) {
    printf("host information for %s not found\n", hostname);
    exit(1);
  }
  /* Retrieve the address of host */
  addr.sin_family = hp->h_addrtype;
  memcpy(&addr.sin_addr.s_addr, hp->h_addr_list[0], hp->h_length);
  
  port = pmap_getport(&addr, PROGNUM, PROGVER, IPPROTO_TCP);
  if(port==0)
  {
    printf("pmap_getport() failed");
    exit(1);
  }
    
  return 0;
}