xref: /titanic_41/usr/src/head/ndpd.h (revision cc52cd5b16ec3b8334f7db84aa4d148f1e4391d3)
1*cc52cd5bSapersson /*
2*cc52cd5bSapersson  * CDDL HEADER START
3*cc52cd5bSapersson  *
4*cc52cd5bSapersson  * The contents of this file are subject to the terms of the
5*cc52cd5bSapersson  * Common Development and Distribution License (the "License").
6*cc52cd5bSapersson  * You may not use this file except in compliance with the License.
7*cc52cd5bSapersson  *
8*cc52cd5bSapersson  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*cc52cd5bSapersson  * or http://www.opensolaris.org/os/licensing.
10*cc52cd5bSapersson  * See the License for the specific language governing permissions
11*cc52cd5bSapersson  * and limitations under the License.
12*cc52cd5bSapersson  *
13*cc52cd5bSapersson  * When distributing Covered Code, include this CDDL HEADER in each
14*cc52cd5bSapersson  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*cc52cd5bSapersson  * If applicable, add the following below this CDDL HEADER, with the
16*cc52cd5bSapersson  * fields enclosed by brackets "[]" replaced with your own identifying
17*cc52cd5bSapersson  * information: Portions Copyright [yyyy] [name of copyright owner]
18*cc52cd5bSapersson  *
19*cc52cd5bSapersson  * CDDL HEADER END
20*cc52cd5bSapersson  */
21*cc52cd5bSapersson /*
22*cc52cd5bSapersson  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*cc52cd5bSapersson  * Use is subject to license terms.
24*cc52cd5bSapersson  */
25*cc52cd5bSapersson 
26*cc52cd5bSapersson #ifndef	_NDPD_H
27*cc52cd5bSapersson #define	_NDPD_H
28*cc52cd5bSapersson 
29*cc52cd5bSapersson #pragma ident	"%Z%%M%	%I%	%E% SMI"
30*cc52cd5bSapersson 
31*cc52cd5bSapersson #ifdef	__cplusplus
32*cc52cd5bSapersson extern "C" {
33*cc52cd5bSapersson #endif
34*cc52cd5bSapersson 
35*cc52cd5bSapersson #define	NDPD_SNMP_SOCKET	"/var/run/in.ndpd_mib"
36*cc52cd5bSapersson #define	NDPD_SNMP_INFO_REQ	1
37*cc52cd5bSapersson #define	NDPD_SNMP_INFO_RESPONSE	2
38*cc52cd5bSapersson #define	NDPD_PHYINT_INFO	3
39*cc52cd5bSapersson #define	NDPD_PREFIX_INFO	4
40*cc52cd5bSapersson #define	NDPD_ROUTER_INFO	5
41*cc52cd5bSapersson 
42*cc52cd5bSapersson #define	NDPD_SNMP_INFO_VER	1
43*cc52cd5bSapersson #define	NDPD_PHYINT_INFO_VER    1
44*cc52cd5bSapersson #define	NDPD_PREFIX_INFO_VER    1
45*cc52cd5bSapersson #define	NDPD_ROUTER_INFO_VER	1
46*cc52cd5bSapersson 
47*cc52cd5bSapersson /*
48*cc52cd5bSapersson  * Data structures used to handle configuration variables set in ndpd.conf.
49*cc52cd5bSapersson  * cf_notdefault is set for variables explicitly set in ndpd.conf.
50*cc52cd5bSapersson  */
51*cc52cd5bSapersson struct confvar {
52*cc52cd5bSapersson 	uint_t		cf_value;
53*cc52cd5bSapersson 	boolean_t	cf_notdefault;
54*cc52cd5bSapersson };
55*cc52cd5bSapersson 
56*cc52cd5bSapersson extern struct confvar ifdefaults[];
57*cc52cd5bSapersson 
58*cc52cd5bSapersson /*
59*cc52cd5bSapersson  * Interfaces configuration variable indicies
60*cc52cd5bSapersson  */
61*cc52cd5bSapersson #define	I_DupAddrDetectTransmits	0	/* From RFC 2462 */
62*cc52cd5bSapersson #define	I_AdvSendAdvertisements		1
63*cc52cd5bSapersson #define	I_MaxRtrAdvInterval		2	/* In seconds */
64*cc52cd5bSapersson #define	I_MinRtrAdvInterval		3	/* In seconds */
65*cc52cd5bSapersson #define	I_AdvManagedFlag		4
66*cc52cd5bSapersson #define	I_AdvOtherConfigFlag		5
67*cc52cd5bSapersson #define	I_AdvLinkMTU			6
68*cc52cd5bSapersson #define	I_AdvReachableTime		7	/* In milliseconds */
69*cc52cd5bSapersson #define	I_AdvRetransTimer		8	/* In milliseconds */
70*cc52cd5bSapersson #define	I_AdvCurHopLimit		9
71*cc52cd5bSapersson #define	I_AdvDefaultLifetime		10	/* In seconds */
72*cc52cd5bSapersson #define	I_StatelessAddrConf		11
73*cc52cd5bSapersson #define	I_TmpAddrsEnabled		12	/* From RFC 3041 */
74*cc52cd5bSapersson #define	I_TmpValidLifetime		13	/* In seconds */
75*cc52cd5bSapersson #define	I_TmpPreferredLifetime		14	/* In seconds */
76*cc52cd5bSapersson #define	I_TmpRegenAdvance		15	/* In seconds */
77*cc52cd5bSapersson #define	I_TmpMaxDesyncFactor		16	/* In seconds */
78*cc52cd5bSapersson #define	I_StatefulAddrConf		17
79*cc52cd5bSapersson #define	I_IFSIZE			18	/* # of variables */
80*cc52cd5bSapersson 
81*cc52cd5bSapersson typedef struct ndpd_info_s {
82*cc52cd5bSapersson 	uint_t	info_type;
83*cc52cd5bSapersson 	uint_t	info_version;
84*cc52cd5bSapersson 	uint_t	info_num_of_phyints;
85*cc52cd5bSapersson } ndpd_info_t;
86*cc52cd5bSapersson 
87*cc52cd5bSapersson typedef struct ndpd_prefix_info_s {
88*cc52cd5bSapersson 	uint_t		prefix_info_type;
89*cc52cd5bSapersson 	uint_t		prefix_info_version;
90*cc52cd5bSapersson 	struct in6_addr prefix_prefix;		/* Used to indentify prefix */
91*cc52cd5bSapersson 	uint_t		prefix_len;		/* Num bits valid */
92*cc52cd5bSapersson 	uint_t		prefix_flags;		/* IFF_ flags */
93*cc52cd5bSapersson 	uint_t		prefix_phyint_index;
94*cc52cd5bSapersson 	uint_t		prefix_ValidLifetime;	 /* In ms w/ 2 hour rule */
95*cc52cd5bSapersson 	uint_t		prefix_PreferredLifetime; /* In millseconds */
96*cc52cd5bSapersson 	uint_t		prefix_OnLinkLifetime;	/* ms valid w/o 2 hour rule */
97*cc52cd5bSapersson 	boolean_t	prefix_OnLinkFlag;
98*cc52cd5bSapersson 	boolean_t	prefix_AutonomousFlag;
99*cc52cd5bSapersson } ndpd_prefix_info_t;
100*cc52cd5bSapersson 
101*cc52cd5bSapersson typedef struct ndpd_router_info_s {
102*cc52cd5bSapersson 	uint_t		router_info_type;
103*cc52cd5bSapersson 	uint_t		router_info_version;
104*cc52cd5bSapersson 	struct in6_addr	router_address;		/* Used to identify router */
105*cc52cd5bSapersson 	uint_t		router_lifetime;	/* In milliseconds */
106*cc52cd5bSapersson 	uint_t		router_phyint_index;
107*cc52cd5bSapersson } ndpd_router_info_t;
108*cc52cd5bSapersson 
109*cc52cd5bSapersson 
110*cc52cd5bSapersson typedef struct ndpd_phyint_info_s {
111*cc52cd5bSapersson 	uint_t		phyint_info_type;
112*cc52cd5bSapersson 	uint_t		phyint_info_version;
113*cc52cd5bSapersson 	int		phyint_index;
114*cc52cd5bSapersson 	struct confvar 	phyint_config[I_IFSIZE];
115*cc52cd5bSapersson #define	phyint_DupAddrDetectTransmits 	\
116*cc52cd5bSapersson 				phyint_config[I_DupAddrDetectTransmits].cf_value
117*cc52cd5bSapersson #define	phyint_AdvSendAdvertisements 	\
118*cc52cd5bSapersson 				phyint_config[I_AdvSendAdvertisements].cf_value
119*cc52cd5bSapersson #define	phyint_MaxRtrAdvInterval	\
120*cc52cd5bSapersson 				phyint_config[I_MaxRtrAdvInterval].cf_value
121*cc52cd5bSapersson #define	phyint_MinRtrAdvInterval	\
122*cc52cd5bSapersson 				phyint_config[I_MinRtrAdvInterval].cf_value
123*cc52cd5bSapersson #define	phyint_AdvManagedFlag	phyint_config[I_AdvManagedFlag].cf_value
124*cc52cd5bSapersson #define	phyint_AdvOtherConfigFlag	\
125*cc52cd5bSapersson 				phyint_config[I_AdvOtherConfigFlag].cf_value
126*cc52cd5bSapersson #define	phyint_AdvLinkMTU	phyint_config[I_AdvLinkMTU].cf_value
127*cc52cd5bSapersson #define	phyint_AdvReachableTime	phyint_config[I_AdvReachableTime].cf_value
128*cc52cd5bSapersson #define	phyint_AdvRetransTimer	phyint_config[I_AdvRetransTimer].cf_value
129*cc52cd5bSapersson #define	phyint_AdvCurHopLimit	phyint_config[I_AdvCurHopLimit].cf_value
130*cc52cd5bSapersson #define	phyint_AdvDefaultLifetime	\
131*cc52cd5bSapersson 				phyint_config[I_AdvDefaultLifetime].cf_value
132*cc52cd5bSapersson #define	phyint_StatelessAddrConf	\
133*cc52cd5bSapersson 				phyint_config[I_StatelessAddrConf].cf_value
134*cc52cd5bSapersson #define	phyint_TmpAddrsEnabled	phyint_config[I_TmpAddrsEnabled].cf_value
135*cc52cd5bSapersson #define	phyint_TmpValidLifetime	phyint_config[I_TmpValidLifetime].cf_value
136*cc52cd5bSapersson #define	phyint_TmpPreferredLifetime	\
137*cc52cd5bSapersson 				phyint_config[I_TmpPreferredLifetime].cf_value
138*cc52cd5bSapersson #define	phyint_TmpRegenAdvance	phyint_config[I_TmpRegenAdvance].cf_value
139*cc52cd5bSapersson #define	phyint_TmpMaxDesyncFactor	\
140*cc52cd5bSapersson 				phyint_config[I_TmpMaxDesyncFactor].cf_value
141*cc52cd5bSapersson #define	phyint_StatefulAddrConf	\
142*cc52cd5bSapersson 				phyint_config[I_StatefulAddrConf].cf_value
143*cc52cd5bSapersson 	uint_t 		phyint_num_of_prefixes;
144*cc52cd5bSapersson 	uint_t 		phyint_num_of_routers;
145*cc52cd5bSapersson } ndpd_phyint_info_t;
146*cc52cd5bSapersson 
147*cc52cd5bSapersson #ifdef	__cplusplus
148*cc52cd5bSapersson }
149*cc52cd5bSapersson #endif
150*cc52cd5bSapersson 
151*cc52cd5bSapersson #endif	/* _NDPD_H */
152