usr/src/cmd/cmd-inet/usr.lib/in.ndpd/tables.h
author stevel@tonic-gate
Tue, 14 Jun 2005 00:00:00 -0700
changeset 0 68f95e015346
child 1577 2f7d3ffd4e9f
permissions -rw-r--r--
OpenSolaris Launch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 * Common Development and Distribution License, Version 1.0 only
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 * (the "License").  You may not use this file except in compliance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 * with the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#ifndef	_NDPD_TABLES_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#define	_NDPD_TABLES_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
enum adv_states { NO_ADV = 0, REG_ADV, INIT_ADV, SOLICIT_ADV, FINAL_ADV };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
enum adv_events { ADV_OFF, START_INIT_ADV, START_FINAL_ADV, RECEIVED_SOLICIT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
			ADV_TIMER };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
enum solicit_states { NO_SOLICIT = 0, INIT_SOLICIT, DONE_SOLICIT };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
enum solicit_events { SOLICIT_OFF, START_INIT_SOLICIT, SOL_TIMER,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
			SOLICIT_DONE };
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
 * Data structures used to handle configuration variables set in ndpd.conf.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
 * cf_notdefault is set for variables explicitly set in ndpd.conf.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
struct confvar {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
	uint_t		cf_value;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
	boolean_t	cf_notdefault;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
extern struct confvar ifdefaults[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
 * Interfaces configuration variable indicies
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
#define	I_DupAddrDetectTransmits	0	/* From RFC 2462 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#define	I_AdvSendAdvertisements		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	I_MaxRtrAdvInterval		2	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#define	I_MinRtrAdvInterval		3	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#define	I_AdvManagedFlag		4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
#define	I_AdvOtherConfigFlag		5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
#define	I_AdvLinkMTU			6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
#define	I_AdvReachableTime		7	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
#define	I_AdvRetransTimer		8	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
#define	I_AdvCurHopLimit		9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
#define	I_AdvDefaultLifetime		10	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#define	I_StatelessAddrConf		11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
#define	I_TmpAddrsEnabled		12	/* From RFC 3041 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#define	I_TmpValidLifetime		13	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define	I_TmpPreferredLifetime		14	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	I_TmpRegenAdvance		15	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
#define	I_TmpMaxDesyncFactor		16	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	I_IFSIZE			17	/* # of variables */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
 * A doubly linked list of all physical interfaces that each contain a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
 * doubly linked list of prefixes (i.e. logical interfaces) and default
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
 * routers.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
struct phyint {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	struct phyint	*pi_next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
	struct phyint	*pi_prev;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
	struct prefix	*pi_prefix_list;	/* Doubly linked prefixes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
	struct router	*pi_router_list;	/* Doubly linked routers */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
	struct adv_prefix *pi_adv_prefix_list;	/* Doubly linked adv.prefixes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
	uint_t		pi_index;		/* Identifier > 0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
	char		pi_name[LIFNAMSIZ];	/* Used to identify it */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
	int		pi_sock;		/* For sending and receiving */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
	struct in6_addr	pi_ifaddr;		/* Local address */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
	uint_t		pi_flags;		/* IFF_* flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
	uint_t		pi_hdw_addr_len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
	uchar_t		pi_hdw_addr[ND_MAX_HDW_LEN];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
	uint_t		pi_mtu;			/* From SIOCGLIFMTU */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
	struct in6_addr pi_token;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
	uint_t		pi_token_length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
	struct in6_addr	pi_tmp_token;		/* For RFC3041 addrs */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
	struct in6_addr	pi_dst_token;		/* For POINTOPOINT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
	uint_t		pi_state;		/* PI_* below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
	uint_t		pi_kernel_state;	/* PI_* below */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
	boolean_t	pi_onlink_default;	/* Has onlink default route */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
	uint_t		pi_num_k_routers;	/* # routers in kernel */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
	uint_t		pi_reach_time_since_random;	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
	/* Applies if pi_AdvSendAdvertisements */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
	uint_t		pi_adv_time_left;	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
	uint_t		pi_adv_time_since_sent;	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
	enum adv_states	pi_adv_state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
	uint_t		pi_adv_count;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	/* Applies if not pi_AdvSendAdvertisements */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
	uint_t		pi_sol_time_left;	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
	enum solicit_states pi_sol_state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
	uint_t		pi_sol_count;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
	/* Interface specific configurable variables */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
	struct confvar	pi_config[I_IFSIZE];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
#define	pi_DupAddrDetectTransmits pi_config[I_DupAddrDetectTransmits].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
#define	pi_AdvSendAdvertisements pi_config[I_AdvSendAdvertisements].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define	pi_MaxRtrAdvInterval	pi_config[I_MaxRtrAdvInterval].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
#define	pi_MinRtrAdvInterval	pi_config[I_MinRtrAdvInterval].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
#define	pi_AdvManagedFlag	pi_config[I_AdvManagedFlag].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
#define	pi_AdvOtherConfigFlag	pi_config[I_AdvOtherConfigFlag].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
#define	pi_AdvLinkMTU		pi_config[I_AdvLinkMTU].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
#define	pi_AdvReachableTime	pi_config[I_AdvReachableTime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
#define	pi_AdvRetransTimer	pi_config[I_AdvRetransTimer].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
#define	pi_AdvCurHopLimit	pi_config[I_AdvCurHopLimit].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
#define	pi_AdvDefaultLifetime	pi_config[I_AdvDefaultLifetime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
#define	pi_StatelessAddrConf	pi_config[I_StatelessAddrConf].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
#define	pi_TmpAddrsEnabled	pi_config[I_TmpAddrsEnabled].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
#define	pi_TmpValidLifetime	pi_config[I_TmpValidLifetime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
#define	pi_TmpPreferredLifetime	pi_config[I_TmpPreferredLifetime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
#define	pi_TmpRegenAdvance	pi_config[I_TmpRegenAdvance].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
#define	pi_TmpMaxDesyncFactor	pi_config[I_TmpMaxDesyncFactor].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	/* Recorded variables for RFC3041 addresses */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	uint_t		pi_TmpDesyncFactor;		/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	uint_t		pi_TmpRegenCountdown;		/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	/* Recorded variables on node/host */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	uint_t		pi_LinkMTU;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	uint_t		pi_CurHopLimit;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	uint_t		pi_BaseReachableTime;		/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
	uint_t		pi_ReachableTime;		/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
	 * The above value should be a uniformly-distributed random
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	 * value between ND_MIN_RANDOM_FACTOR and
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
	 * ND_MAX_RANDOM_FACTOR times BaseReachableTime
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	 * milliseconds.  A new random value should be
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
	 * calculated when BaseReachableTime changes (due to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
	 * Router Advertisements) or at least every few hours
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	 * even if no Router Advertisements are received.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	 * Tracked using pi_each_time_since_random.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
	uint_t		pi_RetransTimer;		/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	char		*pi_group_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
 * pi_state/pr_kernel_state values
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
#define	PI_PRESENT		0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
#define	PI_JOINED_ALLNODES	0x02	/* allnodes multicast joined */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
#define	PI_JOINED_ALLROUTERS	0x04	/* allrouters multicast joined */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
 * Prefix configuration variable indices
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
#define	I_AdvValidLifetime	0	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
#define	I_AdvOnLinkFlag		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
#define	I_AdvPreferredLifetime	2	/* In seconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
#define	I_AdvAutonomousFlag	3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
#define	I_AdvValidExpiration	4	/* Seconds left */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
#define	I_AdvPreferredExpiration 5	/* Seconds left */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
#define	I_PREFIXSIZE		6	/* # of variables */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
 * A doubly linked list of prefixes for onlink and addrconf.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
struct prefix {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	struct prefix	*pr_next;	/* Next prefix for this physical */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	struct prefix	*pr_prev;	/* Prev prefix for this physical */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	struct phyint	*pr_physical;	/* Back pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
	struct in6_addr	pr_prefix;	/* Used to indentify prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	uint_t		pr_prefix_len;	/* Num bits valid */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
	char		pr_name[LIFNAMSIZ];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	struct in6_addr	pr_address;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
	uint64_t	pr_flags;	/* IFF_* flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	uint_t		pr_state;	/* PR_ONLINK | PR_AUTO etc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	uint_t		pr_kernel_state; /* PR_ONLINK | PR_AUTO etc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
	boolean_t	pr_in_use;	/* To detect removed prefixes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
	/* Recorded variables on node/host */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
	uint_t		pr_ValidLifetime;	/* In ms w/ 2 hour rule */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
	uint_t		pr_PreferredLifetime;	/* In millseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
	uint_t		pr_OnLinkLifetime;	/* ms valid w/o 2 hour rule */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
	boolean_t	pr_OnLinkFlag;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
	boolean_t	pr_AutonomousFlag;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
	uint_t		pr_CreateTime;		/* tmpaddr creation time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
						/* in SECONDS */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
 * Flags used for pr_kernel_state and pr_state where the latter is
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
 * user-level state.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
#define	PR_ONLINK	0x01		/* On-link */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
#define	PR_AUTO		0x02		/* Stateless addrconf */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
#define	PR_DEPRECATED	0x04		/* Address is deprecated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
#define	PR_STATIC	0x08		/* Not created by ndpd */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
 * The sum of all possible state string lengths, plus terminating
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
 * null character; if new states are added, this needs to be updated.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
 * Useful for passing an appropriately sized buffer to prefix_print_state().
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
 * Current strings: "ONLINK ", "AUTO ", "DEPRECATED ", "STATIC ", "\n"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
 *                      7     +   5    +     11       +    7     +  1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
#define	PREFIX_STATESTRLEN	31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
/* Prefix used for storing advertisement specific stuff */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
struct adv_prefix {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
	struct adv_prefix	*adv_pr_next;	/* Next prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
	struct adv_prefix	*adv_pr_prev;	/* Prev prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
	struct phyint		*adv_pr_physical;	/* Back pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
	struct in6_addr		adv_pr_prefix;	/* Used to indentify prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
	uint_t			adv_pr_prefix_len;	/* Num bits valid */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
	/* Used when sending advertisements */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	struct confvar		adv_pr_config[I_PREFIXSIZE];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
#define	adv_pr_AdvValidLifetime	adv_pr_config[I_AdvValidLifetime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
#define	adv_pr_AdvOnLinkFlag	adv_pr_config[I_AdvOnLinkFlag].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
#define	adv_pr_AdvPreferredLifetime	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
			adv_pr_config[I_AdvPreferredLifetime].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
#define	adv_pr_AdvAutonomousFlag	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
			adv_pr_config[I_AdvAutonomousFlag].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
#define	adv_pr_AdvValidExpiration	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
			adv_pr_config[I_AdvValidExpiration].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
#define	adv_pr_AdvPreferredExpiration	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
			adv_pr_config[I_AdvPreferredExpiration].cf_value
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
	/* The two below are set if the timers decrement in real time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
#define	adv_pr_AdvValidRealTime		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
			adv_pr_config[I_AdvValidExpiration].cf_notdefault
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
#define	adv_pr_AdvPreferredRealTime	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
			adv_pr_config[I_AdvPreferredExpiration].cf_notdefault
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
 * Doubly-linked list of default routers on a phyint.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
struct router {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
	struct router	*dr_next;	/* Next router for this physical */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
	struct router	*dr_prev;	/* Prev router for this physical */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
	struct phyint	*dr_physical;	/* Back pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
	struct in6_addr	dr_address;	/* Used to identify the router */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
	uint_t		dr_lifetime;	/* In milliseconds */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
	boolean_t	dr_inkernel;	/* Route added to kernel */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
	boolean_t	dr_onlink;	/* Is this the onlink default route? */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
 * Globals
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
extern struct phyint *phyints;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
 * Functions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
extern uint_t		getcurrenttime(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
extern struct phyint	*phyint_lookup(char *name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
extern struct phyint	*phyint_lookup_on_index(uint_t ifindex);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
extern struct phyint	*phyint_create(char *name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
extern int		phyint_init_from_k(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
extern void		phyint_delete(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
extern uint_t		phyint_timer(struct phyint *pi, uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
extern void		phyint_print_all(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
extern void		phyint_reach_random(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
			    boolean_t set_needed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
extern void		phyint_cleanup(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
extern boolean_t	tmptoken_create(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
extern void		tmptoken_delete(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
extern uint_t		tmptoken_timer(struct phyint *pi, uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
extern boolean_t	token_equal(struct in6_addr t1, struct in6_addr t2,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
			    int bits);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
extern struct prefix	*prefix_create(struct phyint *pi, struct in6_addr addr,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
			    int addrlen, uint64_t flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
extern struct prefix	*prefix_lookup_name(struct phyint *pi, char *name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
extern struct prefix	*prefix_lookup_addr_match(struct prefix *pr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
extern struct prefix	*prefix_create_name(struct phyint *pi, char *name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
extern int		prefix_init_from_k(struct prefix *pr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
extern void		prefix_delete(struct prefix *pr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
extern boolean_t	prefix_equal(struct in6_addr p1, struct in6_addr p2,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
			    int bits);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
extern void		prefix_update_k(struct prefix *pr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
extern uint_t		prefix_timer(struct prefix *pr, uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
extern uint_t		adv_prefix_timer(struct adv_prefix *adv_pr,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
			    uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
extern boolean_t	prefix_token_match(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
			    struct prefix *pr, uint64_t flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
extern struct prefix	*prefix_lookup_addr(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
			    struct in6_addr prefix);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
extern struct adv_prefix *adv_prefix_lookup(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
			    struct in6_addr addr, int addrlen);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
extern struct adv_prefix *adv_prefix_create(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
			    struct in6_addr addr, int addrlen);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
extern struct router	*router_lookup(struct phyint *pi, struct in6_addr addr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
extern struct router	*router_create(struct phyint *pi, struct in6_addr addr,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
			    uint_t lifetime);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
extern struct router	*router_create_onlink(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
extern void		router_update_k(struct router *dr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
extern uint_t		router_timer(struct router *dr, uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
extern void	logperror_pi(struct phyint *pi, char *str);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
extern void	logperror_pr(struct prefix *pr, char *str);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
extern void	check_to_advertise(struct phyint *pi, enum adv_events event);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
extern void	check_to_solicit(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
		    enum solicit_events event);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
extern uint_t	advertise_event(struct phyint *pi, enum adv_events event,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
		    uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
extern uint_t	solicit_event(struct phyint *pi, enum solicit_events event,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
		    uint_t elapsed);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
extern void	print_route_sol(char *str, struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
		    struct nd_router_solicit *rs, int len,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
		    struct sockaddr_in6 *addr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
extern void	print_route_adv(char *str, struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
		    struct nd_router_advert *ra, int len,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
		    struct sockaddr_in6 *addr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
extern void	print_iflist(struct confvar *confvar);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
extern void	print_prefixlist(struct confvar *confvar);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
extern void	in_data(struct phyint *pi);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
extern void	incoming_ra(struct phyint *pi, struct nd_router_advert *ra,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
		    int len, struct sockaddr_in6 *from, boolean_t loopback);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
extern boolean_t incoming_prefix_addrconf_process(struct phyint *pi,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
		    struct prefix *pr, uchar_t *opt,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
		    struct sockaddr_in6 *from, boolean_t loopback,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
		    boolean_t new_prefix);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
extern void	incoming_prefix_onlink_process(struct prefix *pr,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
		    uchar_t *opt);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
#endif	/* _NDPD_TABLES_H */