windows-nt/Source/XPSP1/NT/net/inc/stropts.h

219 lines
4.1 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
stropts.h
Abstract:
This module defines the STREAMS ioctl message interface.
Author:
Eric Chin (ericc) July 18, 1991
Revision History:
--*/
/*
* Streams ioctl message interface
*
* @(#)stropts.h 1.19 (Spider) 91/11/27
*/
#ifndef _SYS_STROPTS_
#define _SYS_STROPTS_
#ifndef _NTDDSTRM_
#include <ntddstrm.h>
#endif
/*
* Read options
*/
#define RNORM 0x00 /* Normal - bytes stream */
#define RMSGD 0x01 /* Message, non-discard mode */
#define RMSGN 0x02 /* Message, discard mode */
#define RMASK 0x0F /* mask for read options */
/*
* Protocol read options
*/
#define RPROTNORM 0x00 /* Fail reads with EBADMSG */
#define RPROTDIS 0x10 /* Discard proto part */
#define RPROTDAT 0x20 /* Turn proto part into data */
#define RPROTMASK 0xF0 /* mask for protocol read options */
/*
* Values for I_ATMARK argument
*/
#define ANYMARK 0 /* check if message is marked */
#define LASTMARK 1 /* check if last one marked */
/*
* Value for I_SWROPT argument
*/
#define NOSNDZERO 0 /* disallow zero length sends */
#define SNDZERO 1 /* permit zero length sends */
/*
* STREAMS ioctl defines
*/
#define STR ('S'<<8)
#define I_NREAD (STR|1)
#define I_PUSH (STR|2)
#define I_POP (STR|3)
#define I_LOOK (STR|4)
#define I_FLUSH (STR|5)
#define I_SRDOPT (STR|6)
#define I_GRDOPT (STR|7)
#define I_STR (STR|8)
#define I_SETSIG (STR|9)
#define I_GETSIG (STR|10)
#define I_FIND (STR|11)
#define I_LINK (STR|12)
#define I_UNLINK (STR|13)
#define I_PEEK (STR|15)
#define I_FDINSERT (STR|16)
#define I_SENDFD (STR|17)
#define I_RECVFD (STR|18)
#ifdef SVR2
#define I_GETMSG (STR|19)
#define I_PUTMSG (STR|20)
#define I_GETID (STR|21)
#define I_POLL (STR|22)
#endif /*SVR2*/
#define I_SWROPT (STR|23)
#define I_GWROPT (STR|24)
#define I_LIST (STR|25)
#define I_ATMARK (STR|26)
#define I_SETCLTIME (STR|27)
#define I_GETCLTIME (STR|28)
#define I_PLINK (STR|29)
#define I_PUNLINK (STR|30)
#define I_DEBUG (STR|31)
#define I_CLOSE (STR|32)
#define MUXID_ALL -1
/*
* Structure for I_FDINSERT ioctl
*/
struct strfdinsert {
struct strbuf ctlbuf;
struct strbuf databuf;
long flags;
HANDLE fildes;
int offset;
};
/*
* Structures for I_DEBUG ioctl
*/
typedef enum _str_trace_options {
MSG_TRACE_PRINT = 0x00000001,
MSG_TRACE_FLUSH = 0x00000002,
MSG_TRACE_ON = 0x00000004,
MSG_TRACE_OFF = 0x00000008,
POOL_TRACE_PRINT = 0x00000010,
POOL_TRACE_FLUSH = 0x00000020,
POOL_TRACE_ON = 0x00000040,
POOL_TRACE_OFF = 0x00000080,
POOL_FAIL_ON = 0x00000100,
POOL_FAIL_OFF = 0x00000200,
LOCK_TRACE_ON = 0x00000400,
LOCK_TRACE_OFF = 0x00000800,
QUEUE_PRINT = 0x00001000,
BUFFER_PRINT = 0x00002000,
POOL_LOGGING_ON = 0x00004000,
POOL_LOGGING_OFF = 0x00008000
} str_trace_options;
struct strdebug {
ULONG trace_cmd;
};
/*
* stream I_PEEK ioctl format
*/
struct strpeek {
struct strbuf ctlbuf;
struct strbuf databuf;
long flags;
};
/*
* receive file descriptor structure
*/
struct strrecvfd {
#ifdef INKERNEL
union {
struct file *fp;
int fd;
} f;
#else
int fd;
#endif
unsigned short uid;
unsigned short gid;
char fill[8];
};
#define FMNAMESZ 8
struct str_mlist {
char l_name[FMNAMESZ+1];
};
struct str_list {
int sl_nmods;
struct str_mlist *sl_modlist;
};
/*
* get/putmsg flags
*/
#define RS_HIPRI 1 /* High priority message */
#define MORECTL 1
#define MOREDATA 2
/*
* M_SETSIG flags
*/
#define S_INPUT 1
#define S_HIPRI 2
#define S_OUTPUT 4
#define S_MSG 8
#define S_ERROR 16
#define S_HANGUP 32
/*
* Flags for MFLUSH messages
*/
#define FLUSHW 01 /* flush downstream */
#define FLUSHR 02 /* flush upstream */
#define FLUSHRW (FLUSHR | FLUSHW)
#endif /* _SYS_STROPTS_ */