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