diff options
Diffstat (limited to 'sys/net/if_var.h')
-rw-r--r-- | sys/net/if_var.h | 160 |
1 files changed, 1 insertions, 159 deletions
diff --git a/sys/net/if_var.h b/sys/net/if_var.h index afb58578e96b..831c609b3e2c 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -316,165 +316,6 @@ struct if_ratelimit_query_results { typedef void (if_ratelimit_query_t)(struct ifnet *, struct if_ratelimit_query_results *); typedef int (if_ratelimit_setup_t)(struct ifnet *, uint64_t, uint32_t); - -/* - * Structure defining a network interface. - */ -struct ifnet { - /* General book keeping of interface lists. */ - CK_STAILQ_ENTRY(ifnet) if_link; /* all struct ifnets are chained (CK_) */ - LIST_ENTRY(ifnet) if_clones; /* interfaces of a cloner */ - CK_STAILQ_HEAD(, ifg_list) if_groups; /* linked list of groups per if (CK_) */ - /* protected by if_addr_lock */ - u_char if_alloctype; /* if_type at time of allocation */ - uint8_t if_numa_domain; /* NUMA domain of device */ - /* Driver and protocol specific information that remains stable. */ - void *if_softc; /* pointer to driver state */ - void *if_llsoftc; /* link layer softc */ - void *if_l2com; /* pointer to protocol bits */ - const char *if_dname; /* driver name */ - int if_dunit; /* unit or IF_DUNIT_NONE */ - u_short if_index; /* numeric abbreviation for this if */ - u_short if_idxgen; /* ... and its generation count */ - char if_xname[IFNAMSIZ]; /* external name (name + unit) */ - char *if_description; /* interface description */ - - /* Variable fields that are touched by the stack and drivers. */ - int if_flags; /* up/down, broadcast, etc. */ - int if_drv_flags; /* driver-managed status flags */ - int if_capabilities; /* interface features & capabilities */ - int if_capabilities2; /* part 2 */ - int if_capenable; /* enabled features & capabilities */ - int if_capenable2; /* part 2 */ - void *if_linkmib; /* link-type-specific MIB data */ - size_t if_linkmiblen; /* length of above data */ - u_int if_refcount; /* reference count */ - - /* These fields are shared with struct if_data. */ - uint8_t if_type; /* ethernet, tokenring, etc */ - uint8_t if_addrlen; /* media address length */ - uint8_t if_hdrlen; /* media header length */ - uint8_t if_link_state; /* current link state */ - uint32_t if_mtu; /* maximum transmission unit */ - uint32_t if_metric; /* routing metric (external only) */ - uint64_t if_baudrate; /* linespeed */ - uint64_t if_hwassist; /* HW offload capabilities, see IFCAP */ - time_t if_epoch; /* uptime at attach or stat reset */ - struct timeval if_lastchange; /* time of last administrative change */ - - struct ifaltq if_snd; /* output queue (includes altq) */ - struct task if_linktask; /* task for link change events */ - struct task if_addmultitask; /* task for SIOCADDMULTI */ - - /* Addresses of different protocol families assigned to this if. */ - struct mtx if_addr_lock; /* lock to protect address lists */ - /* - * if_addrhead is the list of all addresses associated to - * an interface. - * Some code in the kernel assumes that first element - * of the list has type AF_LINK, and contains sockaddr_dl - * addresses which store the link-level address and the name - * of the interface. - * However, access to the AF_LINK address through this - * field is deprecated. Use if_addr instead. - */ - struct ifaddrhead if_addrhead; /* linked list of addresses per if */ - struct ifmultihead if_multiaddrs; /* multicast addresses configured */ - int if_amcount; /* number of all-multicast requests */ - struct ifaddr *if_addr; /* pointer to link-level address */ - void *if_hw_addr; /* hardware link-level address */ - const u_int8_t *if_broadcastaddr; /* linklevel broadcast bytestring */ - struct mtx if_afdata_lock; - void *if_afdata[AF_MAX]; - int if_afdata_initialized; - - /* Additional features hung off the interface. */ - u_int if_fib; /* interface FIB */ - struct vnet *if_vnet; /* pointer to network stack instance */ - struct vnet *if_home_vnet; /* where this ifnet originates from */ - struct ifvlantrunk *if_vlantrunk; /* pointer to 802.1q data */ - struct bpf_if *if_bpf; /* packet filter structure */ - int if_pcount; /* number of promiscuous listeners */ - void *if_bridge; /* bridge glue */ - void *if_lagg; /* lagg glue */ - void *if_pf_kif; /* pf glue */ - struct carp_if *if_carp; /* carp interface structure */ - struct label *if_label; /* interface MAC label */ - struct netmap_adapter *if_netmap; /* netmap(4) softc */ - - /* Various procedures of the layer2 encapsulation and drivers. */ - if_output_fn_t if_output; /* output routine (enqueue) */ - if_input_fn_t if_input; /* input routine (from h/w driver) */ - struct mbuf *(*if_bridge_input)(struct ifnet *, struct mbuf *); - int (*if_bridge_output)(struct ifnet *, struct mbuf *, struct sockaddr *, - struct rtentry *); - void (*if_bridge_linkstate)(struct ifnet *ifp); - if_start_fn_t if_start; /* initiate output routine */ - if_ioctl_fn_t if_ioctl; /* ioctl routine */ - if_init_fn_t if_init; /* Init routine */ - int (*if_resolvemulti) /* validate/resolve multicast */ - (struct ifnet *, struct sockaddr **, struct sockaddr *); - if_qflush_fn_t if_qflush; /* flush any queue */ - if_transmit_fn_t if_transmit; /* initiate output routine */ - - void (*if_reassign) /* reassign to vnet routine */ - (struct ifnet *, struct vnet *, char *); - if_get_counter_t if_get_counter; /* get counter values */ - int (*if_requestencap) /* make link header from request */ - (struct ifnet *, struct if_encap_req *); - - /* Statistics. */ - counter_u64_t if_counters[IFCOUNTERS]; - - /* Stuff that's only temporary and doesn't belong here. */ - - /* - * Network adapter TSO limits: - * =========================== - * - * If the "if_hw_tsomax" field is zero the maximum segment - * length limit does not apply. If the "if_hw_tsomaxsegcount" - * or the "if_hw_tsomaxsegsize" field is zero the TSO segment - * count limit does not apply. If all three fields are zero, - * there is no TSO limit. - * - * NOTE: The TSO limits should reflect the values used in the - * BUSDMA tag a network adapter is using to load a mbuf chain - * for transmission. The TCP/IP network stack will subtract - * space for all linklevel and protocol level headers and - * ensure that the full mbuf chain passed to the network - * adapter fits within the given limits. - */ - u_int if_hw_tsomax; /* TSO maximum size in bytes */ - u_int if_hw_tsomaxsegcount; /* TSO maximum segment count */ - u_int if_hw_tsomaxsegsize; /* TSO maximum segment size in bytes */ - - /* - * Network adapter send tag support: - */ - if_snd_tag_alloc_t *if_snd_tag_alloc; - - /* Ratelimit (packet pacing) */ - if_ratelimit_query_t *if_ratelimit_query; - if_ratelimit_setup_t *if_ratelimit_setup; - - /* Ethernet PCP */ - uint8_t if_pcp; - - /* - * Debugnet (Netdump) hooks to be called while in db/panic. - */ - struct debugnet_methods *if_debugnet_methods; - struct epoch_context if_epoch_ctx; - - /* - * Spare fields to be added before branching a stable branch, so - * that structure can be enhanced without changing the kernel - * binary interface. - */ - int if_ispare[4]; /* general use */ -}; - #define IF_NODOM 255 /* * Locks for address lists on the network interface. @@ -834,6 +675,7 @@ int ether_poll_deregister(if_t ifp); #endif /* _KERNEL */ +#include <net/if_private.h> /* XXX: temporary until drivers converted. */ #include <net/ifq.h> /* XXXAO: temporary unconditional include */ #endif /* !_NET_IF_VAR_H_ */ |