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