/* List of functions defined for static NSS in GNU C Library.
   Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

/*
  This is a minimal config.  Only services `files' and `dns' are supported.
*/

/* aliases */
DEFINE_ENT (files, alias)
DEFINE_GETBY (files, alias, name)

/* ethers */
DEFINE_ENT (files, ether)

/* group */
DEFINE_ENT (files, gr)
DEFINE_GET (files, grgid)
DEFINE_GET (files, grnam)

/* hosts */
DEFINE_ENT (files, host)
DEFINE_GETBY (files, host, addr)
DEFINE_GETBY (files, host, name)
DEFINE_GETBY (files, host, name2)
DEFINE_GET (files, hostton)
DEFINE_GET (files, ntohost)
DEFINE_GETBY (dns, host, addr)
DEFINE_GETBY (dns, host, name)
DEFINE_GETBY (dns, host, name2)

/* netgroup */
DEFINE_ENT (files, netgr)

/* networks */
DEFINE_ENT (files, net)
DEFINE_GETBY (files, net, name)
DEFINE_GETBY (files, net, addr)
DEFINE_GETBY (dns, net, name)
DEFINE_GETBY (dns, net, addr)

/* protocols */
DEFINE_ENT (files, proto)
DEFINE_GETBY (files, proto, name)
DEFINE_GETBY (files, proto, number)

/* passwd */
DEFINE_ENT (files, pw)
DEFINE_GET (files, pwnam)
DEFINE_GET (files, pwuid)

/* rpc */
DEFINE_ENT (files, rpc)
DEFINE_GETBY (files, rpc, name)
DEFINE_GETBY (files, rpc, number)

/* services */
DEFINE_ENT (files, serv)
DEFINE_GETBY (files, serv, name)
DEFINE_GETBY (files, serv, port)

/* shadow */
DEFINE_ENT (files, sp)
DEFINE_GET (files, spnam)
