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

📄 in6_var.h

📁 vxworks 6.x 的全部头文件
💻 H
📖 第 1 页 / 共 3 页
字号:
#define SIOCGSCOPE6DEF		_IOWR('i', 90, struct in6_ifreq)#define SIOCSIFPREFIX_IN6	_IOW('i', 100, struct in6_prefixreq) /* set */#define SIOCGIFPREFIX_IN6	_IOWR('i', 101, struct in6_prefixreq) /* get */#define SIOCDIFPREFIX_IN6	_IOW('i', 102, struct in6_prefixreq) /* del */#define SIOCAIFPREFIX_IN6	_IOW('i', 103, struct in6_rrenumreq) /* add */#define SIOCCIFPREFIX_IN6	_IOW('i', 104, \				     struct in6_rrenumreq) /* change */#define SIOCSGIFPREFIX_IN6	_IOW('i', 105, \				     struct in6_rrenumreq) /* set global */#define SIOCGETSGCNT_IN6	_IOWR('u', 106, \				      struct sioc_sg_req6) /* get s,g pkt cnt */#define SIOCGETMIFCNT_IN6	_IOWR('u', 107, \				      struct sioc_mif_req6) /* get pkt cnt per if */#define SIOCAADDRCTL_POLICY	_IOW('u', 108, struct in6_addrpolicy)#define SIOCDADDRCTL_POLICY	_IOW('u', 109, struct in6_addrpolicy)#define IN6_IFF_ANYCAST		0x01	/* anycast address */#define IN6_IFF_TENTATIVE	0x02	/* tentative address */#define IN6_IFF_DUPLICATED	0x04	/* DAD detected duplicate */#define IN6_IFF_DETACHED	0x08	/* may be detached from the link */#define IN6_IFF_DEPRECATED	0x10	/* deprecated address */#define IN6_IFF_NODAD		0x20	/* don't perform DAD on this address					 * (used only at first SIOC* call)					 */#define IN6_IFF_AUTOCONF	0x40	/* autoconfigurable address. */#define IN6_IFF_TEMPORARY	0x80	/* temporary (anonymous) address. */#define IN6_IFF_HOME		0x100	/* MIP6:home address */#define IN6_IFF_DEREGISTERING	0x200	/* MIP6:deregistering address */#define IN6_IFF_SUBNETANYCAST   0x4000  /* subnet anycast address *//* do not input/output */#define IN6_IFF_NOTREADY (IN6_IFF_TENTATIVE|IN6_IFF_DUPLICATED)/* flags which cannot be changed by hand */#ifndef MIP6#define IN6_IFF_READONLY (IN6_IFF_DUPLICATED|IN6_IFF_DETACHED|\    IN6_IFF_NODAD|IN6_IFF_TEMPORARY)#else/* Mobile IPv6 userland program requires to assign an address with NODAD. */#define IN6_IFF_READONLY (IN6_IFF_DUPLICATED|IN6_IFF_DETACHED|\    IN6_IFF_TEMPORARY)#endif /* !MIP6 */#ifdef _WRS_KERNEL#define IN6_ARE_SCOPE_CMP(a,b) ((a)-(b))#define IN6_ARE_SCOPE_EQUAL(a,b) ((a)==(b))#ifndef VIRTUAL_STACKextern struct in6_ifaddr *_in6_ifaddr;extern struct icmp6stat _icmp6stat;#endif /*VIRTUAL_STACK*/#define in6_ifstat_inc(ifp, tag) \do {								\	if (ifp)						\		((struct in6_ifextra *)((ifp)->if_afdata[AF_INET6]))->in6_ifstat->tag++; \} while (0)extern struct ifqueue ip6intrq;		/* IP6 packet input queue (loopback) */extern INTRQ_QJOB ip6intrqJob;extern struct in6_addr zeroin6_addr;extern u_char inet6ctlerrmap[];extern unsigned long in6_maxmtu;/* * Macro for finding the internet address structure (in6_ifaddr) corresponding * to a given interface (ifnet structure). */#define IFP_TO_IA6(ifp, ia)				\/* struct ifnet *ifp; */				\/* struct in6_ifaddr *ia; */				\do {									\	struct ifaddr *ifa;						\	for (ifa = (ifp)->if_addrlist.tqh_first; ifa; ifa = ifa->ifa_list.tqe_next) {	\		if (!ifa->ifa_addr)					\			continue;					\		if (ifa->ifa_addr->sa_family == AF_INET6)		\			break;						\	}								\	(ia) = (struct in6_ifaddr *)ifa;				\} while (0)/* * Multi-cast membership entry.  One for each group/ifp that a PCB * belongs to. */struct in6_multi_mship {	struct	in6_multi *i6mm_maddr;	/* Multicast address pointer */	struct	sock_msf *i6mm_msf;	/* Multicast source filters */	LIST_ENTRY(in6_multi_mship) i6mm_chain;  /* multicast options chain */};/* * Per-interface router version information; referred to when MLDv1/v2 coexists. */struct router6_info {        struct  ifnet *rt6i_ifp;	int    rt6i_type; /* type of router which is querier on this interface */	u_int	rt6i_timer1;	/* MLDv1 Querier Present timer */	u_int	rt6i_timer2;	/* MLDv2 Querier Present timer */	u_int	rt6i_qrv;	/* Querier Robustness Variable */	u_int	rt6i_qqi;	/* Querier Interval Variable */	u_int	rt6i_qri;	/* Querier Response Interval */	struct router6_info *rt6i_next;};struct callout;struct	in6_multi {	LIST_ENTRY(in6_multi) in6m_entry; /* list glue */	struct	in6_addr in6m_addr;	/* IP6 multicast address */	struct	ifnet *in6m_ifp;	/* back pointer to ifnet */	struct	ifmultiaddr *in6m_ifma;	/* back pointer to ifmultiaddr */	u_int	in6m_refcount;		/* # membership claims by sockets */	u_int	in6m_state;		/* state of the membership */	struct	router6_info *in6m_rti;	/* router info */	struct	in6_multi_source *in6m_source;	/* filtered source list */#ifdef MLDv2	u_int	in6m_timer;		/* MLD6 listener report timer */#else	int	in6m_timer;		/* delay to send the 1st report */	struct timeval in6m_timer_expire; /* when the timer expires */	struct callout *in6m_timer_ch;#endif};#define IN6M_TIMER_UNDEF -1/* flags to in6_update_ifa */#define IN6_IFAUPDATE_DADDELAY	0x1 /* first time to configure an address */extern LIST_HEAD(in6_multihead, in6_multi) _in6_multihead;/* * Structure used by macros below to remember position when stepping through * all of the in6_multi records. */struct	in6_multistep {	struct	in6_ifaddr *i_ia;	struct	in6_multi *i_in6m;};/* * Macros for looking up the in6_multi record for a given IP6 multicast * address on a given interface. If no matching record is found, "in6m" * returns NULL. */#define IN6_LOOKUP_MULTI(addr, ifp, in6m)			\/* struct in6_addr addr; */					\/* struct ifnet *ifp; */					\/* struct in6_multi *in6m; */					\do { \	struct ifmultiaddr *ifma; \	for (ifma = (ifp)->if_multiaddrs.lh_first; ifma; \	     ifma = ifma->ifma_link.le_next) { \		if (ifma->ifma_addr->sa_family == AF_INET6 \		    && IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *)ifma->ifma_addr)->sin6_addr, \					  &(addr))) \			break; \	} \	(in6m) = (struct in6_multi *)(ifma ? ifma->ifma_protospec : 0); \} while(0)/* * Macro to step through all of the in6_multi records, one at a time. * The current position is remembered in "step", which the caller must * provide.  IN6_FIRST_MULTI(), below, must be called to initialize "step" * and get the first record.  Both macros return a NULL "in6m" when there * are no remaining records. */#define IN6_NEXT_MULTI(step, in6m)					\/* struct in6_multistep step; */					\/* struct in6_multi *in6m; */						\do { \	if (((in6m) = (step).i_in6m) != NULL) \		(step).i_in6m = (step).i_in6m->in6m_entry.le_next; \} while(0)#define IN6_FIRST_MULTI(step, in6m)		\/* struct in6_multistep step; */		\/* struct in6_multi *in6m */			\do { \	(step).i_in6m = _in6_multihead.lh_first; \		IN6_NEXT_MULTI((step), (in6m)); \} while(0)/* * Macros for looking up the in6_multi_mship record for a given IP6 multicast * address on a given interface. If no matching record is found, "imm" * returns NULL. */#define IN6_LOOKUP_MSHIP(addr, ifp, imop, imm)				\/* struct in6_addr addr; */						\/* struct ifnet *ifp; */						\/* struct ip6_moptions *imop */						\/* struct in6_multi_mship *imm; */					\do {									\	for ((imm) = (imop)->im6o_memberships.lh_first;			\    (imm) != NULL; (imm) = (imm)->i6mm_chain.le_next) {	\   if ((imm)->i6mm_maddr->in6m_ifp != (ifp))		\           continue;					\   if (!IN6_ARE_ADDR_EQUAL(&(imm)->i6mm_maddr->in6m_addr,	\       &(addr)))						\       continue;					\   break;							\    }								\} while (/*CONSTCOND*/ 0)    struct	in6_multi *in6_addmulti __P((struct in6_addr *,	struct ifnet *, int *, int));void	in6_delmulti __P((struct in6_multi *));struct in6_multi_mship *in6_joingroup __P((struct ifnet *,	struct in6_addr *, int *, int));int	in6_leavegroup __P((struct in6_multi_mship *));#ifdef MLDV2struct	in6_multi *in6_addmulti2(struct in6_addr *, struct ifnet *,	int *, u_int16_t, struct sockaddr_storage *, u_int, int);void	in6_delmulti2(struct in6_multi *, int *, u_int16_t,	struct sockaddr_storage *, u_int, int);struct	in6_multi *in6_modmulti2(struct in6_addr *, struct ifnet *,	int *, u_int16_t, struct sockaddr_storage *, u_int, u_int16_t,	struct sockaddr_storage *, u_int, int, u_int);#endifint in6_mask2len __P((struct in6_addr *, u_char *));extern void in6_len2mask __P((struct in6_addr *, int));int	in6_control __P((struct socket *,			 u_long, caddr_t, struct ifnet *, struct proc *));int	in6_update_ifa __P((struct ifnet *, struct in6_aliasreq *,	struct in6_ifaddr *, int));void	in6_purgeaddr __P((struct ifaddr *));int	in6if_do_dad __P((struct ifnet *));void	in6_purgeif __P((struct ifnet *));void	in6_savemkludge __P((struct in6_ifaddr *));void	in6_setmaxmtu   __P((void));int	in6_if2idlen   __P((struct ifnet *));void	in6_restoremkludge __P((struct in6_ifaddr *, struct ifnet *));void	in6_createmkludge __P((struct ifnet *));void	in6_purgemkludge __P((struct ifnet *));struct in6_ifaddr *in6ifa_ifpforlinklocal __P((struct ifnet *, int));struct in6_ifaddr *in6ifa_ifpwithaddr __P((struct ifnet *, struct in6_addr *));char	*ip6_sprintf __P((const struct in6_addr *));int	in6_addr2zoneid __P((struct ifnet *, struct in6_addr *, u_int32_t *));int	in6_matchlen __P((struct in6_addr *, struct in6_addr *));int	in6_are_prefix_equal __P((struct in6_addr *, struct in6_addr *, int));void	in6_prefixlen2mask __P((struct in6_addr *, int));void	in6_purgeprefix __P((struct ifnet *));int in6_embedscope __P((struct in6_addr *, const struct sockaddr_in6 *));int in6_recoverscope __P((struct sockaddr_in6 *, const struct in6_addr *,	struct ifnet *));void in6_clearscope __P((struct in6_addr *));int in6_src_ioctl __P((u_long, caddr_t));void	*in6_ifafdata_init(struct ifnet *);void	in6_ifafdata_delete(struct ifnet *);#endif /* _WRS_KERNEL */#ifdef __cplusplus}#endif#endif /* _NETINET6_IN6_VAR_H_ */

⌨️ 快捷键说明

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