blob: a8b16d9a404f638ad5ccd905c27b686624fc359f [file] [log] [blame]
apersson31736642006-12-19 17:33:00 -08001/*
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/*
carlsonjd04ccbb2007-01-17 08:41:37 -080022 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
apersson31736642006-12-19 17:33:00 -080023 * Use is subject to license terms.
24 */
25
26#ifndef _NDPD_H
27#define _NDPD_H
28
apersson31736642006-12-19 17:33:00 -080029#ifdef __cplusplus
30extern "C" {
31#endif
32
33#define NDPD_SNMP_SOCKET "/var/run/in.ndpd_mib"
34#define NDPD_SNMP_INFO_REQ 1
35#define NDPD_SNMP_INFO_RESPONSE 2
36#define NDPD_PHYINT_INFO 3
37#define NDPD_PREFIX_INFO 4
38#define NDPD_ROUTER_INFO 5
39
40#define NDPD_SNMP_INFO_VER 1
41#define NDPD_PHYINT_INFO_VER 1
42#define NDPD_PREFIX_INFO_VER 1
43#define NDPD_ROUTER_INFO_VER 1
44
45/*
46 * Data structures used to handle configuration variables set in ndpd.conf.
47 * cf_notdefault is set for variables explicitly set in ndpd.conf.
48 */
49struct confvar {
50 uint_t cf_value;
51 boolean_t cf_notdefault;
52};
53
54extern struct confvar ifdefaults[];
55
56/*
57 * Interfaces configuration variable indicies
58 */
59#define I_DupAddrDetectTransmits 0 /* From RFC 2462 */
60#define I_AdvSendAdvertisements 1
61#define I_MaxRtrAdvInterval 2 /* In seconds */
62#define I_MinRtrAdvInterval 3 /* In seconds */
63#define I_AdvManagedFlag 4
64#define I_AdvOtherConfigFlag 5
65#define I_AdvLinkMTU 6
66#define I_AdvReachableTime 7 /* In milliseconds */
67#define I_AdvRetransTimer 8 /* In milliseconds */
68#define I_AdvCurHopLimit 9
69#define I_AdvDefaultLifetime 10 /* In seconds */
70#define I_StatelessAddrConf 11
71#define I_TmpAddrsEnabled 12 /* From RFC 3041 */
72#define I_TmpValidLifetime 13 /* In seconds */
73#define I_TmpPreferredLifetime 14 /* In seconds */
74#define I_TmpRegenAdvance 15 /* In seconds */
75#define I_TmpMaxDesyncFactor 16 /* In seconds */
carlsonjd04ccbb2007-01-17 08:41:37 -080076#define I_StatefulAddrConf 17
77#define I_IFSIZE 18 /* # of variables */
apersson31736642006-12-19 17:33:00 -080078
79typedef struct ndpd_info_s {
80 uint_t info_type;
81 uint_t info_version;
82 uint_t info_num_of_phyints;
83} ndpd_info_t;
84
85typedef struct ndpd_prefix_info_s {
86 uint_t prefix_info_type;
87 uint_t prefix_info_version;
88 struct in6_addr prefix_prefix; /* Used to indentify prefix */
89 uint_t prefix_len; /* Num bits valid */
90 uint_t prefix_flags; /* IFF_ flags */
91 uint_t prefix_phyint_index;
92 uint_t prefix_ValidLifetime; /* In ms w/ 2 hour rule */
93 uint_t prefix_PreferredLifetime; /* In millseconds */
94 uint_t prefix_OnLinkLifetime; /* ms valid w/o 2 hour rule */
95 boolean_t prefix_OnLinkFlag;
96 boolean_t prefix_AutonomousFlag;
97} ndpd_prefix_info_t;
98
99typedef struct ndpd_router_info_s {
100 uint_t router_info_type;
101 uint_t router_info_version;
102 struct in6_addr router_address; /* Used to identify router */
103 uint_t router_lifetime; /* In milliseconds */
104 uint_t router_phyint_index;
105} ndpd_router_info_t;
106
107
108typedef struct ndpd_phyint_info_s {
109 uint_t phyint_info_type;
110 uint_t phyint_info_version;
111 int phyint_index;
Marcel Telka6e270ca2017-07-02 04:55:09 +0200112 struct confvar phyint_config[I_IFSIZE];
113#define phyint_DupAddrDetectTransmits \
apersson31736642006-12-19 17:33:00 -0800114 phyint_config[I_DupAddrDetectTransmits].cf_value
Marcel Telka6e270ca2017-07-02 04:55:09 +0200115#define phyint_AdvSendAdvertisements \
apersson31736642006-12-19 17:33:00 -0800116 phyint_config[I_AdvSendAdvertisements].cf_value
117#define phyint_MaxRtrAdvInterval \
118 phyint_config[I_MaxRtrAdvInterval].cf_value
119#define phyint_MinRtrAdvInterval \
120 phyint_config[I_MinRtrAdvInterval].cf_value
121#define phyint_AdvManagedFlag phyint_config[I_AdvManagedFlag].cf_value
122#define phyint_AdvOtherConfigFlag \
123 phyint_config[I_AdvOtherConfigFlag].cf_value
124#define phyint_AdvLinkMTU phyint_config[I_AdvLinkMTU].cf_value
125#define phyint_AdvReachableTime phyint_config[I_AdvReachableTime].cf_value
126#define phyint_AdvRetransTimer phyint_config[I_AdvRetransTimer].cf_value
127#define phyint_AdvCurHopLimit phyint_config[I_AdvCurHopLimit].cf_value
128#define phyint_AdvDefaultLifetime \
129 phyint_config[I_AdvDefaultLifetime].cf_value
130#define phyint_StatelessAddrConf \
131 phyint_config[I_StatelessAddrConf].cf_value
132#define phyint_TmpAddrsEnabled phyint_config[I_TmpAddrsEnabled].cf_value
133#define phyint_TmpValidLifetime phyint_config[I_TmpValidLifetime].cf_value
134#define phyint_TmpPreferredLifetime \
135 phyint_config[I_TmpPreferredLifetime].cf_value
136#define phyint_TmpRegenAdvance phyint_config[I_TmpRegenAdvance].cf_value
137#define phyint_TmpMaxDesyncFactor \
138 phyint_config[I_TmpMaxDesyncFactor].cf_value
carlsonjd04ccbb2007-01-17 08:41:37 -0800139#define phyint_StatefulAddrConf \
140 phyint_config[I_StatefulAddrConf].cf_value
Marcel Telka6e270ca2017-07-02 04:55:09 +0200141 uint_t phyint_num_of_prefixes;
142 uint_t phyint_num_of_routers;
apersson31736642006-12-19 17:33:00 -0800143} ndpd_phyint_info_t;
144
145#ifdef __cplusplus
146}
147#endif
148
149#endif /* _NDPD_H */