SRV(2)                                                     SRV(2)

     NAME
          srv, ipsrv - network name and address translation

     SYNOPSIS
          include "srv.m"
          srv:= load Srv Srv->PATH;
          Srv: module
          {
            PATH:  con "$Srv";
            iph2a: fn(host: string): list of string;
            ipa2h: fn(addr: string): list of string;
            ipn2p: fn(protocol, service: string): string;
          };

          ipsrv := load Ipsrv Ipsrv->PATH;
          Ipsrv: module
          {
            init:  fn(nil: list of string);
            iph2a: fn(host: string): list of string;
            ipa2h: fn(addr: string): list of string;
            ipn2p: fn(protocol, service: string): string;
          };

     DESCRIPTION
          These modules provide name and address translation in hosted
          and native modes.

          Srv is a module built in to emu(1) that accesses the Inter-
          net name resolution services of a host operating system.

          Given a host name, Iph2a returns a list of its Internet
          addresses (if any).  Given an Internet address, ipa2h
          returns a list of host names (if any) that have that
          address.  The results are only as accurate as the host
          system's name service.

          Ipn2p returns the port number (as a string) for the given
          service when accessed using a particular protocol protocol
          (typically tcp or udp).

          Ipsrv provides a superset of the srv(2) interface for name
          and address translation.  It can be used in both hosted and
          native modes.  It has an additional init function that must
          be called before any of the other functions is used; its
          argument should be nil.  It uses the Internet Domain Name
          Service (DNS) for both host name lookup and reverse
          (address) lookup.  The addresses of the DNS servers, which
          must be numeric IP addresses, and an (optional) local domain
          name are read from /services/dns/db.  It uses services(6) to
          map protocol and service names to Internet port numbers.

     Page 1                       Plan 9            (printed 12/22/24)

     SRV(2)                                                     SRV(2)

     SOURCE
          /appl/lib/ipsrv.b

     SEE ALSO
          sys-file2chan(2), cs(8)

     BUGS
          Srv should have an init function.  On the other hand, Ipsrv
          should not take arguments to its init function.
          Ipsrv uses TCP/IP not UDP/IP to access the DNS.

     Page 2                       Plan 9            (printed 12/22/24)