mirror of https://github.com/xqemu/xqemu.git
net/filter-mirror: Change filter_mirror_send interface
Change filter_mirror_send interface to make it easier to used by other filter Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
06809ecf73
commit
ba8940dd86
|
@ -35,11 +35,10 @@ typedef struct MirrorState {
|
|||
CharDriverState *chr_out;
|
||||
} MirrorState;
|
||||
|
||||
static int filter_mirror_send(NetFilterState *nf,
|
||||
static int filter_mirror_send(CharDriverState *chr_out,
|
||||
const struct iovec *iov,
|
||||
int iovcnt)
|
||||
{
|
||||
MirrorState *s = FILTER_MIRROR(nf);
|
||||
int ret = 0;
|
||||
ssize_t size = 0;
|
||||
uint32_t len = 0;
|
||||
|
@ -51,14 +50,14 @@ static int filter_mirror_send(NetFilterState *nf,
|
|||
}
|
||||
|
||||
len = htonl(size);
|
||||
ret = qemu_chr_fe_write_all(s->chr_out, (uint8_t *)&len, sizeof(len));
|
||||
ret = qemu_chr_fe_write_all(chr_out, (uint8_t *)&len, sizeof(len));
|
||||
if (ret != sizeof(len)) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
buf = g_malloc(size);
|
||||
iov_to_buf(iov, iovcnt, 0, buf, size);
|
||||
ret = qemu_chr_fe_write_all(s->chr_out, (uint8_t *)buf, size);
|
||||
ret = qemu_chr_fe_write_all(chr_out, (uint8_t *)buf, size);
|
||||
g_free(buf);
|
||||
if (ret != size) {
|
||||
goto err;
|
||||
|
@ -77,9 +76,10 @@ static ssize_t filter_mirror_receive_iov(NetFilterState *nf,
|
|||
int iovcnt,
|
||||
NetPacketSent *sent_cb)
|
||||
{
|
||||
MirrorState *s = FILTER_MIRROR(nf);
|
||||
int ret;
|
||||
|
||||
ret = filter_mirror_send(nf, iov, iovcnt);
|
||||
ret = filter_mirror_send(s->chr_out, iov, iovcnt);
|
||||
if (ret) {
|
||||
error_report("filter_mirror_send failed(%s)", strerror(-ret));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue