| /* Copyright (C) 2007-2008 The Android Open Source Project |
| ** |
| ** This software is licensed under the terms of the GNU General Public |
| ** License version 2, as published by the Free Software Foundation, and |
| ** may be copied, distributed, and modified under those terms. |
| ** |
| ** This program is distributed in the hope that it will be useful, |
| ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ** GNU General Public License for more details. |
| */ |
| #ifndef _SLIRP_SHAPER_H_ |
| #define _SLIRP_SHAPER_H_ |
| |
| #include <stddef.h> |
| |
| /* a NetShaper object is used to limit the throughput of data packets |
| * at a fixed rate expressed in bits/seconds |
| */ |
| typedef struct NetShaperRec_* NetShaper; |
| typedef void (*NetShaperSendFunc)( void* data, size_t size, void* opaque); |
| |
| NetShaper netshaper_create ( int do_copy, |
| NetShaperSendFunc send_func ); |
| |
| void netshaper_set_rate(NetShaper shaper, double rate ); |
| |
| void netshaper_send( NetShaper shaper, void* data, size_t size ); |
| |
| void netshaper_send_aux( NetShaper shaper, void* data, size_t size, void* opaque ); |
| |
| int netshaper_can_send( NetShaper shaper ); |
| |
| void netshaper_destroy (NetShaper shaper); |
| |
| /* a NetDelay object is used to simulate network connection latencies */ |
| typedef struct NetDelayRec_* NetDelay; |
| |
| NetDelay netdelay_create( NetShaperSendFunc send_func ); |
| void netdelay_set_latency( NetDelay delay, int min_ms, int max_ms ); |
| void netdelay_send( NetDelay delay, const void* data, size_t size ); |
| void netdelay_send_aux( NetDelay delay, const void* data, size_t size, void* opaque ); |
| void netdelay_destroy( NetDelay delay ); |
| |
| /** in vl.c */ |
| /* network traffic shaper and delayer */ |
| extern NetShaper slirp_shaper_in; |
| extern NetShaper slirp_shaper_out; |
| extern NetDelay slirp_delay_in; |
| |
| #endif /* _SLIRP_SHAPER_H_ */ |