1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#define __SID ('S' << 8)
8
9#define I_NREAD (__SID | 1)
10#define I_PUSH (__SID | 2)
11#define I_POP (__SID | 3)
12#define I_LOOK (__SID | 4)
13#define I_FLUSH (__SID | 5)
14#define I_SRDOPT (__SID | 6)
15#define I_GRDOPT (__SID | 7)
16#define I_STR (__SID | 8)
17#define I_SETSIG (__SID | 9)
18#define I_GETSIG (__SID | 10)
19#define I_FIND (__SID | 11)
20#define I_LINK (__SID | 12)
21#define I_UNLINK (__SID | 13)
22#define I_PEEK (__SID | 15)
23#define I_FDINSERT (__SID | 16)
24#define I_SENDFD (__SID | 17)
25#define I_RECVFD (__SID | 14)
26#define I_SWROPT (__SID | 19)
27#define I_GWROPT (__SID | 20)
28#define I_LIST (__SID | 21)
29#define I_PLINK (__SID | 22)
30#define I_PUNLINK (__SID | 23)
31#define I_FLUSHBAND (__SID | 28)
32#define I_CKBAND (__SID | 29)
33#define I_GETBAND (__SID | 30)
34#define I_ATMARK (__SID | 31)
35#define I_SETCLTIME (__SID | 32)
36#define I_GETCLTIME (__SID | 33)
37#define I_CANPUT (__SID | 34)
38
39#define FMNAMESZ 8
40
41#define FLUSHR 0x01
42#define FLUSHW 0x02
43#define FLUSHRW 0x03
44#define FLUSHBAND 0x04
45
46#define S_INPUT 0x0001
47#define S_HIPRI 0x0002
48#define S_OUTPUT 0x0004
49#define S_MSG 0x0008
50#define S_ERROR 0x0010
51#define S_HANGUP 0x0020
52#define S_RDNORM 0x0040
53#define S_WRNORM S_OUTPUT
54#define S_RDBAND 0x0080
55#define S_WRBAND 0x0100
56#define S_BANDURG 0x0200
57
58#define RS_HIPRI 0x01
59
60#define RNORM 0x0000
61#define RMSGD 0x0001
62#define RMSGN 0x0002
63#define RPROTDAT 0x0004
64#define RPROTDIS 0x0008
65#define RPROTNORM 0x0010
66#define RPROTMASK 0x001C
67
68#define SNDZERO 0x001
69#define SNDPIPE 0x002
70
71#define ANYMARK 0x01
72#define LASTMARK 0x02
73
74#define MUXID_ALL (-1)
75
76#define MSG_HIPRI 0x01
77#define MSG_ANY 0x02
78#define MSG_BAND 0x04
79
80#define MORECTL 1
81#define MOREDATA 2
82
83struct bandinfo {
84    unsigned char bi_pri;
85    int bi_flag;
86};
87
88struct strbuf {
89    int maxlen;
90    int len;
91    char* buf;
92};
93
94struct strpeek {
95    struct strbuf ctlbuf;
96    struct strbuf databuf;
97    unsigned flags;
98};
99
100struct strfdinsert {
101    struct strbuf ctlbuf;
102    struct strbuf databuf;
103    unsigned flags;
104    int fildes;
105    int offset;
106};
107
108struct strioctl {
109    int ic_cmd;
110    int ic_timout;
111    int ic_len;
112    char* ic_dp;
113};
114
115struct strrecvfd {
116    int fd;
117    int uid;
118    int gid;
119    char __fill[8];
120};
121
122struct str_mlist {
123    char l_name[FMNAMESZ + 1];
124};
125
126struct str_list {
127    int sl_nmods;
128    struct str_mlist* sl_modlist;
129};
130
131int isastream(int);
132int ioctl(int, int, ...);
133
134#ifdef __cplusplus
135}
136#endif
137