-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1 iQEcBAABAgAGBQJZI54ZAAoJEO8Ells5jWIRieUH/A5im/ud4QMJlLTPPI9grim8 KSl8InbMdpG9CkROZIA6lt8torestH60YvzR+128kI4rKiyglGWMhWqyo+Cli9NK bhZCeqS/zVWWSU/LR+SkFI4mePgnLmfDL+kbZvZQ7eSF9xwSWXYZd7d8HPxY7gcF fE+cnxSQl1VbtT/ncvrsYykgQG2L8MjGWfLjspzeJ0qG0YuwiMyJnmruPKgjVdcW 1A0CFOIxWd/5m1d5cC8I8+kQPn0aB4uB/gXFL46c3ZoxwtZWSs+IKA1dl8aORnZL +ihJ1YEVxJzY/UPo8mrbN/9XE+u6qpL4UfaNdWmu7KTMVI6+UUaXOc0r2UKuBj8= =dLzH -----END PGP SIGNATURE----- Merge remote-tracking branch 'jasowang/tags/net-pull-request' into staging # gpg: Signature made Tue 23 May 2017 03:27:37 AM BST # gpg: using RSA key 0xEF04965B398D6211 # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" # Primary key fingerprint: 215D 46F4 8246 689E C77F 3562 EF04 965B 398D 6211 * jasowang/tags/net-pull-request: e1000e: Fix ICR "Other" causes clear logic net/filter-rewriter: Remove unused option in filter-rewriter net/filter-mirror.c: Rename filter_mirror_send() and fix codestyle net/filter-mirror.c: Remove duplicate check code. hmp / net: Mark host_net_add/remove as deprecated COLO-compare: Improve tcp compare trace event readability virtio-net: fix wild pointer when remove virtio-net queues net/dump: Issue a warning for the deprecated "-net dump" net/tap: Replace tap-haiku.c and tap-aix.c by a generic tap-stub.c Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
						commit
						9964e96dc9
					
				| 
						 | 
				
			
			@ -1296,7 +1296,7 @@ ETEXI
 | 
			
		|||
        .name       = "host_net_add",
 | 
			
		||||
        .args_type  = "device:s,opts:s?",
 | 
			
		||||
        .params     = "tap|user|socket|vde|netmap|bridge|vhost-user|dump [options]",
 | 
			
		||||
        .help       = "add host VLAN client",
 | 
			
		||||
        .help       = "add host VLAN client (deprecated, use netdev_add instead)",
 | 
			
		||||
        .cmd        = hmp_host_net_add,
 | 
			
		||||
        .command_completion = host_net_add_completion,
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -1304,14 +1304,14 @@ ETEXI
 | 
			
		|||
STEXI
 | 
			
		||||
@item host_net_add
 | 
			
		||||
@findex host_net_add
 | 
			
		||||
Add host VLAN client.
 | 
			
		||||
Add host VLAN client. Deprecated, please use @code{netdev_add} instead.
 | 
			
		||||
ETEXI
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
        .name       = "host_net_remove",
 | 
			
		||||
        .args_type  = "vlan_id:i,device:s",
 | 
			
		||||
        .params     = "vlan_id name",
 | 
			
		||||
        .help       = "remove host VLAN client",
 | 
			
		||||
        .help       = "remove host VLAN client (deprecated, use netdev_del instead)",
 | 
			
		||||
        .cmd        = hmp_host_net_remove,
 | 
			
		||||
        .command_completion = host_net_remove_completion,
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -1319,7 +1319,7 @@ ETEXI
 | 
			
		|||
STEXI
 | 
			
		||||
@item host_net_remove
 | 
			
		||||
@findex host_net_remove
 | 
			
		||||
Remove host VLAN client.
 | 
			
		||||
Remove host VLAN client. Deprecated, please use @code{netdev_del} instead.
 | 
			
		||||
ETEXI
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2454,14 +2454,20 @@ e1000e_set_ics(E1000ECore *core, int index, uint32_t val)
 | 
			
		|||
static void
 | 
			
		||||
