⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 in6_var.h

📁 Newlib 嵌入式 C库 标准实现代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*	$FreeBSD: src/sys/netinet6/in6_var.h,v 1.10 2002/04/19 04:46:22 suz Exp $	*//*	$KAME: in6_var.h,v 1.56 2001/03/29 05:34:31 itojun Exp $	*//* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the project nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *//* * Copyright (c) 1985, 1986, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)in_var.h	8.1 (Berkeley) 6/10/93 */#ifndef _NETINET6_IN6_VAR_H_#define _NETINET6_IN6_VAR_H_/* * Interface address, Internet version.  One of these structures * is allocated for each interface with an Internet address. * The ifaddr structure contains the protocol-independent part * of the structure and is assumed to be first. *//* * pltime/vltime are just for future reference (required to implements 2 * hour rule for hosts).  they should never be modified by nd6_timeout or * anywhere else. *	userland -> kernel: accept pltime/vltime *	kernel -> userland: throw up everything *	in kernel: modify preferred/expire only */struct in6_addrlifetime {	time_t ia6t_expire;	/* valid lifetime expiration time */	time_t ia6t_preferred;	/* preferred lifetime expiration time */	u_int32_t ia6t_vltime;	/* valid lifetime */	u_int32_t ia6t_pltime;	/* prefix lifetime */};struct	in6_ifaddr {	struct	ifaddr ia_ifa;		/* protocol-independent info */#define	ia_ifp		ia_ifa.ifa_ifp#define ia_flags	ia_ifa.ifa_flags	struct	sockaddr_in6 ia_addr;	/* interface address */	struct	sockaddr_in6 ia_net;	/* network number of interface */	struct	sockaddr_in6 ia_dstaddr; /* space for destination addr */	struct	sockaddr_in6 ia_prefixmask; /* prefix mask */	u_int32_t ia_plen;		/* prefix length */	struct	in6_ifaddr *ia_next;	/* next in6 list of IP6 addresses */	int	ia6_flags;	struct in6_addrlifetime ia6_lifetime;	struct ifprefix *ia6_ifpr; /* back pointer to ifprefix */	struct nd_prefix *ia6_ndpr; /* back pointer to the ND prefix				     * (for autoconfigured addresses only)				     */};/* * IPv6 interface statistics, as defined in RFC2465 Ipv6IfStatsEntry (p12). */struct in6_ifstat {	u_quad_t ifs6_in_receive;	/* # of total input datagram */	u_quad_t ifs6_in_hdrerr;	/* # of datagrams with invalid hdr */	u_quad_t ifs6_in_toobig;	/* # of datagrams exceeded MTU */	u_quad_t ifs6_in_noroute;	/* # of datagrams with no route */	u_quad_t ifs6_in_addrerr;	/* # of datagrams with invalid dst */	u_quad_t ifs6_in_protounknown;	/* # of datagrams with unknown proto */					/* NOTE: increment on final dst if */	u_quad_t ifs6_in_truncated;	/* # of truncated datagrams */	u_quad_t ifs6_in_discard;	/* # of discarded datagrams */					/* NOTE: fragment timeout is not here */	u_quad_t ifs6_in_deliver;	/* # of datagrams delivered to ULP */					/* NOTE: increment on final dst if */	u_quad_t ifs6_out_forward;	/* # of datagrams forwarded */					/* NOTE: increment on outgoing if */	u_quad_t ifs6_out_request;	/* # of outgoing datagrams from ULP */					/* NOTE: does not include forwrads */	u_quad_t ifs6_out_discard;	/* # of discarded datagrams */	u_quad_t ifs6_out_fragok;	/* # of datagrams fragmented */	u_quad_t ifs6_out_fragfail;	/* # of datagrams failed on fragment */	u_quad_t ifs6_out_fragcreat;	/* # of fragment datagrams */					/* NOTE: this is # after fragment */	u_quad_t ifs6_reass_reqd;	/* # of incoming fragmented packets */					/* NOTE: increment on final dst if */	u_quad_t ifs6_reass_ok;		/* # of reassembled packets */					/* NOTE: this is # after reass */					/* NOTE: increment on final dst if */	u_quad_t ifs6_reass_fail;	/* # of reass failures */					/* NOTE: may not be packet count */					/* NOTE: increment on final dst if */	u_quad_t ifs6_in_mcast;		/* # of inbound multicast datagrams */	u_quad_t ifs6_out_mcast;	/* # of outbound multicast datagrams */};/* * ICMPv6 interface statistics, as defined in RFC2466 Ipv6IfIcmpEntry. * XXX: I'm not sure if this file is the right place for this structure... */struct icmp6_ifstat {	/*	 * Input statistics	 */	/* ipv6IfIcmpInMsgs, total # of input messages */	u_quad_t ifs6_in_msg;	/* ipv6IfIcmpInErrors, # of input error messages */	u_quad_t ifs6_in_error;	/* ipv6IfIcmpInDestUnreachs, # of input dest unreach errors */	u_quad_t ifs6_in_dstunreach;	/* ipv6IfIcmpInAdminProhibs, # of input administratively prohibited errs */	u_quad_t ifs6_in_adminprohib;	/* ipv6IfIcmpInTimeExcds, # of input time exceeded errors */	u_quad_t ifs6_in_timeexceed;	/* ipv6IfIcmpInParmProblems, # of input parameter problem errors */	u_quad_t ifs6_in_paramprob;	/* ipv6IfIcmpInPktTooBigs, # of input packet too big errors */	u_quad_t ifs6_in_pkttoobig;	/* ipv6IfIcmpInEchos, # of input echo requests */	u_quad_t ifs6_in_echo;	/* ipv6IfIcmpInEchoReplies, # of input echo replies */	u_quad_t ifs6_in_echoreply;	/* ipv6IfIcmpInRouterSolicits, # of input router solicitations */	u_quad_t ifs6_in_routersolicit;	/* ipv6IfIcmpInRouterAdvertisements, # of input router advertisements */	u_quad_t ifs6_in_routeradvert;	/* ipv6IfIcmpInNeighborSolicits, # of input neighbor solicitations */	u_quad_t ifs6_in_neighborsolicit;	/* ipv6IfIcmpInNeighborAdvertisements, # of input neighbor advertisements */	u_quad_t ifs6_in_neighboradvert;	/* ipv6IfIcmpInRedirects, # of input redirects */	u_quad_t ifs6_in_redirect;	/* ipv6IfIcmpInGroupMembQueries, # of input MLD queries */	u_quad_t ifs6_in_mldquery;	/* ipv6IfIcmpInGroupMembResponses, # of input MLD reports */	u_quad_t ifs6_in_mldreport;	/* ipv6IfIcmpInGroupMembReductions, # of input MLD done */	u_quad_t ifs6_in_mlddone;	/*	 * Output statistics. We should solve unresolved routing problem...	 */	/* ipv6IfIcmpOutMsgs, total # of output messages */	u_quad_t ifs6_out_msg;	/* ipv6IfIcmpOutErrors, # of output error messages */	u_quad_t ifs6_out_error;	/* ipv6IfIcmpOutDestUnreachs, # of output dest unreach errors */	u_quad_t ifs6_out_dstunreach;	/* ipv6IfIcmpOutAdminProhibs, # of output administratively prohibited errs */	u_quad_t ifs6_out_adminprohib;	/* ipv6IfIcmpOutTimeExcds, # of output time exceeded errors */	u_quad_t ifs6_out_timeexceed;	/* ipv6IfIcmpOutParmProblems, # of output parameter problem errors */	u_quad_t ifs6_out_paramprob;	/* ipv6IfIcmpOutPktTooBigs, # of output packet too big errors */	u_quad_t ifs6_out_pkttoobig;	/* ipv6IfIcmpOutEchos, # of output echo requests */	u_quad_t ifs6_out_echo;	/* ipv6IfIcmpOutEchoReplies, # of output echo replies */	u_quad_t ifs6_out_echoreply;	/* ipv6IfIcmpOutRouterSolicits, # of output router solicitations */	u_quad_t ifs6_out_routersolicit;	/* ipv6IfIcmpOutRouterAdvertisements, # of output router advertisements */	u_quad_t ifs6_out_routeradvert;	/* ipv6IfIcmpOutNeighborSolicits, # of output neighbor solicitations */	u_quad_t ifs6_out_neighborsolicit;	/* ipv6IfIcmpOutNeighborAdvertisements, # of output neighbor advertisements */	u_quad_t ifs6_out_neighboradvert;	/* ipv6IfIcmpOutRedirects, # of output redirects */	u_quad_t ifs6_out_redirect;	/* ipv6IfIcmpOutGroupMembQueries, # of output MLD queries */	u_quad_t ifs6_out_mldquery;	/* ipv6IfIcmpOutGroupMembResponses, # of output MLD reports */	u_quad_t ifs6_out_mldreport;	/* ipv6IfIcmpOutGroupMembReductions, # of output MLD done */	u_quad_t ifs6_out_mlddone;};struct	in6_ifreq {	char	ifr_name[IFNAMSIZ];	union {		struct	sockaddr_in6 ifru_addr;		struct	sockaddr_in6 ifru_dstaddr;		short	ifru_flags;		int	ifru_flags6;		int	ifru_metric;		caddr_t	ifru_data;		struct in6_addrlifetime ifru_lifetime;		struct in6_ifstat ifru_stat;		struct icmp6_ifstat ifru_icmp6stat;		u_int32_t ifru_scope_id[16];	} ifr_ifru;};struct	in6_aliasreq {	char	ifra_name[IFNAMSIZ];	struct	sockaddr_in6 ifra_addr;	struct	sockaddr_in6 ifra_dstaddr;	struct	sockaddr_in6 ifra_prefixmask;	int	ifra_flags;	struct in6_addrlifetime ifra_lifetime;};/* prefix type macro */#define IN6_PREFIX_ND	1#define IN6_PREFIX_RR	2/* * prefix related flags passed between kernel(NDP related part) and * user land command(ifconfig) and daemon(rtadvd). */struct in6_prflags {	struct prf_ra {		u_char onlink : 1;		u_char autonomous : 1;		u_char reserved : 6;	} prf_ra;	u_char prf_reserved1;	u_short prf_reserved2;	/* want to put this on 4byte offset */	struct prf_rr {		u_char decrvalid : 1;		u_char decrprefd : 1;		u_char reserved : 6;	} prf_rr;	u_char prf_reserved3;	u_short prf_reserved4;};struct  in6_prefixreq {	char	ipr_name[IFNAMSIZ];	u_char	ipr_origin;	u_char	ipr_plen;	u_int32_t ipr_vltime;	u_int32_t ipr_pltime;	struct in6_prflags ipr_flags;	struct	sockaddr_in6 ipr_prefix;};#define PR_ORIG_RA	0#define PR_ORIG_RR	1#define PR_ORIG_STATIC	2#define PR_ORIG_KERNEL	3#define ipr_raf_onlink		ipr_flags.prf_ra.onlink#define ipr_raf_auto		ipr_flags.prf_ra.autonomous#define ipr_statef_onlink	ipr_flags.prf_state.onlink#define ipr_rrf_decrvalid	ipr_flags.prf_rr.decrvalid#define ipr_rrf_decrprefd	ipr_flags.prf_rr.decrprefd

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -