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