From nobody Tue Sep 9 09:46:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1745925728; cv=none; d=zohomail.com; s=zohoarc; b=hiMYzJC8TMLoJ9gDsbuKHxoDhgmOkmWQSStKNVvrBg/BNc/ITp/Zdie2wJiL8zwJvtZnVjcUoQ103NqJ8CVdBMCmlFZHe3B77Yyd2i4zu2mRLN3NvDJlmNpaEj3mvh0ZcUPEy73gDsdfWi14k76YkVjSVLXZcw3Fe/xh/c8vR9g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745925728; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id; bh=KrLMgBQoEwsPmwNAQjAQ6uN4fRQpCf9vBkyE15jjFAA=; b=bgT9h6JIvWVI27Dc6eR9x0KsnW2yrEYL4TeEdx048c7DsNPlcWBTVFzlfjnQZHGWZHJNpjgaK3exjwpYNfxqXtSfqWiB1dsw5SU2WW9lnA0G1RGmrcII3vBsf7HIV0wPORTBTjTQd6am0IaBnhsed34MVi3XHtPtHGe3zro5CZE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1745925728770905.6985900301094; Tue, 29 Apr 2025 04:22:08 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id AC4781472; Tue, 29 Apr 2025 07:22:07 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id CAE28142C; Tue, 29 Apr 2025 07:15:19 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 467E91292; Tue, 29 Apr 2025 07:15:07 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id D49CE1392 for ; Tue, 29 Apr 2025 07:14:43 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-681-tkvESe_3PlibyTxf54TbyA-1; Tue, 29 Apr 2025 07:14:42 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 57A5D18001E0 for ; Tue, 29 Apr 2025 11:14:41 +0000 (UTC) Received: from toolbx.redhat.com (unknown [10.42.28.98]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8D301195608D; Tue, 29 Apr 2025 11:14:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1745925283; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fL/X74deuBN82dT02+H/10MhsyyR5ruknQsO1J9Ixls=; b=WQwOPLupkFYiG2OunI5owIPnGtnFXHPg2fSmlPT0iqSGfxUThVEEnsb4ypwJ6C+hMTaQxd koB3jpouA+hgQJP+kUYwUQV6SyQZer/fbwO+scv1unXAmXtFIYpbB3+ItIorOmjpqEiK6t Zed3MZCY0wfwLDXTEkLE5S5MDo4JswM= X-MC-Unique: tkvESe_3PlibyTxf54TbyA-1 X-Mimecast-MFC-AGG-ID: tkvESe_3PlibyTxf54TbyA_1745925281 To: devel@lists.libvirt.org Cc: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PATCH 16/20] util: remove use hardcoded TC path Date: Tue, 29 Apr 2025 12:14:16 +0100 Message-ID: <20250429111420.1748521-17-berrange@redhat.com> In-Reply-To: <20250429111420.1748521-1-berrange@redhat.com> References: <20250429111420.1748521-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Hp6g9uwOsRpWrg0xQ2809V-J9A7jY3TIyzHTOT6-5yw_1745925281 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ISVRX2DGOXBRJKXLPZYR6WI7RD2HNH4P X-Message-ID-Hash: ISVRX2DGOXBRJKXLPZYR6WI7RD2HNH4P X-MailFrom: berrange@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: =?utf-8?q?Daniel_P=2E_Berrang=C3=A9_via_Devel?= Reply-To: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1745925730671019100 Content-Type: text/plain; charset="utf-8" From: Daniel P. Berrang=C3=A9 Allow virCommand to find 'tc' in $PATH. This command is only used when running privileged in which case both 'bin' and 'sbin' dirs will be in $PATH, so virFindFileInPath will do the right thing to find it. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Peter Krempa --- meson.build | 10 ++---- src/util/virfirewall.h | 1 + src/util/virnetdevbandwidth.c | 36 ++++++++++----------- tests/virnetdevbandwidthtest.c | 58 +++++++++++++++++----------------- 4 files changed, 50 insertions(+), 55 deletions(-) diff --git a/meson.build b/meson.build index 0515820cdd..4223f5ab86 100644 --- a/meson.build +++ b/meson.build @@ -845,7 +845,7 @@ endforeach =20 # optional programs =20 -optional_test_programs =3D [ +optional_programs =3D [ 'augparse', 'black', 'flake8', @@ -853,10 +853,6 @@ optional_test_programs =3D [ 'pytest', ] =20 -optional_programs =3D [ - 'tc', -] + optional_test_programs - missing_optional_programs =3D [] foreach name : optional_programs prog =3D find_program(name, required: false, dirs: libvirt_sbin_path) @@ -865,9 +861,7 @@ foreach name : optional_programs prog_path =3D prog.full_path() else prog_path =3D name - if name in optional_test_programs - missing_optional_programs +=3D [ name ] - endif + missing_optional_programs +=3D [ name ] endif =20 conf.set_quoted(varname.to_upper(), prog_path) diff --git a/src/util/virfirewall.h b/src/util/virfirewall.h index d42e60884b..07391bea67 100644 --- a/src/util/virfirewall.h +++ b/src/util/virfirewall.h @@ -30,6 +30,7 @@ #define IPTABLES "iptables" #define IP6TABLES "ip6tables" #define NFT "nft" +#define TC "tc" =20 typedef struct _virFirewall virFirewall; =20 diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c index 5c6a65528c..b141a38b10 100644 --- a/src/util/virnetdevbandwidth.c +++ b/src/util/virnetdevbandwidth.c @@ -126,7 +126,7 @@ virNetDevBandwidthManipulateFilter(const char *ifname, filter_id =3D g_strdup_printf("800::%u", 800 + id); =20 if (remove_old) { - g_autoptr(virCommand) cmd =3D virCommandNew(TC); + g_autoptr(virCommand) cmd =3D virCommandNew("tc"); int cmd_ret =3D 0; =20 virCommandAddArgList(cmd, "filter", "del", "dev", ifname, @@ -138,7 +138,7 @@ virNetDevBandwidthManipulateFilter(const char *ifname, } =20 if (create_new) { - g_autoptr(virCommand) cmd =3D virCommandNew(TC); + g_autoptr(virCommand) cmd =3D virCommandNew("tc"); virMacAddrGetRaw(ifmac_ptr, ifmac); =20 mac[0] =3D g_strdup_printf("0x%02x%02x%02x%02x", ifmac[2], @@ -334,7 +334,7 @@ virNetDevBandwidthSet(const char *ifname, */ if (hierarchical_class) { virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "class", "add", "dev", ifname, "pare= nt", "1:", "classid", "1:1", "htb", "rate", av= erage, "ceil", peak ? peak : average, NULL); @@ -343,7 +343,7 @@ virNetDevBandwidthSet(const char *ifname, goto cleanup; } virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "class", "add", "dev", ifname, "parent", hierarchical_class ? "1:1" : "1:", "classid", hierarchical_class ? "1:2" : "1:1", "htb", @@ -359,7 +359,7 @@ virNetDevBandwidthSet(const char *ifname, goto cleanup; =20 virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "qdisc", "add", "dev", ifname, "parent", hierarchical_class ? "1:2" : "1:1", "handle", "2:", "sfq", "perturb", @@ -369,7 +369,7 @@ virNetDevBandwidthSet(const char *ifname, goto cleanup; =20 virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "filter", "add", "dev", ifname, "parent", "1:0", "protocol", "all", "prio", "1", "handl= e", "1", "fw", "flowid", "1", NULL); @@ -397,7 +397,7 @@ virNetDevBandwidthSet(const char *ifname, } =20 virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "qdisc", "add", "dev", ifname, "ingress", NULL); =20 @@ -405,7 +405,7 @@ virNetDevBandwidthSet(const char *ifname, goto cleanup; =20 virCommandFree(cmd); - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); /* Set filter to match all ingress traffic */ virCommandAddArgList(cmd, "filter", "add", "dev", ifname, "parent", "ffff:", "protocol", "all", "u32", "match", "= u32", @@ -448,13 +448,13 @@ virNetDevBandwidthClear(const char *ifname) if (!ifname) return 0; =20 - rootcmd =3D virCommandNew(TC); + rootcmd =3D virCommandNew("tc"); virCommandAddArgList(rootcmd, "qdisc", "del", "dev", ifname, "root", N= ULL); =20 if (virCommandRun(rootcmd, &dummy) < 0) ret =3D -1; =20 - ingresscmd =3D virCommandNew(TC); + ingresscmd =3D virCommandNew("tc"); virCommandAddArgList(ingresscmd, "qdisc", "del", "dev", ifname, "ingr= ess", NULL); =20 if (virCommandRun(ingresscmd, &dummy) < 0) @@ -593,7 +593,7 @@ virNetDevBandwidthPlug(const char *brname, net_bandwidth->in->peak : net_bandwidth->in->average); =20 - cmd1 =3D virCommandNew(TC); + cmd1 =3D virCommandNew("tc"); virCommandAddArgList(cmd1, "class", "add", "dev", brname, "parent", "1= :1", "classid", class_id, "htb", "rate", floor, "ceil", ceil, NULL); @@ -602,7 +602,7 @@ virNetDevBandwidthPlug(const char *brname, if (virCommandRun(cmd1, NULL) < 0) return -1; =20 - cmd2 =3D virCommandNew(TC); + cmd2 =3D virCommandNew("tc"); virCommandAddArgList(cmd2, "qdisc", "add", "dev", brname, "parent", class_id, "handle", qdisc_id, "sfq", "perturb", "10", NULL); @@ -644,7 +644,7 @@ virNetDevBandwidthUnplug(const char *brname, class_id =3D g_strdup_printf("1:%x", id); qdisc_id =3D g_strdup_printf("%x:", id); =20 - cmd1 =3D virCommandNew(TC); + cmd1 =3D virCommandNew("tc"); virCommandAddArgList(cmd1, "qdisc", "del", "dev", brname, "handle", qdisc_id, NULL); =20 @@ -657,7 +657,7 @@ virNetDevBandwidthUnplug(const char *brname, NULL, true, false) < 0) return -1; =20 - cmd2 =3D virCommandNew(TC); + cmd2 =3D virCommandNew("tc"); virCommandAddArgList(cmd2, "class", "del", "dev", brname, "classid", class_id, NULL); =20 @@ -698,7 +698,7 @@ virNetDevBandwidthUpdateRate(const char *ifname, bandwidth->in->peak : bandwidth->in->average); =20 - cmd =3D virCommandNew(TC); + cmd =3D virCommandNew("tc"); virCommandAddArgList(cmd, "class", "change", "dev", ifname, "classid", class_id, "htb", "rate", rate, "ceil", ceil, NULL); @@ -772,7 +772,7 @@ virNetDevBandwidthSetRootQDisc(const char *ifname, /* Ideally, we would have a netlink implementation and just * call it here. But honestly, I tried and failed miserably. * Fallback to spawning tc. */ - cmd =3D virCommandNewArgList(TC, "qdisc", "add", "dev", ifname, + cmd =3D virCommandNewArgList("tc", "qdisc", "add", "dev", ifname, "root", "handle", "0:", qdisc, NULL); =20 @@ -811,7 +811,7 @@ virNetDevBandWidthAddTxFilterParentQdisc(const char *if= name, /* first check it the qdisc with handle 1: was already added for * this interface by someone else */ - testCmd =3D virCommandNew(TC); + testCmd =3D virCommandNew("tc"); virCommandAddArgList(testCmd, "qdisc", "show", "dev", ifname, "handle", "1:", NULL); virCommandSetOutputBuffer(testCmd, &testResult); @@ -826,7 +826,7 @@ virNetDevBandWidthAddTxFilterParentQdisc(const char *if= name, */ if (!(testResult && strstr(testResult, "qdisc") && strstr(testResult, = " 1: "))) { /* didn't find qdisc in output, so we need to add one */ - g_autoptr(virCommand) addCmd =3D virCommandNew(TC); + g_autoptr(virCommand) addCmd =3D virCommandNew("tc"); =20 virCommandAddArgList(addCmd, "qdisc", "add", "dev", ifname, "root", "handle", "1:", "htb", "default", diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c index b7cf546d9f..9624da9b96 100644 --- a/tests/virnetdevbandwidthtest.c +++ b/tests/virnetdevbandwidthtest.c @@ -145,13 +145,13 @@ mymain(void) DO_TEST_SET("" " " "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" - TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 102= 4kbps quantum 87\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 1= 0\n" - TC " filter add dev eth0 parent 1:0 protocol all prio 1 ha= ndle 1 fw flowid 1\n", + "tc qdisc del dev eth0 root\n" + "tc qdisc del dev eth0 ingress\n" + "tc qdisc show dev eth0 handle 1:\n" + "tc qdisc add dev eth0 root handle 1: htb default 1\n" + "tc class add dev eth0 parent 1: classid 1:1 htb rate 1024= kbps quantum 87\n" + "tc qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10= \n" + "tc filter add dev eth0 parent 1:0 protocol all prio 1 han= dle 1 fw flowid 1\n", "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd queue 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth= 0\"'\n" "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd qos 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth0\= "'\n" "ovs-vsctl --timeout=3D5 set port eth0 qos=3D@qos1 'extern= al-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth0\"' --" @@ -163,10 +163,10 @@ mymain(void) DO_TEST_SET("" " " "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" - TC " qdisc add dev eth0 ingress\n" - TC " filter add dev eth0 parent ffff: protocol all u32 mat= ch u32 0 0" + "tc qdisc del dev eth0 root\n" + "tc qdisc del dev eth0 ingress\n" + "tc qdisc add dev eth0 ingress\n" + "tc filter add dev eth0 parent ffff: protocol all u32 matc= h u32 0 0" " police rate 1024kbps burst 1024kb mtu 64kb drop flowi= d :1\n", "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd queue 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth= 0\"'\n" "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd qos 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth0\= "'\n" @@ -176,15 +176,15 @@ mymain(void) " " " " "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" - TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 1kb= ps ceil 2kbps burst 4kb quantum 1\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 1= 0\n" - TC " filter add dev eth0 parent 1:0 protocol all prio 1 ha= ndle 1 fw flowid 1\n" - TC " qdisc add dev eth0 ingress\n" - TC " filter add dev eth0 parent ffff: protocol all u32 mat= ch u32 0 0" + "tc qdisc del dev eth0 root\n" + "tc qdisc del dev eth0 ingress\n" + "tc qdisc show dev eth0 handle 1:\n" + "tc qdisc add dev eth0 root handle 1: htb default 1\n" + "tc class add dev eth0 parent 1: classid 1:1 htb rate 1kbp= s ceil 2kbps burst 4kb quantum 1\n" + "tc qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10= \n" + "tc filter add dev eth0 parent 1:0 protocol all prio 1 han= dle 1 fw flowid 1\n" + "tc qdisc add dev eth0 ingress\n" + "tc filter add dev eth0 parent ffff: protocol all u32 matc= h u32 0 0" " police rate 5kbps burst 7kb mtu 64kb drop flowid :1\n= ", "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd queue 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth= 0\"'\n" "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd qos 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth0\= "'\n" @@ -199,15 +199,15 @@ mymain(void) " " " " "", - TC " qdisc del dev eth0 root\n" - TC " qdisc del dev eth0 ingress\n" - TC " qdisc show dev eth0 handle 1:\n" - TC " qdisc add dev eth0 root handle 1: htb default 1\n" - TC " class add dev eth0 parent 1: classid 1:1 htb rate 429= 4967295kbps quantum 366503875\n" - TC " qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 1= 0\n" - TC " filter add dev eth0 parent 1:0 protocol all prio 1 ha= ndle 1 fw flowid 1\n" - TC " qdisc add dev eth0 ingress\n" - TC " filter add dev eth0 parent ffff: protocol all u32 mat= ch" + "tc qdisc del dev eth0 root\n" + "tc qdisc del dev eth0 ingress\n" + "tc qdisc show dev eth0 handle 1:\n" + "tc qdisc add dev eth0 root handle 1: htb default 1\n" + "tc class add dev eth0 parent 1: classid 1:1 htb rate 4294= 967295kbps quantum 366503875\n" + "tc qdisc add dev eth0 parent 1:1 handle 2: sfq perturb 10= \n" + "tc filter add dev eth0 parent 1:0 protocol all prio 1 han= dle 1 fw flowid 1\n" + "tc qdisc add dev eth0 ingress\n" + "tc filter add dev eth0 parent ffff: protocol all u32 matc= h" " u32 0 0 police rate 4294967295kbps burst 4194303kb mt= u 64kb" " drop flowid :1\n", "ovs-vsctl --timeout=3D5 --no-heading --columns=3D_uuid fi= nd queue 'external-ids:vm-id=3D\"" VMUUID "\"' 'external-ids:ifname=3D\"eth= 0\"'\n" --=20 2.49.0