Files
Arquivotheca.SunOS-4.1.4/sys/net/nit.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

110 lines
3.5 KiB
C

/* @(#)nit.h 1.1 94/10/31 SMI */
/*
* Copyright (c) 1986 by Sun Microsystems, Inc.
*/
/*
* Constants and structures defined for nit
*/
#ifndef _net_nit_h
#define _net_nit_h
#define NITIFSIZ 10 /* size of ifname in sockaddr */
#define NITBUFSIZ 1024 /* buffers are rounded up to a
* multiple of this size (MCLBYTES) */
/*
* Protocols
*/
#define NITPROTO_RAW 1 /* raw protocol */
#define NITPROTO_MAX 2
/*
* Sockaddr_nit, as the "local address" associated with a raw socket,
* needs to uniquely identify the associated process, since this is
* what rawintr will use to distribute packets. We do not distribute
* on the "foreign address", as we need it to provide the outgoing
* network address.
*/
struct sockaddr_nit {
u_short snit_family;
caddr_t snit_cookie; /* link to filtering */
char snit_ifname[NITIFSIZ]; /* interface name (ie0) */
};
/* Header preceeding each packet returned to user */
struct nit_hdr {
int nh_state; /* state of tap -- see below */
struct timeval nh_timestamp; /* time of arriving packet */
int nh_wirelen; /* length (with header) off wire */
union {
int info; /* generic information */
int datalen; /* length of saved packet portion */
int dropped; /* number of dropped matched packets */
int seqno; /* sequence number */
} nh_un;
};
#define nh_info nh_un.info
#define nh_datalen nh_un.datalen
#define nh_dropped nh_un.dropped
#define nh_seqno nh_un.seqno
/*
* Ioctl parameter block
* When setting parameter values, values that
* are otherwise impossible mean "don't change".
*
* Nioc_bufalign and nioc_bufoffset control packet placement
* within buffers. The (nit) header for each packet in a buffer
* starts nioc_bufoffset bytes past some multiple of nioc_bufalign
* bytes from the beginning. The packet itself appears immediately
* beyond the header.
*/
struct nit_ioc {
int nioc_bufspace; /* total buffer space to use */
int nioc_chunksize; /* size of chunks to send */
u_int nioc_typetomatch; /* magic type with which to match */
int nioc_snaplen; /* length of packet portion to snap */
int nioc_bufalign; /* packet header alignment multiple */
int nioc_bufoffset; /* packet header alignment offset */
struct timeval nioc_timeout; /* delay after packet before flush */
int nioc_flags; /* see below */
};
#define NT_NOTYPES ((u_int)0) /* match no packet types */
#define NT_ALLTYPES ((u_int)-1) /* match all packet types */
#define NF_PROMISC 0x01 /* enter promiscuous mode */
#define NF_TIMEOUT 0x02 /* timeout value valid */
#define NF_BUSY 0x04 /* buffer is busy (has data) */
/*
* States for the packet capture portion of nit,
* some of which are passed to the user.
*/
#define NIT_QUIET 0 /* inactive */
#define NIT_CATCH 1 /* capturing packets */
#define NIT_NOMBUF 2 /* discarding -- out of mbufs */
#define NIT_NOCLUSTER 3 /* discarding -- out of mclusters */
#define NIT_NOSPACE 4 /* discarding -- would exceed buffer */
/* Pseudo-states returned in information packets */
#define NIT_SEQNO 5 /* sequence number of buffer -- helps
to detect other software drops */
#define NIT_MAXSTATE 6 /* state count */
#if defined(KERNEL) && defined(NIT)
struct ifnet *nit_ifwithaddr();
/* Interface provided information */
struct nit_ii {
caddr_t nii_header; /* header to be prepended to mbuf */
int nii_hdrlen; /* length of header to prepend */
u_int nii_type; /* magic "type" field for matching */
int nii_datalen; /* lenght (sans header) off wire */
int nii_promisc; /* packet not destined for host */
};
#endif defined(KERNEL) && defined(NIT)
#endif /*!_net_nit_h*/