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