aboutsummaryrefslogtreecommitdiffstats
path: root/shaper.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
commit55f4e4a5ec657a017e3bf75299ad71fd1c968dd3 (patch)
tree550ce922ea0e125ac6a9738210ce2939bf2fe901 /shaper.h
parent413f05aaf54fa08c0ae7e997327a4f4a473c0a8d (diff)
downloadexternal_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.zip
external_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.tar.gz
external_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.tar.bz2
Initial Contribution
Diffstat (limited to 'shaper.h')
-rw-r--r--shaper.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/shaper.h b/shaper.h
new file mode 100644
index 0000000..263e19f
--- /dev/null
+++ b/shaper.h
@@ -0,0 +1,51 @@
+/* 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 "vl.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_ */