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

📄 in6.h

📁 嵌入式操作系统ECOS的网络开发包
💻 H
📖 第 1 页 / 共 3 页
字号:
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \
	{ 0, 0 }, \
	{ 0, 0 }, \
	{ 0, 0 }, \
	{ "pim6", CTLTYPE_NODE }, \
}

/*
 * Names for IP sysctl objects
 */
#define IPV6CTL_FORWARDING	1	/* act as router */
#define IPV6CTL_SENDREDIRECTS	2	/* may send redirects when forwarding*/
#define IPV6CTL_DEFHLIM		3	/* default Hop-Limit */
#ifdef notyet
#define IPV6CTL_DEFMTU		4	/* default MTU */
#endif
#define IPV6CTL_FORWSRCRT	5	/* forward source-routed dgrams */
#define IPV6CTL_STATS		6	/* stats */
#define IPV6CTL_MRTSTATS	7	/* multicast forwarding stats */
#define IPV6CTL_MRTPROTO	8	/* multicast routing protocol */
#define IPV6CTL_MAXFRAGPACKETS	9	/* max packets reassembly queue */
#define IPV6CTL_SOURCECHECK	10	/* verify source route and intf */
#define IPV6CTL_SOURCECHECK_LOGINT 11	/* minimume logging interval */
#define IPV6CTL_ACCEPT_RTADV	12
#define IPV6CTL_KEEPFAITH	13
#define IPV6CTL_LOG_INTERVAL	14
#define IPV6CTL_HDRNESTLIMIT	15
#define IPV6CTL_DAD_COUNT	16
#define IPV6CTL_AUTO_FLOWLABEL	17
#define IPV6CTL_DEFMCASTHLIM	18
#define IPV6CTL_GIF_HLIM	19	/* default HLIM for gif encap packet */
#define IPV6CTL_KAME_VERSION	20
#define IPV6CTL_USE_DEPRECATED	21	/* use deprecated addr (RFC2462 5.5.4) */
#define IPV6CTL_RR_PRUNE	22	/* walk timer for router renumbering */
#if 0	/* obsolete */
#define IPV6CTL_MAPPED_ADDR	23
#endif
#define IPV6CTL_V6ONLY		24
#ifdef __FreeBSD__
#define IPV6CTL_RTEXPIRE	25	/* cloned route expiration time */
#define IPV6CTL_RTMINEXPIRE	26	/* min value for expiration time */
#define IPV6CTL_RTMAXCACHE	27	/* trigger level for dynamic expire */
#endif
#ifdef __NetBSD__
#define IPV6CTL_ANONPORTMIN	28	/* minimum ephemeral port */
#define IPV6CTL_ANONPORTMAX	29	/* maximum ephemeral port */
#define IPV6CTL_LOWPORTMIN	30	/* minimum reserved port */
#define IPV6CTL_LOWPORTMAX	31	/* maximum reserved port */
#endif
#define IPV6CTL_USETEMPADDR	32	/* use temporary addresses for
					   privacy extension */
#define IPV6CTL_TEMPPLTIME	33	/* preferred lifetime for tmpaddrs */
#define IPV6CTL_TEMPVLTIME	34	/* valid lifetime for tmpaddrs */
#define IPV6CTL_AUTO_LINKLOCAL	35	/* automatic link-local addr assign */
#define IPV6CTL_RIP6STATS	36	/* raw_ip6 stats */
#define IPV6CTL_PREFER_TEMPADDR	37	/* prefer temporary addr as src */
#define IPV6CTL_ADDRCTLPOLICY	38	/* get/set address selection policy */
#define IPV6CTL_USE_DEFAULTZONE	39	/* use default scope zone */

/* New entries should be added here from current IPV6CTL_MAXID value. */
/* to define items, should talk with KAME guys first, for *BSD compatibility */
#define IPV6CTL_MAXID		40

