18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1995 Danny Gasparovski. 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Please read the file COPYRIGHT for the 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * terms and conditions of the copyright. 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _MISC_H_ 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _MISC_H_ 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 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; 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int (*lprint_print) _P((void *, const char *, va_list)); 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *lprint_ptr, *lprint_ptr2, **lprint_arg; 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern struct sbuf *lprint_sb; 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_STRDUP 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectchar *strdup _P((const char *)); 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid do_wait _P((int)); 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_NONE 0x0 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* TCP emulations */ 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_CTL 0x1 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_FTP 0x2 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_KSH 0x3 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_IRC 0x4 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_REALAUDIO 0x5 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_RLOGIN 0x6 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_IDENT 0x7 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_RSH 0x8 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_NOCONNECT 0x10 /* Don't connect */ 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* UDP emulations */ 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_TALK 0x1 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_NTALK 0x2 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EMU_CUSEEME 0x3 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tos_t { 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int16_t lport; 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int16_t fport; 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int8_t tos; 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int8_t emu; 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct emu_t { 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int16_t lport; 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int16_t fport; 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int8_t tos; 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int8_t emu; 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct emu_t *next; 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef CONFIG_QEMU 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct emu_t *tcpemu; 685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid getouraddr _P((void)); 715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_insque _P((void *, void *)); 725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid slirp_remque _P((void *)); 735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint add_exec _P((struct ex_list **, int, char *, int, int)); 745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint slirp_openpty _P((int *, int *)); 755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint fork_exec(struct socket *so, const char *ex, int do_pty); 765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid snooze_hup _P((int)); 775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid snooze _P((void)); 785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid relay _P((int)); 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid add_emu _P((char *)); 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 82