e1000e_set_icr(E1000ECore *core, int index, uint32_t val)
 | 
			
		||||
{
 | 
			
		||||
    uint32_t icr = 0;
 | 
			
		||||
    if ((core->mac[ICR] & E1000_ICR_ASSERTED) &&
 | 
			
		||||
        (core->mac[CTRL_EXT] & E1000_CTRL_EXT_IAME)) {
 | 
			
		||||
        trace_e1000e_irq_icr_process_iame();
 | 
			
		||||
        e1000e_clear_ims_bits(core, core->mac[IAM]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    trace_e1000e_irq_icr_write(val, core->mac[ICR], core->mac[ICR] & ~val);
 | 
			
		||||
    core->mac[ICR] &= ~val;
 | 
			
		||||
    icr = core->mac[ICR] & ~val;
 | 
			
		||||
    /* Windows driver expects that the "receive overrun" bit and other
 | 
			
		||||
     * ones to be cleared when the "Other" bit (#24) is cleared.
 | 
			
		||||
     */
 | 
			
		||||
    icr = (val & E1000_ICR_OTHER) ? (icr & ~E1000_ICR_OTHER_CAUSES) : icr;
 | 
			
		||||
    trace_e1000e_irq_icr_write(val, core->mac[ICR], icr);
 | 
			
		||||
    core->mac[ICR] = icr;
 | 
			
		||||
    e1000e_update_interrupt_state(core);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1522,9 +1522,12 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
 | 
			
		|||
    if (q->tx_timer) {
 | 
			
		||||
        timer_del(q->tx_timer);
 | 
			
		||||
        timer_free(q->tx_timer);
 | 
			
		||||
        q->tx_timer = NULL;
 | 
			
		||||
    } else {
 | 
			
		||||
        qemu_bh_delete(q->tx_bh);
 | 
			
		||||
        q->tx_bh = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    q->tx_waiting = 0;
 | 
			
		||||
    virtio_del_queue(vdev, index * 2 + 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,13 +3,7 @@ common-obj-y += socket.o
 | 
			
		|||
common-obj-y += dump.o
 | 
			
		||||
common-obj-y += eth.o
 | 
			
		||||
common-obj-$(CONFIG_L2TPV3) += l2tpv3.o
 | 
			
		||||
common-obj-$(CONFIG_POSIX) += tap.o vhost-user.o
 | 
			
		||||
common-obj-$(CONFIG_LINUX) += tap-linux.o
 | 
			
		||||
common-obj-$(CONFIG_WIN32) += tap-win32.o
 | 
			
		||||
common-obj-$(CONFIG_BSD) += tap-bsd.o
 | 
			
		||||
common-obj-$(CONFIG_SOLARIS) += tap-solaris.o
 | 
			
		||||
common-obj-$(CONFIG_AIX) += tap-aix.o
 | 
			
		||||
common-obj-$(CONFIG_HAIKU) += tap-haiku.o
 | 
			
		||||
common-obj-$(CONFIG_POSIX) += vhost-user.o
 | 
			
		||||
common-obj-$(CONFIG_SLIRP) += slirp.o
 | 
			
		||||
common-obj-$(CONFIG_VDE) += vde.o
 | 
			
		||||
common-obj-$(CONFIG_NETMAP) += netmap.o
 | 
			
		||||
| 
						 | 
				
			
			@ -20,3 +14,10 @@ common-obj-y += colo-compare.o
 | 
			
		|||
common-obj-y += colo.o
 | 
			
		||||
common-obj-y += filter-rewriter.o
 | 
			
		||||
common-obj-y += filter-replay.o
 | 
			
		||||
 | 
			
		||||
tap-obj-$(CONFIG_LINUX) = tap-linux.o
 | 
			
		||||
tap-obj-$(CONFIG_BSD) = tap-bsd.o
 | 
			
		||||
tap-obj-$(CONFIG_SOLARIS) = tap-solaris.o
 | 
			
		||||
tap-obj-y ?= tap-stub.o
 | 
			
		||||
common-obj-$(CONFIG_POSIX) += tap.o $(tap-obj-y)
 | 
			
		||||
common-obj-$(CONFIG_WIN32) += tap-win32.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -265,17 +265,28 @@ static int colo_packet_compare_tcp(Packet *spkt, Packet *ppkt)
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (res != 0 && trace_event_get_state(TRACE_COLO_COMPARE_MISCOMPARE)) {
 | 
			
		||||
        trace_colo_compare_pkt_info_src(inet_ntoa(ppkt->ip->ip_src),
 | 
			
		||||
                                        ntohl(stcp->th_seq),
 | 
			
		||||
                                        ntohl(stcp->th_ack),
 | 
			
		||||
                                        res, stcp->th_flags,
 | 
			
		||||
                                        spkt->size);
 | 
			
		||||
        char pri_ip_src[20], pri_ip_dst[20], sec_ip_src[20], sec_ip_dst[20];
 | 
			
		||||
 | 
			
		||||
        trace_colo_compare_pkt_info_dst(inet_ntoa(ppkt->ip->ip_dst),
 | 
			
		||||
                                        ntohl(ptcp->th_seq),
 | 
			
		||||
                                        ntohl(ptcp->th_ack),
 | 
			
		||||
                                        res, ptcp->th_flags,
 | 
			
		||||
                                        ppkt->size);
 | 
			
		||||
        strcpy(pri_ip_src, inet_ntoa(ppkt->ip->ip_src));
 | 
			
		||||
        strcpy(pri_ip_dst, inet_ntoa(ppkt->ip->ip_dst));
 | 
			
		||||
        strcpy(sec_ip_src, inet_ntoa(spkt->ip->ip_src));
 | 
			
		||||
        strcpy(sec_ip_dst, inet_ntoa(spkt->ip->ip_dst));
 | 
			
		||||
 | 
			
		||||
        trace_colo_compare_ip_info(ppkt->size, pri_ip_src,
 | 
			
		||||
                                   pri_ip_dst, spkt->size,
 | 
			
		||||
                                   sec_ip_src, sec_ip_dst);
 | 
			
		||||
 | 
			
		||||
        trace_colo_compare_tcp_info("pri tcp packet",
 | 
			
		||||
                                    ntohl(ptcp->th_seq),
 | 
			
		||||
                                    ntohl(ptcp->th_ack),
 | 
			
		||||
                                    res, ptcp->th_flags,
 | 
			
		||||
                                    ppkt->size);
 | 
			
		||||
 | 
			
		||||
        trace_colo_compare_tcp_info("sec tcp packet",
 | 
			
		||||
                                    ntohl(stcp->th_seq),
 | 
			
		||||
                                    ntohl(stcp->th_ack),
 | 
			
		||||
                                    res, stcp->th_flags,
 | 
			
		||||
                                    spkt->size);
 | 
			
		||||
 | 
			
		||||
        qemu_hexdump((char *)ppkt->data, stderr,
 | 
			
		||||
                     "colo-compare ppkt", ppkt->size);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -194,6 +194,9 @@ int net_init_dump(const Netdev *netdev, const char *name,
 | 
			
		|||
 | 
			
		||||
    assert(peer);
 | 
			
		||||
 | 
			
		||||
    error_report("'-net dump' is deprecated. "
 | 
			
		||||
                 "Please use '-object filter-dump' instead.");
 | 
			
		||||
 | 
			
		||||
    if (dump->has_file) {
 | 
			
		||||
        file = dump->file;
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,9 +43,9 @@ typedef struct MirrorState {
 | 
			
		|||
    SocketReadState rs;
 | 
			
		||||
} MirrorState;
 | 
			
		||||
 | 
			
		||||
static int filter_mirror_send(CharBackend *chr_out,
 | 
			
		||||
                              const struct iovec *iov,
 | 
			
		||||
                              int iovcnt)
 | 
			
		||||
static int filter_send(CharBackend *chr_out,
 | 
			
		||||
                       const struct iovec *iov,
 | 
			
		||||
                       int iovcnt)
 | 
			
		||||
{
 | 
			
		||||
    int ret = 0;
 | 
			
		||||
    ssize_t size = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -141,9 +141,9 @@ static ssize_t filter_mirror_receive_iov(NetFilterState *nf,
 | 
			
		|||
    MirrorState *s = FILTER_MIRROR(nf);
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    ret = filter_mirror_send(&s->chr_out, iov, iovcnt);
 | 
			
		||||
    ret = filter_send(&s->chr_out, iov, iovcnt);
 | 
			
		||||
    if (ret) {
 | 
			
		||||
        error_report("filter_mirror_send failed(%s)", strerror(-ret));
 | 
			
		||||
        error_report("filter mirror send failed(%s)", strerror(-ret));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
| 
						 | 
				
			
			@ -164,9 +164,9 @@ static ssize_t filter_redirector_receive_iov(NetFilterState *nf,
 | 
			
		|||
    int ret;
 | 
			
		||||
 | 
			
		||||
    if (qemu_chr_fe_get_driver(&s->chr_out)) {
 | 
			
		||||
        ret = filter_mirror_send(&s->chr_out, iov, iovcnt);
 | 
			
		||||
        ret = filter_send(&s->chr_out, iov, iovcnt);
 | 
			
		||||
        if (ret) {
 | 
			
		||||
            error_report("filter_mirror_send failed(%s)", strerror(-ret));
 | 
			
		||||
            error_report("filter redirector send failed(%s)", strerror(-ret));
 | 
			
		||||
        }
 | 
			
		||||
        return iov_size(iov, iovcnt);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -194,12 +194,6 @@ static void filter_mirror_setup(NetFilterState *nf, Error **errp)
 | 
			
		|||
    MirrorState *s = FILTER_MIRROR(nf);
 | 
			
		||||
    Chardev *chr;
 | 
			
		||||
 | 
			
		||||
    if (!s->outdev) {
 | 
			
		||||
        error_setg(errp, "filter mirror needs 'outdev' "
 | 
			
		||||
                   "property set");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    chr = qemu_chr_find(s->outdev);
 | 
			
		||||
    if (chr == NULL) {
 | 
			
		||||
        error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
 | 
			
		||||
| 
						 | 
				
			
			@ -292,8 +286,9 @@ static char *filter_redirector_get_indev(Object *obj, Error **errp)
 | 
			
		|||
    return g_strdup(s->indev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
filter_redirector_set_indev(Object *obj, const char *value, Error **errp)
 | 
			
		||||
static void filter_redirector_set_indev(Object *obj,
 | 
			
		||||
                                        const char *value,
 | 
			
		||||
                                        Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    MirrorState *s = FILTER_REDIRECTOR(obj);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -308,8 +303,9 @@ static char *filter_mirror_get_outdev(Object *obj, Error **errp)
 | 
			
		|||
    return g_strdup(s->outdev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
filter_mirror_set_outdev(Object *obj, const char *value, Error **errp)
 | 
			
		||||
static void filter_mirror_set_outdev(Object *obj,
 | 
			
		||||
                                     const char *value,
 | 
			
		||||
                                     Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    MirrorState *s = FILTER_MIRROR(obj);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -329,8 +325,9 @@ static char *filter_redirector_get_outdev(Object *obj, Error **errp)
 | 
			
		|||
    return g_strdup(s->outdev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
filter_redirector_set_outdev(Object *obj, const char *value, Error **errp)
 | 
			
		||||
static void filter_redirector_set_outdev(Object *obj,
 | 
			
		||||
                                         const char *value,
 | 
			
		||||
                                         Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    MirrorState *s = FILTER_REDIRECTOR(obj);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								net/net.c
								
								
								
								
							
							
						
						
									
										13
									
								
								net/net.c
								
								
								
								
							| 
						 | 
				
			
			@ -45,6 +45,7 @@
 | 
			
		|||
#include "qapi-visit.h"
 | 
			
		||||
#include "qapi/opts-visitor.h"
 | 
			
		||||
#include "sysemu/sysemu.h"
 | 
			
		||||
#include "sysemu/qtest.h"
 | 
			
		||||
#include "net/filter.h"
 | 
			
		||||
#include "qapi/string-output-visitor.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1149,6 +1150,12 @@ void hmp_host_net_add(Monitor *mon, const QDict *qdict)
 | 
			
		|||
    const char *opts_str = qdict_get_try_str(qdict, "opts");
 | 
			
		||||
    Error *local_err = NULL;
 | 
			
		||||
    QemuOpts *opts;
 | 
			
		||||
    static bool warned;
 | 
			
		||||
 | 
			
		||||
    if (!warned && !qtest_enabled()) {
 | 
			
		||||
        error_report("host_net_add is deprecated, use netdev_add instead");
 | 
			
		||||
        warned = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!net_host_check_device(device)) {
 | 
			
		||||
        monitor_printf(mon, "invalid host network device %s\n", device);
 | 
			
		||||
| 
						 | 
				
			
			@ -1175,6 +1182,12 @@ void hmp_host_net_remove(Monitor *mon, const QDict *qdict)
 | 
			
		|||
    NetClientState *nc;
 | 
			
		||||
    int vlan_id = qdict_get_int(qdict, "vlan_id");
 | 
			
		||||
    const char *device = qdict_get_str(qdict, "device");
 | 
			
		||||
    static bool warned;
 | 
			
		||||
 | 
			
		||||
    if (!warned && !qtest_enabled()) {
 | 
			
		||||
        error_report("host_net_remove is deprecated, use netdev_del instead");
 | 
			
		||||
        warned = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    nc = net_hub_find_client_by_name(vlan_id, device);
 | 
			
		||||
    if (!nc) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,87 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * QEMU System Emulator
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2003-2008 Fabrice Bellard
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 * in the Software without restriction, including without limitation the rights
 | 
			
		||||
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
 * copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
 * furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included in
 | 
			
		||||
 * all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
 * THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "qemu/osdep.h"
 | 
			
		||||
#include "qapi/error.h"
 | 
			
		||||
#include "tap_int.h"
 | 
			
		||||
 | 
			
		||||
int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
 | 
			
		||||
             int vnet_hdr_required, int mq_required, Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    error_setg(errp, "no tap on Haiku");
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_probe_vnet_hdr(int fd)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_probe_has_ufo(int fd)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_probe_vnet_hdr_len(int fd, int len)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tap_fd_set_vnet_hdr_len(int fd, int len)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_fd_set_vnet_le(int fd, int is_le)
 | 
			
		||||
{
 | 
			
		||||
    return -EINVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_fd_set_vnet_be(int fd, int is_be)
 | 
			
		||||
{
 | 
			
		||||
    return -EINVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tap_fd_set_offload(int fd, int csum, int tso4,
 | 
			
		||||
                        int tso6, int ecn, int ufo)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_fd_enable(int fd)
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_fd_disable(int fd)
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int tap_fd_get_ifname(int fd, char *ifname)
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +29,7 @@
 | 
			
		|||
int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
 | 
			
		||||
             int vnet_hdr_required, int mq_required, Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    error_setg(errp, "no tap on AIX");
 | 
			
		||||
    error_setg(errp, "tap is not supported in this build");
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,4 +85,3 @@ int tap_fd_get_ifname(int fd, char *ifname)
 | 
			
		|||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,8 +13,7 @@ colo_compare_icmp_miscompare(const char *sta, int size) ": %s = %d"
 | 
			
		|||
colo_compare_ip_info(int psize, const char *sta, const char *stb, int ssize, const char *stc, const char *std) "ppkt size = %d, ip_src = %s, ip_dst = %s, spkt size = %d, ip_src = %s, ip_dst = %s"
 | 
			
		||||
colo_old_packet_check_found(int64_t old_time) "%" PRId64
 | 
			
		||||
colo_compare_miscompare(void) ""
 | 
			
		||||
colo_compare_pkt_info_src(const char *src, uint32_t sseq, uint32_t sack, int res, uint32_t sflag, int ssize) "src/dst: %s s: seq/ack=%u/%u res=%d flags=%x spkt_size: %d\n"
 | 
			
		||||
colo_compare_pkt_info_dst(const char *dst, uint32_t dseq, uint32_t dack, int res, uint32_t dflag, int dsize) "src/dst: %s d: seq/ack=%u/%u res=%d flags=%x dpkt_size: %d\n"
 | 
			
		||||
colo_compare_tcp_info(const char *pkt, uint32_t seq, uint32_t ack, int res, uint32_t flag, int size) "side: %s seq/ack= %u/%u res= %d flags= %x pkt_size: %d\n"
 | 
			
		||||
 | 
			
		||||
# net/filter-rewriter.c
 | 
			
		||||
colo_filter_rewriter_debug(void) ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4072,7 +4072,7 @@ Create a filter-redirector we need to differ outdev id from indev id, id can not
 | 
			
		|||
be the same. we can just use indev or outdev, but at least one of indev or outdev
 | 
			
		||||
need to be specified.
 | 
			
		||||
 | 
			
		||||
@item -object filter-rewriter,id=@var{id},netdev=@var{netdevid},rewriter-mode=@var{mode}[,queue=@var{all|rx|tx}]
 | 
			
		||||
@item -object filter-rewriter,id=@var{id},netdev=@var{netdevid}[,queue=@var{all|rx|tx}]
 | 
			
		||||
 | 
			
		||||
Filter-rewriter is a part of COLO project.It will rewrite tcp packet to
 | 
			
		||||
secondary from primary to keep secondary tcp connection,and rewrite
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue