18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1995 Danny Gasparovski. 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 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#ifdef HAVE_SYS_SELECT_H 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/select.h> 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOWRITEMAX 512 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct timeval tt; 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int link_up; 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int slirp_socket; 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int slirp_socket_unit; 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int slirp_socket_port; 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern u_int32_t slirp_socket_addr; 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *slirp_socket_passwd; 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int ctty_closed; 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern int slirp_restrict; 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Get the difference in 2 times from updtim() 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Allow for wraparound times, "just in case" 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * x is the greater of the 2 (current time) and y is 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * what it's being compared against. 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TIME_DIFF(x,y) (x)-(y) < 0 ? ~0-(y)+(x) : (x)-(y) 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DNS_ADDR_MAX 4 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *slirp_tty; 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *exec_shell; 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern u_int curtime; 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern fd_set *global_readfds, *global_writefds, *global_xfds; 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t ctl_addr_ip; 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t special_addr_ip; 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t alias_addr_ip; 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t our_addr_ip; 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t loopback_addr_ip; 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint32_t dns_addr[DNS_ADDR_MAX]; 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int dns_addr_count; 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *username; 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern char *socket_path; 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int towrite_max; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int ppp_exit; 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int tcp_keepintvl; 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern uint8_t client_ethaddr[6]; 515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern const char *slirp_special_ip; 525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern int slirp_restrict; 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PROTO_SLIP 0x1 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef USE_PPP 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PROTO_PPP 0x2 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_encap(const uint8_t *ip_data, int ip_data_len); 605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags); 61