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

69 lines
2.3 KiB
C

/* @(#)nit_buf.h 1.1 94/10/31 SMI */
/*
* Copyright (c) 1986 by Sun Microsystems, Inc.
*/
#ifndef _net_nit_buf_h
#define _net_nit_buf_h
/*
* Definitions for the streams NIT buffering module.
*
* The module gathers incoming (read-side) messages together into
* "chunks" and passes completed chunks up to the next module in
* line. The gathering process is controlled by two ioctl-settable
* parameters:
*
* timeout The maximum delay after passing the previous chunk
* upward before passing the current one up, even if the
* chunk isn't full. If the timeout value passed in is
* a null pointer, the timeout is infinite (as in the
* select system call); this is the default.
* chunksize The maximum size of a chunk of accumulated messages,
* unless a single message exceeds the chunksize, in
* which case it's passed up in a chunk containing only
* that message. Note that a given message's size includes
* the length of any leading M_PROTO blocks it may have.
*
* There is one important side-effect: setting the timeout to zero
* (polling) will force the chunksize to zero, regardless of its
* previous setting.
*/
/*
* Ioctls.
*/
#define NIOCSTIME _IOW(p, 6, struct timeval) /* set timeout info */
#define NIOCGTIME _IOWR(p, 7, struct timeval) /* get timeout info */
#define NIOCCTIME _IO(p, 8) /* clear timeout */
#define NIOCSCHUNK _IOW(p, 9, u_int) /* set chunksize */
#define NIOCGCHUNK _IOWR(p, 10, u_int) /* get chunksize */
/*
* Default chunk size.
*/
#define NB_DFLT_CHUNK 8192 /* arbitrary */
/*
* When adding a given message to an accumulating chunk, the module
* first converts all leading M_PROTO data blocks to M_DATA data blocks.
* It then constructs a nit_bufhdr (defined below), prepends it to
* the message, and pads the result out to force its length to a
* multiple of a machine-dependent alignment size guaranteed to be
* at least sizeof (u_long). It then adds the padded message to the
* chunk.
*
* The first field of the header is length of the message after the
* M_PROTO => M_DATA conversion, but before adding the header.
*
* The second header field is the total length of the message,
* including both the header itself and the trailing padding bytes.
*/
struct nit_bufhdr { /* see above commentary */
u_int nhb_msglen;
u_int nhb_totlen;
};
#endif /*!_net_nit_buf_h*/