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