#ifndef _IPMP_QUERY_IMPL_H
#define _IPMP_QUERY_IMPL_H
#include <ipmp_query.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ipmp_groupinfolist {
struct ipmp_groupinfolist *grl_next;
ipmp_groupinfo_t *grl_grinfop;
} ipmp_groupinfolist_t;
typedef struct ipmp_ifinfolist {
struct ipmp_ifinfolist *ifl_next;
ipmp_ifinfo_t *ifl_ifinfop;
} ipmp_ifinfolist_t;
typedef struct ipmp_addrinfolist {
struct ipmp_addrinfolist *adl_next;
ipmp_addrinfo_t *adl_adinfop;
} ipmp_addrinfolist_t;
typedef struct ipmp_snap {
ipmp_grouplist_t *sn_grlistp;
ipmp_groupinfolist_t *sn_grinfolistp;
ipmp_ifinfolist_t *sn_ifinfolistp;
ipmp_addrinfolist_t *sn_adinfolistp;
uint32_t sn_ngroup;
uint32_t sn_nif;
uint32_t sn_naddr;
} ipmp_snap_t;
extern ipmp_snap_t *ipmp_snap_create(void);
extern void ipmp_snap_free(ipmp_snap_t *);
extern int ipmp_snap_addifinfo(ipmp_snap_t *, ipmp_ifinfo_t *);
extern int ipmp_snap_addaddrinfo(ipmp_snap_t *, ipmp_addrinfo_t *);
extern int ipmp_snap_addgroupinfo(ipmp_snap_t *, ipmp_groupinfo_t *);
extern ipmp_ifinfo_t *ipmp_ifinfo_create(const char *, const char *,
ipmp_if_state_t, ipmp_if_type_t, ipmp_if_linkstate_t, ipmp_if_probestate_t,
ipmp_if_flags_t, ipmp_targinfo_t *, ipmp_targinfo_t *);
extern ipmp_groupinfo_t *ipmp_groupinfo_create(const char *, uint64_t, uint_t,
ipmp_group_state_t, uint_t, char (*)[LIFNAMSIZ], const char *,
const char *, const char *, const char *, uint_t,
struct sockaddr_storage *);
extern ipmp_grouplist_t *ipmp_grouplist_create(uint64_t, unsigned int,
char (*)[LIFGRNAMSIZ]);
extern ipmp_addrinfo_t *ipmp_addrinfo_create(struct sockaddr_storage *,
ipmp_addr_state_t, const char *, const char *);
extern ipmp_targinfo_t *ipmp_targinfo_create(const char *,
struct sockaddr_storage *, ipmp_if_targmode_t, uint_t,
struct sockaddr_storage *);
extern void ipmp_freetarginfo(ipmp_targinfo_t *);
#ifdef __cplusplus
}
#endif
#endif