#ifdef IPV6CTL_RTEXPIRE
#define __IPV6CTL_NAMES_RTEXPIRE	"rtexpire"
#define __IPV6CTL_TYPE_RTEXPIRE		CTLTYPE_INT
#define __IPV6CTL_VARS_RTEXPIRE		0	/* &rtq_reallyold */
#else
#define __IPV6CTL_NAMES_RTEXPIRE	0
#define __IPV6CTL_TYPE_RTEXPIRE		0
#define __IPV6CTL_VARS_RTEXPIRE		0
#endif

#ifdef IPV6CTL_RTMINEXPIRE
#define __IPV6CTL_NAMES_RTMINEXPIRE	"minexpire"
#define __IPV6CTL_TYPE_RTMINEXPIRE	CTLTYPE_INT
#define __IPV6CTL_VARS_RTMINEXPIRE	0	/* &rtq_minreallyold */
#else
#define __IPV6CTL_NAMES_RTMINEXPIRE	0
#define __IPV6CTL_TYPE_RTMINEXPIRE	0
#define __IPV6CTL_VARS_RTMINEXPIRE	0
#endif

#ifdef IPV6CTL_RTMAXCACHE
#define __IPV6CTL_NAMES_RTMAXCACHE	"maxcache"
#define __IPV6CTL_TYPE_RTMAXCACHE	CTLTYPE_INT
#define __IPV6CTL_VARS_RTMAXCACHE	0	/* &rtq_toomany */
#else
#define __IPV6CTL_NAMES_RTMAXCACHE	0
#define __IPV6CTL_TYPE_RTMAXCACHE	0
#define __IPV6CTL_VARS_RTMAXCACHE	0
#endif

#ifdef IPV6CTL_ANONPORTMIN
#define __IPV6CTL_NAMES_ANONPORTMIN	"anonportmin"
#define __IPV6CTL_TYPE_ANONPORTMIN	CTLTYPE_INT
#define __IPV6CTL_VARS_ANONPORTMIN	0
#else
#define __IPV6CTL_NAMES_ANONPORTMIN	0
#define __IPV6CTL_TYPE_ANONPORTMIN	0
#define __IPV6CTL_VARS_ANONPORTMIN	0
#endif

#ifdef IPV6CTL_ANONPORTMAX
#define __IPV6CTL_NAMES_ANONPORTMAX	"anonportmax"
#define __IPV6CTL_TYPE_ANONPORTMAX	CTLTYPE_INT
#define __IPV6CTL_VARS_ANONPORTMAX	0
#else
#define __IPV6CTL_NAMES_ANONPORTMAX	0
#define __IPV6CTL_TYPE_ANONPORTMAX	0
#define __IPV6CTL_VARS_ANONPORTMAX	0
#endif

#ifdef IPV6CTL_LOWPORTMIN
#define __IPV6CTL_NAMES_LOWPORTMIN	"lowportmin"
#define __IPV6CTL_TYPE_LOWPORTMIN	CTLTYPE_INT
#define __IPV6CTL_VARS_LOWPORTMIN	0
#else
#define __IPV6CTL_NAMES_LOWPORTMIN	0
#define __IPV6CTL_TYPE_LOWPORTMIN	0
#define __IPV6CTL_VARS_LOWPORTMIN	0
#endif

#ifdef IPV6CTL_LOWPORTMAX
#define __IPV6CTL_NAMES_LOWPORTMAX	"lowportmax"
#define __IPV6CTL_TYPE_LOWPORTMAX	CTLTYPE_INT
#define __IPV6CTL_VARS_LOWPORTMAX	0
#else
#define __IPV6CTL_NAMES_LOWPORTMAX	0
#define __IPV6CTL_TYPE_LOWPORTMAX	0
#define __IPV6CTL_VARS_LOWPORTMAX	0
#endif


