18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Copyright (C) 2007-2008 The Android Open Source Project 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This software is licensed under the terms of the GNU General Public 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** License version 2, as published by the Free Software Foundation, and 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** may be copied, distributed, and modified under those terms. 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This program is distributed in the hope that it will be useful, 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** but WITHOUT ANY WARRANTY; without even the implied warranty of 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** GNU General Public License for more details. 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/ 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _SLIRP_SHAPER_H_ 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _SLIRP_SHAPER_H_ 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <stddef.h> 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* a NetShaper object is used to limit the throughput of data packets 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * at a fixed rate expressed in bits/seconds 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct NetShaperRec_* NetShaper; 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (*NetShaperSendFunc)( void* data, size_t size, void* opaque); 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectNetShaper netshaper_create ( int do_copy, 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project NetShaperSendFunc send_func ); 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netshaper_set_rate(NetShaper shaper, double rate ); 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netshaper_send( NetShaper shaper, void* data, size_t size ); 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netshaper_send_aux( NetShaper shaper, void* data, size_t size, void* opaque ); 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint netshaper_can_send( NetShaper shaper ); 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netshaper_destroy (NetShaper shaper); 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* a NetDelay object is used to simulate network connection latencies */ 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct NetDelayRec_* NetDelay; 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectNetDelay netdelay_create( NetShaperSendFunc send_func ); 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netdelay_set_latency( NetDelay delay, int min_ms, int max_ms ); 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netdelay_send( NetDelay delay, const void* data, size_t size ); 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netdelay_send_aux( NetDelay delay, const void* data, size_t size, void* opaque ); 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid netdelay_destroy( NetDelay delay ); 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** in vl.c */ 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* network traffic shaper and delayer */ 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern NetShaper slirp_shaper_in; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern NetShaper slirp_shaper_out; 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern NetDelay slirp_delay_in; 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _SLIRP_SHAPER_H_ */ 52