|
|
1.1 root 1: #ifndef CKCNET_H
2: #define CKCNET_H
3:
4: /* Network types */
5:
6: #define NET_NONE 0 /* None */
7: #define NET_TCPB 1 /* TCP/IP Berkeley (socket) */
8: #define NET_TCPA 2 /* TCP/IP AT&T (streams) */
9: #define NET_SX25 3 /* SUNOS SunLink X.25 */
10: #define NET_DEC 4 /* DECnet */
11: #define NET_VPSI 5 /* VAX PSI */
12:
13: /* Network virtual terminal protocols */
14:
15: #define NP_NONE 0 /* None (async) */
16: #define NP_TELNET 1 /* TCP/IP telnet */
17: #define NP_VTP 2 /* ISO Virtual Terminal Protocol */
18: #define NP_X3 3 /* CCITT X.3 */
19: #define NP_X28 4 /* CCITT X.28 */
20: #define NP_X29 5 /* CCITT X.28 */
21: #define NP_CTERM 20 /* DEC CTERM */
22: #define NP_LAT 21 /* DEC LAT */
23: /* others here... */
24:
25: /* Basic network function prototypes, common to all. */
26:
27: _PROTOTYP( int netopen, (char *, int *, int) );
28: _PROTOTYP( int netclos, (void) );
29: _PROTOTYP( int netflui, (void) );
30: _PROTOTYP( int nettchk, (void) );
31: _PROTOTYP( int netbreak, (void) );
32: _PROTOTYP( int netinc, (int) );
33: _PROTOTYP( int nettol, (char *, int) );
34: _PROTOTYP( int nettoc, (char) );
35:
36: /*
37: SunLink X.25 support by Marcello Frutig, Catholic University,
38: Rio de Janeiro, Brazil, 1990.
39:
40: Maybe this can be adapted to VAX PSI and other X.25 products too.
41: */
42: #ifndef SUNOS4 /* Only valid for SUNOS4 */
43: #ifdef SUNX25
44: #undef SUNX25
45: #endif /* SUNX25 */
46: #endif /* SUNOS4 */
47:
48: #ifdef SUNX25
49:
50: #ifndef NETCONN /* SUNX25 implies NETCONN */
51: #define NETCONN
52: #endif /* NETCONN */
53:
54: #define MAXPADPARMS 18 /* Number of PAD parameters */
55: #define MAXCUDATA 12 /* Max length of X.25 call user data */
56: #define X29PID 1 /* X.29 protocol ID */
57: #define X29PIDLEN 4 /* X.29 protocol ID length */
58:
59: #define X29_SET_PARMS 2
60: #define X29_READ_PARMS 4
61: #define X29_SET_AND_READ_PARMS 6
62: #define X29_INVITATION_TO_CLEAR 1
63: #define X29_PARAMETER_INDICATION 0
64: #define X29_INDICATION_OF_BREAK 3
65: #define X29_ERROR 5
66:
67: #define INVALID_PAD_PARM 1
68:
69: #define PAD_BREAK_CHARACTER 0
70:
71: #define PAD_ESCAPE 1
72: #define PAD_ECHO 2
73: #define PAD_DATA_FORWARD_CHAR 3
74: #define PAD_DATA_FORWARD_TIMEOUT 4
75: #define PAD_FLOW_CONTROL_BY_PAD 5
76: #define PAD_SUPPRESSION_OF_SIGNALS 6
77: #define PAD_BREAK_ACTION 7
78: #define PAD_SUPPRESSION_OF_DATA 8
79: #define PAD_PADDING_AFTER_CR 9
80: #define PAD_LINE_FOLDING 10
81: #define PAD_LINE_SPEED 11
82: #define PAD_FLOW_CONTROL_BY_USER 12
83: #define PAD_LF_AFTER_CR 13
84: #define PAD_PADDING_AFTER_LF 14
85: #define PAD_EDITING 15
86: #define PAD_CHAR_DELETE_CHAR 16
87: #define PAD_BUFFER_DELETE_CHAR 17
88: #define PAD_BUFFER_DISPLAY_CHAR 18
89:
90: #define MAXIX25 MAX_USER_DATA*7
91: #define MAXOX25 MAX_USER_DATA
92:
93: #include <sys/ioctl.h> /* X.25 includes */
94: #include <sys/param.h>
95: #include <sys/systm.h>
96: #include <sys/mbuf.h>
97: #include <sys/socket.h>
98: #include <sys/protosw.h>
99: #include <sys/domain.h>
100: #include <sys/socketvar.h>
101: #include <net/if.h>
102: #include <sundev/syncstat.h>
103: #include <netx25/x25_pk.h>
104: #include <netx25/x25_ctl.h>
105: #include <netx25/x25_ioctl.h>
106:
107: /* C-Kermit X.3 / X.25 / X.29 / X.121 support functions */
108:
109: _PROTOTYP( VOID shopad, (void) );
110: _PROTOTYP( VOID initpad, (void) );
111: _PROTOTYP( VOID setpad, (CHAR *, int) );
112: _PROTOTYP( VOID readpad, (CHAR *, int, CHAR *) );
113: _PROTOTYP( int qbitpkt, (CHAR *, int) );
114: _PROTOTYP( VOID setqbit, (void) );
115: _PROTOTYP( VOID resetqbit, (void) );
116: _PROTOTYP( VOID breakact, (void) );
117: _PROTOTYP( int pkx121, (char *, CHAR *) );
118: _PROTOTYP( VOID x25oobh, (void) );
119: _PROTOTYP( int x25diag, (void) );
120: _PROTOTYP( int x25intr, (char) );
121: _PROTOTYP( int x25reset, (char, char) );
122: _PROTOTYP( int x25clear, (void) );
123: _PROTOTYP( int x25stat, (void) );
124: _PROTOTYP( int x25in, (int, CHAR *) );
125: _PROTOTYP( int x25inl, (CHAR *, int, int, CHAR) );
126:
127: #endif /* SUNX25 */
128:
129: /* TGV / SRI MultiNet, TCP/IP for VAX/VMS */
130:
131: #ifdef MULTINET /* MULTINET implies TCPSOCKET */
132: #ifndef TCPSOCKET
133: #define TCPSOCKET
134: #endif /* TCPSOCKET */
135: #endif /* MULTINET */
136:
137: /* Wollongong TCP/IP for AT&T Sys V */
138:
139: #ifdef WOLLONGONG /* WOLLONGONG implies TCPSOCKET */
140: #ifndef TCPSOCKET
141: #define TCPSOCKET
142: #endif /* TCPSOCKET */
143: #endif /* WOLLONGONG */
144:
145: /* Should do the same for EXCELAN, INTERLAN, etc... */
146:
147: /* Telnet protocol */
148:
149: #ifdef TCPSOCKET /* TCPSOCKET implies TNCODE */
150: #ifndef TNCODE /* Which means... */
151: #define TNCODE /* Compile in telnet code */
152: #endif /* TNCODE */
153: #endif /* TCPSOCKET */
154:
155: #ifdef SUNX25 /* SUNX25 implies TCPSOCKET */
156: #ifndef TCPSOCKET /* But doesn't imply TNCODE */
157: #define TCPSOCKET
158: #endif /* TCPSOCKET */
159: #endif /* SUNX25 */
160:
161: /* This is the TCPSOCKET section... */
162:
163: #ifdef TCPSOCKET
164:
165: #ifndef NETCONN /* TCPSOCKET implies NETCONN */
166: #define NETCONN
167: #endif /* NETCONN */
168:
169: /* BSD sockets library header files */
170:
171: #ifdef UNIX /* UNIX section */
172:
173: #ifdef INTERLAN /* Racal-Interlan TCP/IP */
174: #include <interlan/socket.h>
175: #include <interlan/il_types.h>
176: #include <interlan/telnet.h>
177: #include <interlan/il_errno.h>
178: #include <interlan/in.h>
179: #include <interlan/telnet.h>
180: #else /* Normal BSD TCP/IP library */
181: #ifndef HPUX
182: #include <arpa/telnet.h>
183: #endif /* HPUX */
184: #include <sys/socket.h>
185: #ifdef WOLLONGONG
186: #include <sys/in.h>
187: #else
188: #include <netinet/in.h>
189: #endif /* WOLLONGONG */
190: #endif /* INTERLAN */
191:
192: #ifndef EXCELAN
193: #include <netdb.h>
194: #ifndef INTERLAN
195: #ifdef WOLLONGONG
196: #define minor /* Do not include <sys/macros.h> */
197: #include <sys/inet.h>
198: #else
199: #ifndef HPUX
200: #include <arpa/inet.h>
201: #endif /* HPUX */
202: #endif /* WOLLONGONG */
203: #endif /* INTERLAN */
204: #endif /* EXCELAN */
205:
206: #ifdef EXCELAN /* Excelan TCP/IP */
207: #include <ex_errno.h>
208: #endif /* EXCELAN */
209:
210: #ifdef I386IX /* Interactive Sys V R3 network. */
211: /* #define TELOPTS */ /* This might need defining. */
212: #define ORG_NLONG ENAMETOOLONG /* Resolve conflicting symbols */
213: #undef ENAMETOOLONG /* in <errno.h> and <net/errno.h> */
214: #define ORG_NEMPTY ENOTEMPTY
215: #undef ENOTEMPTY
216: #include <net/errno.h>
217: #undef ENAMETOOLONG
218: #define ENAMETOOLONG ORG_NLONG
219: #undef ENOTEMPTY
220: #define ENOTEMPTY ORG_NEMPTY
221: #endif /* I386IX */
222: /*
223: Data type of the inet_addr() function...
224: We define INADDRX if it is of type struct inaddr.
225: If it is undefined, unsigned long is assumed.
226: Look at <arpa/inet.h> to find out. The following known cases are
227: handled here. Other systems that need it can be added here, or else
228: -DINADDRX can be included in the CFLAGS on the cc command line.
229: */
230: #ifdef DGUX540 /* Data General UX 5.40 */
231: #define INADDRX
232: #endif /* DGUX540 */
233: #ifdef DU2 /* DEC Ultrix 2.0 */
234: #define INADDRX
235: #endif /* DU2 */
236: #ifdef OXOS /* Olivetti X/OS */
237: /*
238: Reportedly this was only necessary because of a bug in X/OS,
239: which is now fixed. X/OS users who have trouble compiling ckcnet.c
240: should uncomment this section.
241: */
242: #ifdef COMMENT
243: #define INADDRX
244: #endif /* COMMENT */
245: #endif /* OXOS */
246:
247: #else /* Not UNIX */
248:
249: #ifdef VMS /* VAX/VMS section */
250:
251: #ifdef MULTINET /* TGV MultiNet */
252: #include "multinet_root:[multinet.include]errno.h"
253: #include "multinet_root:[multinet.include.sys]types.h"
254: #include "multinet_root:[multinet.include.sys]socket.h"
255: #include "multinet_root:[multinet.include]netdb.h"
256: #include "multinet_root:[multinet.include.netinet]in.h"
257: #include "multinet_root:[multinet.include.sys]ioctl.h"
258: #endif /* MULTINET */
259: /* Others here -- DECnet, VAX/PSI */
260: #endif /* VMS */
261: #endif /* UNIX */
262: #endif /* TCPSOCKET */
263:
264: #ifdef TNCODE /* If we're compiling telnet code... */
265: /*
266: Make sure telnet symbols are defined; can't rely on library header files
267: for any of them.
268: */
269: #ifndef IAC /* First the telnet commands */
270: #define IAC 255
271: #endif /* IAC */
272: #ifndef DONT
273: #define DONT 254
274: #endif /* DONT */
275: #ifndef DO
276: #define DO 253
277: #endif /* DO */
278: #ifndef WONT
279: #define WONT 252
280: #endif /* WONT */
281: #ifndef WILL
282: #define WILL 251
283: #endif /* WILL */
284: #ifndef SB
285: #define SB 250
286: #endif /* SB */
287: #ifndef BREAK
288: #define BREAK 243
289: #endif /* BREAK */
290: #ifndef SE
291: #define SE 240
292: #endif /* SE */
293:
294: #ifndef TELOPT_ECHO /* Then the options */
295: #define TELOPT_ECHO 1
296: #endif /* TELOPT_ECHO */
297: #ifndef TELOPT_SGA
298: #define TELOPT_SGA 3
299: #endif /* TELOPT_SGA */
300: #ifndef TELOPT_STATUS
301: #define TELOPT_STATUS 5
302: #endif /* TELOPT_STATUS */
303: #ifndef TELOPT_TTYPE
304: #define TELOPT_TTYPE 24
305: #endif /* TELOPT_TTYPE */
306: #ifndef NTELOPTS
307: #define NTELOPTS 24
308: #endif /* NTELOPTS */
309:
310: /* Telnet protocol functions defined in C-Kermit */
311:
312: _PROTOTYP( int tn_ini, (void) ); /* Telnet protocol support */
313: _PROTOTYP( int tn_sopt, (int, int) );
314: _PROTOTYP( int tn_doop, (CHAR, int) );
315: _PROTOTYP( int tn_sttyp, (void) );
316: _PROTOTYP( int tnsndbrk, (void) );
317:
318: #endif /* TNCODE */
319:
320: #endif /* CKCNET_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.