/*
* Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996,1999 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* $Id: irs.h,v 1.5 2005/04/27 04:56:15 sra Exp $
*/
#ifndef _IRS_H_INCLUDED
#define _IRS_H_INCLUDED
/*! \file */
#include <grp.h>
#include <netdb.h>
#include <resolv.h>
#include <pwd.h>
/*%
* This is the group map class.
*/
struct irs_gr {
void * private;
void (*)(void *)));
};
/*%
* This is the password map class.
*/
struct irs_pw {
void * private;
void (*)(void *)));
};
/*%
* This is the service map class.
*/
struct irs_sv {
void * private;
const char *, const char *));
void (*)(void *)));
};
/*%
* This is the protocols map class.
*/
struct irs_pr {
void * private;
void (*)(void *)));
};
/*%
* This is the hosts map class.
*/
struct irs_ho {
void * private;
const void *, int, int));
void (*)(void *)));
const struct addrinfo *));
};
/*%
* This is the networks map class.
*/
struct irs_nw {
void * private;
void (*)(void *)));
};
/*%
* This is the netgroups map class.
*/
struct irs_ng {
void * private;
const char **, const char **));
const char *, const char *,
const char *));
};
/*%
* This is the generic map class, which copies the front of all others.
*/
struct irs_map {
void * private;
};
/*%
* This is the accessor class. It contains pointers to all of the
* initializers for the map classes for a particular accessor.
*/
struct irs_acc {
void * private;
void (*)(void *)));
};
/*%
* This is because the official definition of "struct netent" has no
* concept of CIDR even though it allows variant address families (on
* output but not input). The compatibility stubs convert the structs
* below into "struct netent"'s.
*/
struct nwent {
};
/*%
* Hide external function names from POSIX.
*/
/*%
* Externs.
*/
extern void irs_destroy __P((void));
/*%
* These forward declarations are for the semi-private functions in
* the get*.c files. Each of these funcs implements the real get*
* functionality and the standard versions are just wrappers that
* call these. Apart from the wrappers, only irpd is expected to
* call these directly, hence these decls are put here and not in
*/
struct net_data; /*%< forward */
/*
* net_data_create gets a singleton net_data object. net_data_init
* creates as many net_data objects as times it is called. Clients using
* the default interface will use net_data_create by default. Servers will
* probably want net_data_init (one call per client)
*/
void net_data_destroy __P((void *));
struct net_data *));
#ifdef SETGRENT_VOID
#else
#endif
struct net_data *));
struct net_data *));
struct net_data *));
struct net_data *));
int, int *, struct net_data *));
struct net_data *));
const char *, struct net_data *));
extern int getnetgrent_p __P((const char **, const char **,
const char **, struct net_data *));
struct net_data *));
#ifdef SETPWENT_VOID
#else
#endif
struct net_data *));
struct net_data *));
#endif /*_IRS_H_INCLUDED*/
/*! \file */