|
|
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: #define NET_PIPE 6 /* LAN Manager Named Pipe */
13:
14: /* Network virtual terminal protocols */
15:
16: #define NP_NONE 0 /* None (async) */
17: #define NP_TELNET 1 /* TCP/IP telnet */
18: #define NP_VTP 2 /* ISO Virtual Terminal Protocol */
19: #define NP_X3 3 /* CCITT X.3 */
20: #define NP_X28 4 /* CCITT X.28 */
21: #define NP_X29 5 /* CCITT X.28 */
22: #define NP_CTERM 20 /* DEC CTERM */
23: #define NP_LAT 21 /* DEC LAT */
24: /* others here... */
25:
26: /* Basic network function prototypes, common to all. */
27:
28: _PROTOTYP( int netopen, (char *, int *, int) );
29: _PROTOTYP( int netclos, (void) );
30: _PROTOTYP( int netflui, (void) );
31: _PROTOTYP( int nettchk, (void) );
32: _PROTOTYP( int netbreak, (void) );
33: _PROTOTYP( int netinc, (int) );
34: _PROTOTYP( int nettol, (char *, int) );
35: _PROTOTYP( int nettoc, (char) );
36:
37: /*
38: SunLink X.25 support by Marcello Frutig, Catholic University,
39: Rio de Janeiro, Brazil, 1990.
40:
41: Maybe this can be adapted to VAX PSI and other X.25 products too.
42: */
43: #ifndef SUNOS4 /* Only valid for SUNOS4 */
44: #ifdef SUNX25
45: #undef SUNX25
46: #endif /* SUNX25 */
47: #endif /* SUNOS4 */
48:
49: #ifdef SUNX25
50:
51: #ifndef NETCONN /* SUNX25 implies NETCONN */
52: #define NETCONN
53: #endif /* NETCONN */
54:
55: #define MAXPADPARMS 18 /* Number of PAD parameters */
56: #define MAXCUDATA 12 /* Max length of X.25 call user data */
57: #define X29PID 1 /* X.29 protocol ID */
58: #define X29PIDLEN 4 /* X.29 protocol ID length */
59:
60: #define X29_SET_PARMS 2
61: #define X29_READ_PARMS 4
62: #define X29_SET_AND_READ_PARMS 6
63: #define X29_INVITATION_TO_CLEAR 1
64: #define X29_PARAMETER_INDICATION 0
65: #define X29_INDICATION_OF_BREAK 3
66: #define X29_ERROR 5
67:
68: #define INVALID_PAD_PARM 1
69:
70: #define PAD_BREAK_CHARACTER 0
71:
72: #define PAD_ESCAPE 1
73: #define PAD_ECHO 2
74: #define PAD_DATA_FORWARD_CHAR 3
75: #define PAD_DATA_FORWARD_TIMEOUT 4
76: #define PAD_FLOW_CONTROL_BY_PAD 5
77: #define PAD_SUPPRESSION_OF_SIGNALS 6
78: #define PAD_BREAK_ACTION 7
79: #define PAD_SUPPRESSION_OF_DATA 8
80: #define PAD_PADDING_AFTER_CR 9
81: #define PAD_LINE_FOLDING 10
82: #define PAD_LINE_SPEED 11
83: #define PAD_FLOW_CONTROL_BY_USER 12
84: #define PAD_LF_AFTER_CR 13
85: #define PAD_PADDING_AFTER_LF 14
86: #define PAD_EDITING 15
87: #define PAD_CHAR_DELETE_CHAR 16
88: #define PAD_BUFFER_DELETE_CHAR 17
89: #define PAD_BUFFER_DISPLAY_CHAR 18
90:
91: #define MAXIX25 MAX_USER_DATA*7
92: #define MAXOX25 MAX_USER_DATA
93:
94: #include <sys/ioctl.h> /* X.25 includes */
95: #include <sys/param.h>
96: #include <sys/systm.h>
97: #include <sys/mbuf.h>
98: #include <sys/socket.h>
99: #include <sys/protosw.h>
100: #include <sys/domain.h>
101: #include <sys/socketvar.h>
102: #include <net/if.h>
103: #include <sundev/syncstat.h>
104: #include <netx25/x25_pk.h>
105: #include <netx25/x25_ctl.h>
106: #include <netx25/x25_ioctl.h>
107:
108: /* C-Kermit X.3 / X.25 / X.29 / X.121 support functions */
109:
110: _PROTOTYP( VOID shopad, (void) );
111: _PROTOTYP( VOID initpad, (void) );
112: _PROTOTYP( VOID setpad, (CHAR *, int) );
113: _PROTOTYP( VOID readpad, (CHAR *, int, CHAR *) );
114: _PROTOTYP( int qbitpkt, (CHAR *, int) );
115: _PROTOTYP( VOID setqbit, (void) );
116: _PROTOTYP( VOID resetqbit, (void) );
117: _PROTOTYP( VOID breakact, (void) );
118: _PROTOTYP( int pkx121, (char *, CHAR *) );
119: _PROTOTYP( VOID x25oobh, (void) );
120: _PROTOTYP( int x25diag, (void) );
121: _PROTOTYP( int x25intr, (char) );
122: _PROTOTYP( int x25reset, (char, char) );
123: _PROTOTYP( int x25clear, (void) );
124: _PROTOTYP( int x25stat, (void) );
125: _PROTOTYP( int x25in, (int, CHAR *) );
126: _PROTOTYP( int x25inl, (CHAR *, int, int, CHAR) );
127:
128: #endif /* SUNX25 */
129:
130: /* DEC TCP/IP for (Open)VMS, previously known as UCX */
131:
132: #ifdef DEC_TCPIP /* DEC_TCPIP implies TCPSOCKET */
133: #ifndef TCPSOCKET
134: #define TCPSOCKET
135: #endif /* TCPSOCKET */
136: #ifndef VMSTCPIP
137: #define VMSTCPIP
138: #endif /* VMSTCPIP */
139: #endif /* DEC_TCPIP */
140:
141: /* TGV/SRI MultiNet, TCP/IP for VAX/VMS */
142:
143: #ifdef MULTINET /* MULTINET implies TCPSOCKET */
144: #ifndef TCPSOCKET
145: #define TCPSOCKET
146: #endif /* TCPSOCKET */
147: #ifndef VMSTCPIP
148: #define VMSTCPIP
149: #endif /* VMSTCPIP */
150: #ifndef TGVORWIN /* MULTINET and WINTCP */
151: #define TGVORWIN /* share a lot of code... */
152: #endif /* TGVORWIN */
153: #endif /* MULTINET */
154:
155: /* Wollongong TCP/IP for VAX/VMS */
156:
157: #ifdef WINTCP /* WINTCP implies TCPSOCKET */
158: #ifndef TCPSOCKET
159: #define TCPSOCKET
160: #endif /* TCPSOCKET */
161: #ifndef VMSTCPIP
162: #define VMSTCPIP
163: #endif /* VMSTCPIP */
164: #ifndef TGVORWIN /* WINTCP and MULTINET */
165: #define TGVORWIN /* share a lot of code... */
166: #endif /* TGVORWIN */
167: #endif /* WINTCP */
168:
169: /* Wollongong TCP/IP for AT&T Sys V */
170:
171: #ifdef WOLLONGONG /* WOLLONGONG implies TCPSOCKET */
172: #ifndef TCPSOCKET /* Don't confuse WOLLONGONG */
173: #define TCPSOCKET /* (which is for UNIX) with */
174: #endif /* TCPSOCKET */ /* WINTCP, which is for VMS! */
175: #endif /* WOLLONGONG */
176:
177: #ifdef EXCELAN /* EXCELAN implies TCPSOCKET */
178: #ifndef TCPSOCKET
179: #define TCPSOCKET
180: #endif /* TCPSOCKET */
181: #endif /* EXCELAN */
182:
183: #ifdef INTERLAN /* INTERLAN implies TCPSOCKET */
184: #ifndef TCPSOCKET
185: #define TCPSOCKET
186: #endif /* TCPSOCKET */
187: #endif /* INTERLAN */
188:
189: /* Telnet protocol */
190:
191: #ifdef TCPSOCKET /* TCPSOCKET implies TNCODE */
192: #ifndef TNCODE /* Which means... */
193: #define TNCODE /* Compile in telnet code */
194: #endif /* TNCODE */
195: #endif /* TCPSOCKET */
196:
197: #ifdef SUNX25 /* SUNX25 implies TCPSOCKET */
198: #ifndef TCPSOCKET /* But doesn't imply TNCODE */
199: #define TCPSOCKET
200: #endif /* TCPSOCKET */
201: #endif /* SUNX25 */
202:
203: /* This is the TCPSOCKET section... */
204:
205: #ifdef TCPSOCKET
206:
207: #ifndef NETCONN /* TCPSOCKET implies NETCONN */
208: #define NETCONN
209: #endif /* NETCONN */
210:
211: /* BSD sockets library header files */
212:
213: #ifdef UNIX /* UNIX section */
214:
215: #ifdef INTERLAN /* Racal-Interlan TCP/IP */
216: #include <interlan/socket.h>
217: #include <interlan/il_types.h>
218: #include <interlan/telnet.h>
219: #include <interlan/il_errno.h>
220: #include <interlan/in.h>
221: #include <interlan/telnet.h>
222: #else /* Normal BSD TCP/IP library */
223: #ifndef HPUX
224: #include <arpa/telnet.h>
225: #endif /* HPUX */
226: #include <sys/socket.h>
227: #ifdef WOLLONGONG
228: #include <sys/in.h>
229: #else
230: #include <netinet/in.h>
231: #endif /* WOLLONGONG */
232: #endif /* INTERLAN */
233:
234: #ifndef EXCELAN
235: #include <netdb.h>
236: #ifndef INTERLAN
237: #ifdef WOLLONGONG
238: #define minor /* Do not include <sys/macros.h> */
239: #include <sys/inet.h>
240: #else
241: #ifndef OXOS
242: #ifndef HPUX
243: #include <arpa/inet.h>
244: #endif /* HPUX */
245: #else /* OXOS */
246: /* In too many releases of X/OS, <arpa/inet.h> declares inet_addr() as
247: * ``struct in_addr''. This is definitively wrong, and could cause
248: * core dumps. Instead of including that bad file, inet_addr() is
249: * correctly declared here. Of course, all the declarations done there
250: * has been copied here.
251: */
252: unsigned long inet_addr();
253: char *inet_ntoa();
254: struct in_addr inet_makeaddr();
255: unsigned long inet_network();
256: #endif /* OXOS */
257: #endif /* WOLLONGONG */
258: #endif /* INTERLAN */
259: #endif /* EXCELAN */
260:
261: #ifdef EXCELAN /* Excelan TCP/IP */
262: #include <ex_errno.h>
263: #endif /* EXCELAN */
264:
265: #ifdef I386IX /* Interactive Sys V R3 network. */
266: /* #define TELOPTS */ /* This might need defining. */
267: #define ORG_NLONG ENAMETOOLONG /* Resolve conflicting symbols */
268: #undef ENAMETOOLONG /* in <errno.h> and <net/errno.h> */
269: #define ORG_NEMPTY ENOTEMPTY
270: #undef ENOTEMPTY
271: #include <net/errno.h>
272: #undef ENAMETOOLONG
273: #define ENAMETOOLONG ORG_NLONG
274: #undef ENOTEMPTY
275: #define ENOTEMPTY ORG_NEMPTY
276: #endif /* I386IX */
277: /*
278: Data type of the inet_addr() function...
279: We define INADDRX if it is of type struct inaddr.
280: If it is undefined, unsigned long is assumed.
281: Look at <arpa/inet.h> to find out. The following known cases are
282: handled here. Other systems that need it can be added here, or else
283: -DINADDRX can be included in the CFLAGS on the cc command line.
284: */
285: #ifdef DGUX540 /* Data General UX 5.40 */
286: #define INADDRX
287: #endif /* DGUX540 */
288: #ifdef DU2 /* DEC Ultrix 2.0 */
289: #define INADDRX
290: #endif /* DU2 */
291:
292: #else /* Not UNIX */
293:
294: #ifdef VMS /* VAX/VMS section */
295:
296: #ifdef WINTCP /* TWG WIN/TCP for VMS */
297: #include <errno.h>
298: #include "twg$tcp:[netdist.include.sys]types.h"
299: #include "twg$tcp:[netdist.include.sys]socket.h"
300: #include "twg$tcp:[netdist.include]netdb.h"
301: #include "twg$tcp:[netdist.include.sys]domain.h"
302: #include "twg$tcp:[netdist.include.sys]protosw.h"
303: #include "twg$tcp:[netdist.include.netinet]in.h"
304: #include "twg$tcp:[netdist.include.sys]ioctl.h"
305: #endif /* WINTCP */
306:
307: #ifdef MULTINET /* TGV MultiNet */
308: #include "multinet_root:[multinet.include]errno.h"
309: #include "multinet_root:[multinet.include.sys]types.h"
310: #include "multinet_root:[multinet.include.sys]socket.h"
311: #include "multinet_root:[multinet.include]netdb.h"
312: #include "multinet_root:[multinet.include.netinet]in.h"
313: #include "multinet_root:[multinet.include.sys]ioctl.h"
314: #endif /* MULTINET */
315:
316: #ifdef DEC_TCPIP
317: #include <in.h>
318: #include <netdb.h>
319: #include <socket.h>
320: #include "ckvioc.h"
321: #define socket_errno errno
322: #define bzero(s,n) memset(s,0,n)
323: #define bcopy(h,a,l) memmove(a,h,l)
324: #define socket_read read
325: #define socket_write write
326: #define socket_ioctl ioctl
327: #define socket_close close
328: #endif /* DEC_TCPIP */
329:
330: #endif /* VMS */
331: #endif /* UNIX */
332: #endif /* TCPSOCKET */
333:
334: #ifdef TNCODE /* If we're compiling telnet code... */
335: /*
336: Make sure telnet symbols are defined; can't rely on library header files
337: for any of them.
338: */
339: #ifndef IAC /* First the telnet commands */
340: #define IAC 255
341: #endif /* IAC */
342: #ifndef DONT
343: #define DONT 254
344: #endif /* DONT */
345: #ifndef DO
346: #define DO 253
347: #endif /* DO */
348: #ifndef WONT
349: #define WONT 252
350: #endif /* WONT */
351: #ifndef WILL
352: #define WILL 251
353: #endif /* WILL */
354: #ifndef SB
355: #define SB 250
356: #endif /* SB */
357: #ifndef BREAK
358: #define BREAK 243
359: #endif /* BREAK */
360: #ifndef SE
361: #define SE 240
362: #endif /* SE */
363:
364: #ifndef TELOPT_ECHO /* Then the options */
365: #define TELOPT_ECHO 1
366: #endif /* TELOPT_ECHO */
367: #ifndef TELOPT_SGA
368: #define TELOPT_SGA 3
369: #endif /* TELOPT_SGA */
370: #ifndef TELOPT_STATUS
371: #define TELOPT_STATUS 5
372: #endif /* TELOPT_STATUS */
373: #ifndef TELOPT_TTYPE
374: #define TELOPT_TTYPE 24
375: #endif /* TELOPT_TTYPE */
376: #ifndef NTELOPTS
377: #define NTELOPTS 24
378: #endif /* NTELOPTS */
379:
380: /* Telnet protocol functions defined in C-Kermit */
381:
382: _PROTOTYP( int tn_ini, (void) ); /* Telnet protocol support */
383: _PROTOTYP( int tn_sopt, (int, int) );
384: _PROTOTYP( int tn_doop, (CHAR, int, int (*)(int) ) );
385: _PROTOTYP( int tn_sttyp, (void) );
386: _PROTOTYP( int tnsndbrk, (void) );
387:
388: #endif /* TNCODE */
389:
390: #endif /* CKCNET_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.