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 _IF_H_ 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _IF_H_ 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IF_COMPRESS 0x01 /* We want compression */ 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IF_NOCOMPRESS 0x02 /* Do not do compression */ 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IF_AUTOCOMP 0x04 /* Autodetect (default) */ 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define IF_NOCIDCOMP 0x08 /* CID compression */ 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_MTU 1500 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_MRU 1500 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_COMP IF_AUTOCOMP /* Flags for compression */ 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#if 0 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Set if_maxlinkhdr to 48 because it's 40 bytes for TCP/IP, 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * and 8 bytes for PPP, but need to have it on an 8byte boundary 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */ 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef USE_PPP 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_MAXLINKHDR 48 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#else 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_MAXLINKHDR 40 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#else 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /* 2 for alignment, 14 for ethernet, 40 for TCP/IP */ 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define IF_MAXLINKHDR (2 + 14 + 40) 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int if_queued; /* Number of packets queued so far */ 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct mbuf if_fastq; /* fast queue (for interactive data) */ 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct mbuf if_batchq; /* queue for non-interactive data */ 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern struct mbuf *next_m; 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ifs_init(ifm) ((ifm)->ifs_next = (ifm)->ifs_prev = (ifm)) 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef LOG_ENABLED 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Interface statistics */ 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct slirp_ifstats { 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int out_pkts; /* Output packets */ 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int out_bytes; /* Output bytes */ 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int out_errpkts; /* Output Error Packets */ 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int out_errbytes; /* Output Error Bytes */ 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int in_pkts; /* Input packets */ 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int in_bytes; /* Input bytes */ 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int in_errpkts; /* Input Error Packets */ 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int in_errbytes; /* Input Error Bytes */ 545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int bytes_saved; /* Number of bytes that compression "saved" */ 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* ie: number of bytes that didn't need to be sent over the link 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * because of compression */ 585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project u_int in_mbad; /* Bad incoming packets */ 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 64