Go to main content

man pages section 3: Extended Library Functions, Volume 1

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

erl_epmd (3erl)

Name

erl_epmd - Erlang interface towards epmd

Synopsis

Please see following description for synopsis

Description

erl_epmd(3)                Erlang Module Definition                erl_epmd(3)



NAME
       erl_epmd -
           Erlang interface towards epmd


DESCRIPTION
       This  module  communicates with the EPMD daemon, see epmd. To implement
       your own epmd module please see ERTS User's Guide: How to Implement  an
       Alternative Node Discovery for Erlang Distribution

EXPORTS
       start_link() -> {ok, pid()} | ignore | {error, term()}

              This  function  is invoked as this module is added as a child of
              the erl_distribution supervisor.

       register_node(Name, Port) -> Result

       register_node(Name, Port, Driver) -> Result

              Types:

                 Name = string()
                 Port = integer() >= 0
                 Driver = inet_tcp | inet6_tcp | inet | inet6
                 Creation = integer() >= 0 | -1
                 Result =  {ok,  Creation}  |  {error,  already_registered}  |
                 term()

              Registers  the  node  with epmd and tells epmd what port will be
              used for the current node. It returns a  creation  number.  This
              number  is  incremented on each register to help differentiate a
              new node instance connecting to epmd with the same name.

              After the node has successfully registered  with  epmd  it  will
              automatically  attempt reconnect to the daemon if the connection
              is broken.

       port_please(Name, Host) ->
                      {port, Port, Version} |
                      noport | closed |
                      {error, term()}

       port_please(Name, Host, Timeout) ->
                      {port, Port, Version} |
                      noport | closed |
                      {error, term()}

              Types:

                 Name = atom() | string()
                 Host = atom() | string() | inet:ip_address()
                 Timeout = integer() >= 0 | infinity
                 Port = Version = integer() >= 0

              Requests the distribution port for the given  node  of  an  EPMD
              instance.  Together with the port it returns a distribution pro-
              tocol version which has been 5 since Erlang/OTP R6.

       listen_port_please(Name, Host) -> {ok, Port}

              Types:

                 Name = atom() | string()
                 Host = atom() | string() | inet:ip_address()
                 Port = integer() >= 0

              Called by the distribution module to get which  port  the  local
              node should listen to when accepting new distribution requests.

       address_please(Name, Host, AddressFamily) ->
                         Success | {error, term()}

              Types:

                 Name = string()
                 Host = string() | inet:ip_address()
                 AddressFamily = inet | inet6
                 Port = Version = integer() >= 0
                 Success =
                     {ok, inet:ip_address()} |
                     {ok, inet:ip_address(), Port, Version}

              Called  by the distribution module to resolves the Host to an IP
              address of a remote node.

              As an optimization this function may also return  the  port  and
              version  of  the  remote  node. If port and version are returned
              port_please/3 will not be called.

       names(Host) -> {ok, [{Name, Port}]} | {error, Reason}

              Types:

                 Host = atom() | string() | inet:ip_address()
                 Name = string()
                 Port = integer() >= 0
                 Reason = address | file:posix()

              Called by  net_adm:names/0.  Host  defaults  to  the  localhost.
              Returns  the  names  and  associated  port numbers of the Erlang
              nodes that  epmd  registered  at  the  specified  host.  Returns
              {error, address} if epmd is not operational.

              Example:

              (arne@dunn)1> erl_epmd:names(localhost).
              {ok,[{"arne",40262}]}



Ericsson AB                       kernel 8.2                       erl_epmd(3)