15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/*
25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Copyright (c) 1995 Danny Gasparovski.
35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner *
45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Please read the file COPYRIGHT for the
55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * terms and conditions of the copyright.
65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */
75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef _MISC_H_
95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define _MISC_H_
105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct ex_list {
125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	int ex_pty;			/* Do we want a pty? */
135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	int ex_addr;			/* The last byte of the address */
145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	int ex_fport;                   /* Port to telnet to */
155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	const char *ex_exec;            /* Command line of what to exec */
165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	struct ex_list *ex_next;
175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner};
185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern struct ex_list *exec_list;
205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern u_int time_fasttimo, last_slowtimo;
215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern int (*lprint_print) _P((void *, const char *, va_list));
235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern char *lprint_ptr, *lprint_ptr2, **lprint_arg;
245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern struct sbuf *lprint_sb;
255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef HAVE_STRDUP
275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerchar *strdup _P((const char *));
285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif
295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid do_wait _P((int));
315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_NONE 0x0
335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* TCP emulations */
355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_CTL 0x1
365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_FTP 0x2
375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_KSH 0x3
385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_IRC 0x4
395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_REALAUDIO 0x5
405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_RLOGIN 0x6
415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_IDENT 0x7
425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_RSH 0x8
435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_NOCONNECT 0x10	/* Don't connect */
455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* UDP emulations */
475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_TALK	0x1
485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_NTALK	0x2
495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EMU_CUSEEME	0x3
505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct tos_t {
525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int16_t lport;
535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int16_t fport;
545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int8_t tos;
555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int8_t emu;
565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner};
575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct emu_t {
595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int16_t lport;
605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int16_t fport;
615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int8_t tos;
625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	u_int8_t emu;
635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	struct emu_t *next;
645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner};
655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef CONFIG_QEMU
675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern struct emu_t *tcpemu;
685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif
695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern int x_port, x_server, x_display;
715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint show_x _P((char *, struct socket *));
735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid redir_x _P((u_int32_t, int, int, int));
745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid getouraddr _P((void));
755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_insque _P((void *, void *));
765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_remque _P((void *));
775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint add_exec _P((struct ex_list **, int, char *, int, int));
785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_openpty _P((int *, int *));
795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint fork_exec(struct socket *so, const char *ex, int do_pty);
805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid snooze_hup _P((int));
815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid snooze _P((void));
825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid relay _P((int));
835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid add_emu _P((char *));
845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid u_sleep _P((int));
855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid fd_nonblock _P((int));
865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid fd_block _P((int));
875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint rsh_exec _P((struct socket *, struct socket *, char *, char *, char *));
885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif
90