#define IPV6CTL_NAMES { \
	{ 0, 0 }, \
	{ "forwarding", CTLTYPE_INT }, \
	{ "redirect", CTLTYPE_INT }, \
	{ "hlim", CTLTYPE_INT }, \
	{ "mtu", CTLTYPE_INT }, \
	{ "forwsrcrt", CTLTYPE_INT }, \
	{ 0, 0 }, \
	{ 0, 0 }, \
	{ "mrtproto", CTLTYPE_INT }, \
	{ "maxfragpackets", CTLTYPE_INT }, \
	{ "sourcecheck", CTLTYPE_INT }, \
	{ "sourcecheck_logint", CTLTYPE_INT }, \
	{ "accept_rtadv", CTLTYPE_INT }, \
	{ "keepfaith", CTLTYPE_INT }, \
	{ "log_interval", CTLTYPE_INT }, \
	{ "hdrnestlimit", CTLTYPE_INT }, \
	{ "dad_count", CTLTYPE_INT }, \
	{ "auto_flowlabel", CTLTYPE_INT }, \
	{ "defmcasthlim", CTLTYPE_INT }, \
	{ "gifhlim", CTLTYPE_INT }, \
	{ "kame_version", CTLTYPE_STRING }, \
	{ "use_deprecated", CTLTYPE_INT }, \
	{ "rr_prune", CTLTYPE_INT }, \
	{ 0, 0 }, \
	{ "v6only", CTLTYPE_INT }, \
	{ __IPV6CTL_NAMES_RTEXPIRE, __IPV6CTL_TYPE_RTEXPIRE }, \
	{ __IPV6CTL_NAMES_RTMINEXPIRE, __IPV6CTL_TYPE_RTMINEXPIRE }, \
	{ __IPV6CTL_NAMES_RTMAXCACHE, __IPV6CTL_TYPE_RTMAXCACHE }, \
	{ __IPV6CTL_NAMES_ANONPORTMIN, __IPV6CTL_TYPE_ANONPORTMIN }, \
	{ __IPV6CTL_NAMES_ANONPORTMAX, __IPV6CTL_TYPE_ANONPORTMAX }, \
	{ __IPV6CTL_NAMES_LOWPORTMIN, __IPV6CTL_TYPE_LOWPORTMIN }, \
	{ __IPV6CTL_NAMES_LOWPORTMAX, __IPV6CTL_TYPE_LOWPORTMAX }, \
	{ "use_tempaddr", CTLTYPE_INT }, \
	{ "temppltime", CTLTYPE_INT }, \
	{ "tempvltime", CTLTYPE_INT }, \
	{ "auto_linklocal", CTLTYPE_INT }, \
	{ 0, 0 }, \
	{ "prefer_tempaddr", CTLTYPE_INT }, \
	{ 0, 0 }, \
	{ "use_defaultzone", CTLTYPE_INT }, \
}

#ifdef __bsdi__
#define IPV6CTL_VARS { \
	0, \
	&ip6_forwarding, \
	&ip6_sendredirects, \
	&ip6_defhlim, \
	0, \
	&ip6_forward_srcrt, \
	0, \
	0, \
	0, \
	&ip6_maxfragpackets, \
	&ip6_sourcecheck, \
	&ip6_sourcecheck_interval, \
	&ip6_accept_rtadv, \
	&ip6_keepfaith, \
	&ip6_log_interval, \
	&ip6_hdrnestlimit, \
	&ip6_dad_count, \
	&ip6_auto_flowlabel, \
	&ip6_defmcasthlim, \
	&ip6_gif_hlim, \
	0, \
	&ip6_use_deprecated, \
	&ip6_rr_prune, \
	0, \
	&ip6_v6only, \
	__IPV6CTL_VARS_RTEXPIRE, \
	__IPV6CTL_VARS_RTMINEXPIRE, \
	__IPV6CTL_VARS_RTMAXCACHE, \
	__IPV6CTL_VARS_ANONPORTMIN, \
	__IPV6CTL_VARS_ANONPORTMAX, \
	__IPV6CTL_VARS_LOWPORTMIN, \
	__IPV6CTL_VARS_LOWPORTMAX, \
	&ip6_use_tempaddr, \
	&ip6_temp_preferred_lifetime, \
	&ip6_temp_valid_lifetime, \
	&ip6_auto_linklocal, \
	0, \
	&ip6_prefer_tempaddr, \
	0, \
	&ip6_use_defzone,\
}
#endif
#endif /* !_XOPEN_SOURCE */

/*
 * Redefinition of mbuf flags
 */
