xref: /titanic_51/usr/src/lib/libipmp/common/ipmp_query_impl.h (revision e11c3f44f531fdff80941ce57c065d2ae861cefc)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*e11c3f44Smeem  * Common Development and Distribution License (the "License").
6*e11c3f44Smeem  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
20*e11c3f44Smeem  *
21*e11c3f44Smeem  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
227c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
237c478bd9Sstevel@tonic-gate  */
247c478bd9Sstevel@tonic-gate 
257c478bd9Sstevel@tonic-gate #ifndef _IPMP_QUERY_IMPL_H
267c478bd9Sstevel@tonic-gate #define	_IPMP_QUERY_IMPL_H
277c478bd9Sstevel@tonic-gate 
287c478bd9Sstevel@tonic-gate #include <ipmp_query.h>
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate /*
317c478bd9Sstevel@tonic-gate  * Private IPMP query interfaces and structures.
327c478bd9Sstevel@tonic-gate  *
337c478bd9Sstevel@tonic-gate  * These are *only* for use by in.mpathd and libipmp itself.
347c478bd9Sstevel@tonic-gate  */
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate #ifdef __cplusplus
377c478bd9Sstevel@tonic-gate extern "C" {
387c478bd9Sstevel@tonic-gate #endif
397c478bd9Sstevel@tonic-gate 
407c478bd9Sstevel@tonic-gate /*
417c478bd9Sstevel@tonic-gate  * List of ipmp_groupinfo_t structures.
427c478bd9Sstevel@tonic-gate  */
437c478bd9Sstevel@tonic-gate typedef struct ipmp_groupinfolist {
447c478bd9Sstevel@tonic-gate 	struct ipmp_groupinfolist *grl_next;
457c478bd9Sstevel@tonic-gate 	ipmp_groupinfo_t	*grl_grinfop;
467c478bd9Sstevel@tonic-gate } ipmp_groupinfolist_t;
477c478bd9Sstevel@tonic-gate 
487c478bd9Sstevel@tonic-gate /*
497c478bd9Sstevel@tonic-gate  * List of ipmp_ifinfo_t structures.
507c478bd9Sstevel@tonic-gate  */
517c478bd9Sstevel@tonic-gate typedef struct ipmp_ifinfolist {
527c478bd9Sstevel@tonic-gate 	struct ipmp_ifinfolist	*ifl_next;
537c478bd9Sstevel@tonic-gate 	ipmp_ifinfo_t		*ifl_ifinfop;
547c478bd9Sstevel@tonic-gate } ipmp_ifinfolist_t;
557c478bd9Sstevel@tonic-gate 
567c478bd9Sstevel@tonic-gate /*
57*e11c3f44Smeem  * List of ipmp_addrinfo_t structures.
58*e11c3f44Smeem  */
59*e11c3f44Smeem typedef struct ipmp_addrinfolist {
60*e11c3f44Smeem 	struct ipmp_addrinfolist *adl_next;
61*e11c3f44Smeem 	ipmp_addrinfo_t		*adl_adinfop;
62*e11c3f44Smeem } ipmp_addrinfolist_t;
63*e11c3f44Smeem 
64*e11c3f44Smeem /*
657c478bd9Sstevel@tonic-gate  * Snapshot of IPMP state.
667c478bd9Sstevel@tonic-gate  */
677c478bd9Sstevel@tonic-gate typedef struct ipmp_snap {
687c478bd9Sstevel@tonic-gate 	ipmp_grouplist_t	*sn_grlistp;
697c478bd9Sstevel@tonic-gate 	ipmp_groupinfolist_t	*sn_grinfolistp;
707c478bd9Sstevel@tonic-gate 	ipmp_ifinfolist_t	*sn_ifinfolistp;
71*e11c3f44Smeem 	ipmp_addrinfolist_t	*sn_adinfolistp;
727c478bd9Sstevel@tonic-gate 	unsigned int		sn_ngroup;
737c478bd9Sstevel@tonic-gate 	unsigned int		sn_nif;
74*e11c3f44Smeem 	unsigned int		sn_naddr;
757c478bd9Sstevel@tonic-gate } ipmp_snap_t;
767c478bd9Sstevel@tonic-gate 
777c478bd9Sstevel@tonic-gate /*
787c478bd9Sstevel@tonic-gate  * Snapshot-related routines.
797c478bd9Sstevel@tonic-gate  */
807c478bd9Sstevel@tonic-gate extern ipmp_snap_t *ipmp_snap_create(void);
817c478bd9Sstevel@tonic-gate extern void ipmp_snap_free(ipmp_snap_t *);
827c478bd9Sstevel@tonic-gate extern int ipmp_snap_addifinfo(ipmp_snap_t *, ipmp_ifinfo_t *);
83*e11c3f44Smeem extern int ipmp_snap_addaddrinfo(ipmp_snap_t *, ipmp_addrinfo_t *);
847c478bd9Sstevel@tonic-gate extern int ipmp_snap_addgroupinfo(ipmp_snap_t *, ipmp_groupinfo_t *);
857c478bd9Sstevel@tonic-gate 
867c478bd9Sstevel@tonic-gate /*
87*e11c3f44Smeem  * IPMP structure creation/destruction routines.
887c478bd9Sstevel@tonic-gate  */
897c478bd9Sstevel@tonic-gate extern ipmp_ifinfo_t *ipmp_ifinfo_create(const char *, const char *,
90*e11c3f44Smeem     ipmp_if_state_t, ipmp_if_type_t, ipmp_if_linkstate_t, ipmp_if_probestate_t,
91*e11c3f44Smeem     ipmp_if_flags_t, ipmp_targinfo_t *, ipmp_targinfo_t *);
92*e11c3f44Smeem extern ipmp_groupinfo_t *ipmp_groupinfo_create(const char *, uint64_t, uint_t,
93*e11c3f44Smeem     ipmp_group_state_t, uint_t, char (*)[LIFNAMSIZ], const char *,
94*e11c3f44Smeem     const char *, const char *, const char *, uint_t,
95*e11c3f44Smeem     struct sockaddr_storage *);
967c478bd9Sstevel@tonic-gate extern ipmp_grouplist_t *ipmp_grouplist_create(uint64_t, unsigned int,
977c478bd9Sstevel@tonic-gate     char (*)[LIFGRNAMSIZ]);
98*e11c3f44Smeem extern ipmp_addrinfo_t *ipmp_addrinfo_create(struct sockaddr_storage *,
99*e11c3f44Smeem     ipmp_addr_state_t, const char *, const char *);
100*e11c3f44Smeem extern ipmp_targinfo_t *ipmp_targinfo_create(const char *,
101*e11c3f44Smeem     struct sockaddr_storage *, ipmp_if_targmode_t, uint_t,
102*e11c3f44Smeem     struct sockaddr_storage *);
103*e11c3f44Smeem extern void ipmp_freetarginfo(ipmp_targinfo_t *);
104*e11c3f44Smeem 
1057c478bd9Sstevel@tonic-gate 
1067c478bd9Sstevel@tonic-gate #ifdef __cplusplus
1077c478bd9Sstevel@tonic-gate }
1087c478bd9Sstevel@tonic-gate #endif
1097c478bd9Sstevel@tonic-gate 
1107c478bd9Sstevel@tonic-gate #endif /* _IPMP_QUERY_IMPL_H */
111