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 with identifying if a node is reconnecting to epmd.

port_please(Name, Host) ->
               {ok, 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 protocol version which has been 5 since Erlang/OTP R6.

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

    Types:
        Name = atom()
        Host = 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}]}