#define	M_AUTHIPHDR	M_PROTO2
#define	M_DECRYPTED	M_PROTO3
#define	M_LOOP		M_PROTO4
#define	M_AUTHIPDGM	M_PROTO5

#ifdef _KERNEL
struct cmsghdr;
struct mbuf;
struct ifnet;

int	in6_cksum __P((struct mbuf *, u_int8_t, u_int32_t, u_int32_t));
int	in6_localaddr __P((struct in6_addr *));
int	in6_addrscope __P((struct in6_addr *));
struct	in6_ifaddr *in6_ifawithifp __P((struct ifnet *, struct in6_addr *));
extern void in6_if_up __P((struct ifnet *));
struct sockaddr;

void	in6_sin6_2_sin __P((struct sockaddr_in *sin,
			    struct sockaddr_in6 *sin6));
void	in6_sin_2_v4mapsin6 __P((struct sockaddr_in *sin,
				 struct sockaddr_in6 *sin6));
void	in6_sin6_2_sin_in_sock __P((struct sockaddr *nam));
void	in6_sin_2_v4mapsin6_in_sock __P((struct sockaddr **nam));
extern void addrsel_policy_init __P((void));

#define	satosin6(sa)	((struct sockaddr_in6 *)(sa))
#define	sin6tosa(sin6)	((struct sockaddr *)(sin6))
#define	ifatoia6(ifa)	((struct in6_ifaddr *)(ifa))
#endif /* _KERNEL */

__BEGIN_DECLS
struct cmsghdr;

extern int inet6_option_space __P((int));
extern int inet6_option_init __P((void *, struct cmsghdr **, int));
extern int inet6_option_append __P((struct cmsghdr *, const u_int8_t *,
	int, int));
extern u_int8_t *inet6_option_alloc __P((struct cmsghdr *, int, int, int));
extern int inet6_option_next __P((const struct cmsghdr *, u_int8_t **));
extern int inet6_option_find __P((const struct cmsghdr *, u_int8_t **, int));

extern size_t inet6_rthdr_space __P((int, int));
extern struct cmsghdr *inet6_rthdr_init __P((void *, int));
extern int inet6_rthdr_add __P((struct cmsghdr *, const struct in6_addr *,
		unsigned int));
extern int inet6_rthdr_lasthop __P((struct cmsghdr *, unsigned int));
#if 0 /* not implemented yet */
extern int inet6_rthdr_reverse __P((const struct cmsghdr *, struct cmsghdr *));
#endif
extern int inet6_rthdr_segments __P((const struct cmsghdr *));
extern struct in6_addr *inet6_rthdr_getaddr __P((struct cmsghdr *, int));
extern int inet6_rthdr_getflags __P((const struct cmsghdr *, int));

extern int inet6_opt_init __P((void *, size_t));
extern int inet6_opt_append __P((void *, size_t, int, u_int8_t,
				 size_t, u_int8_t, void **));
extern int inet6_opt_finish __P((void *, size_t, int));
extern int inet6_opt_set_val __P((void *, size_t, void *, int));

extern int inet6_opt_next __P((void *, size_t, int, u_int8_t *,
			       size_t *, void **));
extern int inet6_opt_find __P((void *, size_t, int, u_int8_t,
			  size_t *, void **));
extern int inet6_opt_get_val __P((void *, size_t, void *, int));
extern size_t inet6_rth_space __P((int, int));
extern void *inet6_rth_init __P((void *, int, int, int));
extern int inet6_rth_add __P((void *, const struct in6_addr *));
extern int inet6_rth_reverse __P((const void *, void *));
extern int inet6_rth_segments __P((const void *));
extern struct in6_addr *inet6_rth_getaddr __P((const void *, int));

/* the followings two are experimental.  should not merge them to *BSD. */
struct sockaddr;		/* XXX */

extern int addr2scopetype __P((struct sockaddr *));
extern int inet_zoneid __P((int, int, char *, u_int32_t *));
__END_DECLS

#endif /* !_NETINET6_IN6_H_ */

⌨️ 快捷键说明

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