aboutsummaryrefslogtreecommitdiffstats
path: root/net-android.c
diff options
context:
space:
mode:
Diffstat (limited to 'net-android.c')
-rw-r--r--net-android.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/net-android.c b/net-android.c
index d208cd6..8649b82 100644
--- a/net-android.c
+++ b/net-android.c
@@ -750,7 +750,13 @@ slirp_init_shapers( void )
int slirp_can_output(void)
{
+#ifdef CONFIG_SHAPER
+ return !slirp_vc ||
+ ( netshaper_can_send(slirp_shaper_out) &&
+ qemu_can_send_packet(slirp_vc) );
+#else
return !slirp_vc || qemu_can_send_packet(slirp_vc);
+#endif
}
void slirp_output(const uint8_t *pkt, int pkt_len)
@@ -764,7 +770,12 @@ void slirp_output(const uint8_t *pkt, int pkt_len)
if (!slirp_vc)
return;
+
+#ifdef CONFIG_SHAPER
+ netshaper_send(slirp_shaper_out, (void*)pkt, pkt_len);
+#else
qemu_send_packet(slirp_vc, pkt, pkt_len);
+#endif
}
int slirp_is_inited(void)
@@ -781,7 +792,11 @@ static ssize_t slirp_receive(VLANClientState *vc, const uint8_t *buf, size_t siz
if (qemu_tcpdump_active)
qemu_tcpdump_packet(buf, size);
+#ifdef CONFIG_SHAPER
+ netshaper_send(slirp_shaper_in, (char*)buf, size);
+#else
slirp_input(buf, size);
+#endif
return size;
}