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

📄 if_var.h

📁 vxworks 6.x 的全部头文件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* if_var.h - network interface variable header file */ /* * Copyright (c) 2001-2005 Wind River Systems, Inc. * * The right to copy, distribute, modify or otherwise make use * of this software may be licensed only pursuant to the terms * of an applicable Wind River license agreement. */ /* * Copyright (c) 1982, 1986, 1989, 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. * *	From: @(#)if.h	8.1 (Berkeley) 6/10/93 * $FreeBSD: src/sys/net/if_var.h,v 1.62 2003/11/12 03:14:29 rwatson Exp $ * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.15 2002/06/28 12:36:54 luigi Exp $ *//*modification history--------------------02h,21sep05,kch  Added if_xname[] to ifnet structure, introduced if_name()                  macro to replace if_name() routine for backward compatibility.                 Also added if_initname() prototype (merged from FreeBSD 5.x                 if_var.h,v 1.84.2.6) (SPR #112724).02g,29aug05,kch  Added if_nvlans counter to ifnet structure (SPR #112068).02f,26aug05,dlk  Add section tags.02e,26aug05,kch  Removed pTagData pointer from ifnet structure.02d,12aug05,kch  Moved ifclone prototypes to if_clone.h.02c,04aug05,vvv  clarified comments for if_index and ifIndex (SPR #106657)02b,16jul05,dlk  Added intrqFlush() declaration for VIRTUAL_STACK case.02a,25jun05,dlk  Added INTRQ_QJOB definition.01z,24jun05,wap  Add link state support01y,09may05,vvv  added include for if.h01x,19apr05,rp   merged from comp_wn_ipv6_mld_interim-dev01w,07feb05,vvv  _KERNEL cleanup01v,10sep04,kc   Added VLAN_TAG define to protect pTagData in ifnet structure.01u,12jul04,vvv  fixed compiler warning01t,28may04,niq  Merging from base6 label POST_ITER5_FRZ16_REBASE (ver                 /main/vdt/base6_itn5_networking-int/1)01s,14may04,kc   Added pTagData to struct ifnet for L2 VLAN Tagging support.01r,25feb04,nee  Adding if6_resolve to ifnet01q,24feb04,dlk  Add closing brace if __cplusplus is defined.01p,03feb04,wap  Add extra structure fields for checksum offload support01o,02feb04,dlk  Restore interface output queues (repair IF_ENQUEUE()).01n,20nov03,niq  osdep.h cleanup01m,04nov03,rlm  Ran batch header path update for header re-org.01l,03nov03,rlm  Removed wrn/coreip/ prefix from #includes for header re-org.01k,23oct03,rlm  updated #includes for header re-org01j,24sep03,kkz  Rebasing with BASE6_ITER2_FRZ7 - added IF_DEQUEUEIF macro01i,08aug03,nee  Merging from label ACCORDION_BASE6_MERGE_BASELINE in                 accordion codeline to Base601h,01feb03,pas  merge from FreeBSD 4.7 - added clone support, polling;                 changed if_queue_drop() to if_handoff()01g,18sep02,nee  removed ifr_type from ifreq structure01f,09sep02,hsh  add c++ protection01e,24aug02,nee  extended ifnet for admin control;defined admin states for                 boot/up/down01d,13feb02,ham  changed for tornado build.01c,06oct01,ann  removing the prototypes for ether_output and                 ether_output_frame01b,11sep01,ann  adding the if_resolve func pointer that is missing01a,16jul01,ham  created from FreeBSD4.3.*/#ifndef	_NET_IF_VAR_H_#define	_NET_IF_VAR_H_/* * Structures defining a network interface, providing a packet * transport mechanism (ala level 0 of the PUP protocols). * * Each interface accepts output datagrams of a specified maximum * length, and provides higher level routines with input datagrams * received from its medium. * * Output occurs when the routine if_output is called, with three parameters: *	(*ifp->if_output)(ifp, m, dst, rt) * Here m is the mbuf chain to be sent and dst is the destination address. * The output routine encapsulates the supplied datagram if necessary, * and then transmits it on its medium. * * On input, each interface unwraps the data received by it, and either * places it on the input queue of an internetwork datagram routine * and posts the associated software interrupt, or passes the datagram to a raw * packet input routine. * * Routines exist for locating interfaces by their addresses * or for locating an interface on a certain network, as well as more general * routing and gateway routines maintaining information used to locate * interfaces.  These routines live in the files if.c and route.c */#ifdef __cplusplus extern "C" {#endif     #ifdef __STDC__/* * Forward structure declarations for function prototypes [sic]. */struct	mbuf;struct	proc;struct	rtentry;struct	socket;struct	ether_header;#endif /* __STDC_ */#include <sys/queue.h>	/* get TAILQ macros */#include <net/mbuf.h>#include <net/systm.h>	/* XXX */#ifdef VIRTUAL_STACK#include <netinet/vsLib.h>#endif /* VIRTUAL_STACK */#include <net/unixLib.h>#include <net/if.h>            /* needed for struct if_data */#include <jobQueueLib.h>TAILQ_HEAD(ifnethead, ifnet);   /* we use TAILQs so that the order of */TAILQ_HEAD(ifaddrhead, ifaddr);	/* instantiation is preserved in the list */TAILQ_HEAD(ifprefixhead, ifprefix);LIST_HEAD(ifmultihead, ifmultiaddr);/* * Structure defining a queue for a network interface. */struct	ifqueue {	struct	mbuf *ifq_head;	struct	mbuf *ifq_tail;	int	ifq_len;	int	ifq_maxlen;	int	ifq_drops;};/* Job for dequeueing packets on protocol input queues (loopback only) */typedef struct _INTRQ_QJOB{	QJOB job;	struct ifqueue * ifq;	void (* input) (struct mbuf *);#ifdef VIRTUAL_STACK	int vsnum;#endif} INTRQ_QJOB;/* * Structure defining a network interface. * * (Would like to call this struct ``if'', but C isn't PL/1.) *//* * NB: For FreeBSD, it is assumed that each NIC driver's softc starts with   * one of these structures, typically held within an arpcom structure.    *  *	struct <foo>_softc { *		struct arpcom { *			struct  ifnet ac_if; *			... *		} <arpcom> ; *		...    *	}; * * The assumption is used in a number of places, including many * files in sys/net, device drivers, and sys/dev/mii.c:miibus_attach(). *  * Unfortunately devices' softc are opaque, so we depend on this layout * to locate the struct ifnet from the softc in the generic code. * * Note that not all fields are used by drivers in the FreeBSD source * tree. However, who knows what third party software does with fields * marked as "unused", such as if_ipending, if_done, and if_poll*, * so any attemt to redefine their meaning might end up in binary * compatibility problems, even if the size of struct ifnet, and * the size and position of its fields do not change. * We just have to live with that. */struct ifnet {	void	*if_softc;		/* pointer to driver state */	char	if_xname[IFNAMSIZ];	/* external name (name + unit) */	char	*if_name;		/* name, e.g. ``en'' or ``lo'' */	TAILQ_ENTRY(ifnet) if_link; 	/* all struct ifnets are chained */	struct	ifaddrhead if_addrhead;	/* linked list of addresses per if */        int	if_pcount;		/* number of promiscuous listeners */	struct	bpf_if *if_bpf;		/* packet filter structure */	UINT32  ifIndex;                /* External index for this if. It */	                                /* is the index used by the MIBs. */					/* It was added specifically for  */					/* MIB compliance (monotonically  */					/* increasing index by default).  */        u_short	if_index;		/* Internal index for this if. It  */	                                /* is the index used by the stack. */					/* An index can be re-used.        */       	short	if_unit;		/* sub-unit for lower level driver */	short	if_timer;		/* time 'til if_watchdog called */	u_short	if_nvlans;		/* number of active vlans */	long	if_flags;		/* up/down, broadcast, etc. */	int	if_ipending;		/* interrupts pending */	void	*if_linkmib;		/* link-type-specific MIB data */	size_t	if_linkmiblen;		/* length of above data */	struct	if_data if_data;	struct	ifmultihead if_multiaddrs; /* multicast addresses configured */	int	if_amcount;		/* number of all-multicast requests *//* procedure handles */	int	(*if_output)		/* output routine (enqueue) */		(struct ifnet *, struct mbuf *, struct sockaddr *,		     struct rtentry *);	void	(*if_start)		/* initiate output routine */		(struct ifnet *);	union {		int	(*if_done)		/* output complete routine */			(struct ifnet *);	/* (XXX not used) */		int	uif_capabilities;	/* interface capabilities */	} _u1;	int	(*if_ioctl)		/* ioctl routine */		(struct ifnet *, u_long, caddr_t);	void	(*if_watchdog)		/* timer routine */		(struct ifnet *);	union {		int	(*if_poll_recv)		/* polled receive routine */			(struct ifnet *, int *);		int	uif_capenable;		/* enabled features */	} _u2;	int	(*if_poll_xmit)		/* polled transmit routine */		(struct ifnet *, int *);	void	(*if_poll_intren)	/* polled interrupt reenable routine */		(struct ifnet *);	void	(*if_poll_slowinput)	/* input routine for slow devices */		(struct ifnet *, struct mbuf *);	void	(*if_init)		/* Init routine */		(void *);/* Clarinet - added this func pointer as it is used in the WRS code */        int     (*if_resolve)();        /* arp resolve at driver level */        int     (*if6_resolve)();       /* nd resolve at driver level */	int	(*if_resolvemulti)	/* validate/resolve multicast */		(struct ifnet *, struct sockaddr **, struct sockaddr *);	struct	ifqueue if_snd;		/* output queue */	struct	ifqueue *if_poll_slowq;	/* input queue for slow devices */	struct	ifprefixhead if_prefixhead; /* list of prefixes per if *//* Clarinet - added this cookie that holds the drv_ctrl pointer */	void *  pCookie;                /* data for IP over MUX attachment */	int if_adminstatus; 	int admin_inet_status;  	int admin_inet6_status; /* RFC 2465, admin status control for IPv6 */	uint32_t if_csum_flags_tx;	uint32_t if_csum_flags_rx;#ifdef VIRTUAL_STACK    VSNUM vsNum;#endif /* VIRTUAL_STACK */    /* for IPV6, if_afdata[AF_INET6] points to in6_ifextra data structure */    void	*if_afdata[AF_MAX];      /* int	if_afdata_initialized; */

⌨️ 快捷键说明

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