📄 if.h
字号:
/* if.h - network interface header file *//* Copyright 2001 - 2005 Wind River Systems, Inc. *//* * 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. * * @(#)if.h 8.1 (Berkeley) 6/10/93 * $FreeBSD: src/sys/net/if.h,v 1.58.2.9 2002/08/30 14:23:38 sobomax Exp $ *//*modification history--------------------02i,30aug05,kch Added ifdeladdrreq structure (moved from if.c) (SPR #112068).02h,17aug05,mcm Including sys/time.h for struct timeval02g,26jul05,kch Move if_clone structure definition to if_clone.h.02f,30jun05,wap Move ifi_link_state for binary compatibility02e,24jun05,wap Add link state support02d,18feb05,wap Allow sysctl init routines to be scaled out02c,07feb05,vvv _KERNEL cleanup02b,14jan05,vvv osdep.h cleanup02a,23aug04,rp merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE01z,19jul04,niq Move sysctl initialization from configelette to the component init routine01y,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver /main/vdt/base6_itn5_networking-int/2)01x,09feb04,niq Include if_var.h only in kernel context01w,14dec03,ijm added IFF_PROXY_ALL for spr#85896,for interface based proxy01v,20nov03,niq osdep.h cleanup01u,04nov03,rlm Ran batch header path update for header re-org.01t,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.01s,24oct03,rlm updated #includes for header re-org01r,15sep03,vvv updated path for new headers01q,18aug03,nee Merging from ACCORDION_BASE6_MERGE_BASELINE01p,15may03,spm Tornado 2.2 FCS merge (SPR #69683; ver 01m,10oct01,rae: TOR2_2-FCS-COPY label, tor2 branch, /wind/river VOB)01o,09may03,vvv included socket.h01n,08may03,vvv fixed value for IFF_PPROMISC (SPR #88237)01m,01may03,spm Tornado 2.2 CP1 merge (from ver 01n,17jan03,vvv: TOR2_2-CP1-F label, tor2_2-patch branch, /wind/river VOB)01l,01feb03,pas merge from FreeBSD 4.7 - clone, announce interfaces01k,17sep02,nee added admin control macros01j,09sep02,hsh add c++ protection01i,24aug02,nee extended ifnet for admin control;defined admin states for boot/up/down01h,12jul02,hsh fix head file for ppc01g,03feb02,ham modified for tornado build.01f,16dec01,ann temporarily moving the if_name* declerations out the _KERNEL condition01e,24sep01,ppp adding the prototype for if_name and the macro for IFAREF01d,12sep01,ann adding some IFF flags01c,11sep01,ann uncomment ifi_lastchange01b,09sep01,ham changed header file's path, made ifi_lastchange obsolete.01a,16jul01,ham created from FreeBSD4.3-RELEASE(July-17-01).*/#ifndef __INCifh#define __INCifh#ifdef _WRS_KERNEL#include <sys/queue.h>#include <sys/times.h>#else#include <sys/time.h>#endif#include <sys/socket.h>#include <cfgDefs.h>#ifdef __cplusplus extern "C" {#endiftypedef struct if_config_params { CFG_DATA_HDR cfgh; int if_index_limit; int ifq_max_len; FUNCPTR cfg_privInitSysctl;} IF_CONFIG_PARAMS;struct ifnet;/* * Length of interface external name, including terminating '\0'. * Note: this is the same size as a generic device's external name. */#define IFNAMSIZ 16#define IF_NAMESIZE IFNAMSIZ/* * Structure used to query names of interface cloners. */struct if_clonereq { int ifcr_total; /* total cloners (out) */ int ifcr_count; /* room for this many in user buffer */ char *ifcr_buffer; /* buffer for cloner names */};/* * Structure describing information about an interface * which may be of interest to management entities. */struct if_data { /* generic interface information */ u_char ifi_type; /* ethernet, tokenring, etc */ u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */ u_char ifi_addrlen; /* media address length */ u_char ifi_hdrlen; /* media header length */ u_char ifi_recvquota; /* polling quota for receive intrs */ u_char ifi_xmitquota; /* polling quota for xmit intrs */ u_char ifi_link_state; /* current link state */ u_long ifi_mtu; /* maximum transmission unit */ u_long ifi_metric; /* routing metric (external only) */ u_long ifi_baudrate; /* linespeed */ /* volatile statistics */ u_long ifi_ipackets; /* packets received on interface */ u_long ifi_ierrors; /* input errors on interface */ u_long ifi_opackets; /* packets sent on interface */ u_long ifi_oerrors; /* output errors on interface */ u_long ifi_collisions; /* collisions on csma interfaces */ u_long ifi_ibytes; /* total number of octets received */ u_long ifi_obytes; /* total number of octets sent */ u_long ifi_imcasts; /* packets received via multicast */ u_long ifi_omcasts; /* packets sent via multicast */ u_long ifi_iqdrops; /* dropped on input, this interface */ u_long ifi_noproto; /* destined for unsupported protocol */ u_long ifi_hwassist; /* HW offload capabilities */ u_long ifi_unused; /* XXX was ifi_xmittiming */ struct timeval ifi_lastchange; /* time of last administrative change */};#define IFF_UP 0x1 /* interface link is up */#define IFF_BROADCAST 0x2 /* broadcast address valid */#define IFF_DEBUG 0x4 /* turn on debugging */#define IFF_LOOPBACK 0x8 /* is a loopback net */#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */#define IFF_SMART 0x20 /* interface manages own routes */#define IFF_RUNNING 0x40 /* resources allocated */#define IFF_NOARP 0x80 /* no address resolution protocol */#define IFF_PROMISC 0x100 /* receive all packets */#define IFF_ALLMULTI 0x200 /* receive all multicast packets */#define IFF_OACTIVE 0x400 /* transmission in progress */#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */#define IFF_LINK0 0x1000 /* forwarding disabled */#define IFF_LINK1 0x2000 /* per link layer defined bit */#define IFF_LINK2 0x4000 /* per link layer defined bit */#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */#define IFF_MULTICAST 0x8000 /* supports multicast */#define IFF_NOTRAILERS 0x20000 /* avoid use of trailers */#define IFF_INET_UP 0x40000 /* interface is up for ipv4 */#define IFF_INET6_UP 0x80000 /* interface is up for ipv6 */#define IFF_UNNUMBERED IFF_POINTOPOINT /* supports unnumbered interfaces */#define IFF_FPV4_ENABLE 0x100000 /* supports V4 fast forwarding */ #define IFF_FPV6_ENABLE 0x200000 /* supports V6 fast forwarding */#define IFF_PROXY_ALL 0x400000 /* enable Cisco style proxying */ #define IFF_DONT_FORWARD IFF_LINK0 /* forwarding disabled *//* * The following flag(s) ought to go in if_flags, but we cannot change * struct ifnet because of binary compatibility, so we store them in * if_ipending, which is not used so far. * If possible, make sure the value is not conflicting with other * IFF flags, so we have an easier time when we want to merge them. */#define IFF_POLLING 0x10000 /* Interface is in polling mode. */#define IFF_PPROMISC 0x800000 /* user-requested promisc mode *//* flags set internally only: */#define IFF_CANTCHANGE \ (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\ IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART|IFF_POLLING)#define IFF_UP_FLAGS (IFF_UP | IFF_INET_UP | IFF_INET6_UP)/* * Values for if_link_state. */#define LINK_STATE_UNKNOWN 0 /* link invalid/unknown */#define LINK_STATE_DOWN 1 /* link is down */#define LINK_STATE_UP 2 /* link is up *//* Capabilities that interfaces can advertise. */#define IFCAP_RXCSUM 0x0001 /* can offload checksum on RX */#define IFCAP_TXCSUM 0x0002 /* can offload checksum on TX */#define IFCAP_NETCONS 0x0004 /* can be a network console */#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)#define IFQ_MAXLEN 50#define IFNET_SLOWHZ 1 /* granularity is 1 second *//* admin flags */#define ADMIN_BOOT 0 /* for future use */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -