From nobody Mon May 6 03:14:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1501069807254670.2709648363782; Wed, 26 Jul 2017 04:50:07 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E1BA878EAA; Wed, 26 Jul 2017 11:50:03 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8E156A74C; Wed, 26 Jul 2017 11:50:03 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 044234A469; Wed, 26 Jul 2017 11:50:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v6QBo1Or025772 for ; Wed, 26 Jul 2017 07:50:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id C65EE779FC; Wed, 26 Jul 2017 11:50:01 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-46.phx2.redhat.com [10.3.117.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8CD9878121 for ; Wed, 26 Jul 2017 11:50:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E1BA878EAA Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com From: John Ferlan To: libvir-list@redhat.com Date: Wed, 26 Jul 2017 07:50:00 -0400 Message-Id: <20170726115000.4817-1-jferlan@redhat.com> In-Reply-To: <20170519130324.4624-6-jferlan@redhat.com> References: <20170519130324.4624-6-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 5.2/16] network: Move macmap mgmt from bridge_driver to virnetworkobj X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Wed, 26 Jul 2017 11:50:04 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In preparation for having a private virNetworkObj - let's create/move some API's that handle the obj->macmap. The API's will be renamed to have a virNetworkObj prefix to follow conventions and the arguments slightly modified to accept what's necessary to complete their task. Signed-off-by: John Ferlan --- NB: From review - this is the updated changes with the virMacMapFileName already moved. src/conf/virnetworkobj.c | 85 +++++++++++++++++++++++++++++++++++++++++= ++++ src/conf/virnetworkobj.h | 22 ++++++++++++ src/libvirt_private.syms | 5 +++ src/network/bridge_driver.c | 80 +++++++----------------------------------- 4 files changed, 124 insertions(+), 68 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index ccde72e..5578ac3 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,91 @@ virNetworkObjEndAPI(virNetworkObjPtr *net) } =20 =20 +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj) +{ + return obj->macmap; +} + + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap) +{ + obj->macmap =3D macmap; +} + + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj) +{ + if (!virObjectUnref(obj->macmap)) + obj->macmap =3D NULL; +} + + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file =3D NULL; + int ret =3D -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file =3D virMacMapFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapAdd(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret =3D 0; + cleanup: + VIR_FREE(file); + return ret; +} + + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac) +{ + char macStr[VIR_MAC_STRING_BUFLEN]; + char *file =3D NULL; + int ret =3D -1; + + if (!obj->macmap) + return 0; + + virMacAddrFormat(mac, macStr); + + if (!(file =3D virMacMapFileName(dnsmasqStateDir, obj->def->bridge))) + goto cleanup; + + if (virMacMapRemove(obj->macmap, domain, macStr) < 0) + goto cleanup; + + if (virMacMapWriteFile(obj->macmap, file) < 0) + goto cleanup; + + ret =3D 0; + cleanup: + VIR_FREE(file); + return ret; +} + + virNetworkObjListPtr virNetworkObjListNew(void) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index 8090c2e..5c3d9a0 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -50,6 +50,28 @@ struct _virNetworkObj { virNetworkObjPtr virNetworkObjNew(void); =20 +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj); + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap); + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj); + +int +virNetworkObjMacMgrAdd(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + +int +virNetworkObjMacMgrDel(virNetworkObjPtr obj, + const char *dnsmasqStateDir, + const char *domain, + const virMacAddr *mac); + void virNetworkObjEndAPI(virNetworkObjPtr *net); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6f4667f..0eb5749 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -943,6 +943,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; virNetworkObjListExport; virNetworkObjListForEach; @@ -952,12 +953,16 @@ virNetworkObjListNumOfNetworks; virNetworkObjListPrune; virNetworkObjLoadAllConfigs; virNetworkObjLoadAllState; +virNetworkObjMacMgrAdd; +virNetworkObjMacMgrDel; virNetworkObjNew; virNetworkObjRemoveInactive; virNetworkObjReplacePersistentDef; virNetworkObjSaveStatus; virNetworkObjSetDefTransient; +virNetworkObjSetMacMap; virNetworkObjTaint; +virNetworkObjUnrefMacMap; virNetworkObjUnsetDefTransient; virNetworkObjUpdate; virNetworkObjUpdateAssignDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index de2e83c..a730742 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -400,68 +400,6 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, } =20 =20 -static int -networkMacMgrAdd(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file =3D NULL; - int ret =3D -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file =3D virMacMapFileName(driver->dnsmasqStateDir, obj->def->br= idge))) - goto cleanup; - - if (virMacMapAdd(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - VIR_FREE(file); - return ret; -} - - -static int -networkMacMgrDel(virNetworkDriverStatePtr driver, - virNetworkObjPtr obj, - const char *domain, - const virMacAddr *mac) -{ - char macStr[VIR_MAC_STRING_BUFLEN]; - char *file =3D NULL; - int ret =3D -1; - - if (!obj->macmap) - return 0; - - virMacAddrFormat(mac, macStr); - - if (!(file =3D virMacMapFileName(driver->dnsmasqStateDir, obj->def->br= idge))) - goto cleanup; - - if (virMacMapRemove(obj->macmap, domain, macStr) < 0) - goto cleanup; - - if (virMacMapWriteFile(obj->macmap, file) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - VIR_FREE(file); - return ret; -} - - static char * networkBridgeDummyNicName(const char *brname) { @@ -493,6 +431,7 @@ networkUpdateState(virNetworkObjPtr obj, { virNetworkDriverStatePtr driver =3D opaque; dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + virMacMapPtr macmap; char *macMapFile =3D NULL; int ret =3D -1; =20 @@ -515,9 +454,11 @@ networkUpdateState(virNetworkObjPtr obj, obj->def->bridge))) goto cleanup; =20 - if (!(obj->macmap =3D virMacMapNew(macMapFile))) + if (!(macmap =3D virMacMapNew(macMapFile))) goto cleanup; =20 + virNetworkObjSetMacMap(obj, macmap); + break; =20 case VIR_NETWORK_FORWARD_BRIDGE: @@ -2321,6 +2262,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr d= river, virNetworkIPDefPtr ipdef; virNetDevIPRoutePtr routedef; char *macTapIfName =3D NULL; + virMacMapPtr macmap; char *macMapFile =3D NULL; int tapfd =3D -1; =20 @@ -2371,9 +2313,11 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr = driver, =20 if (!(macMapFile =3D virMacMapFileName(driver->dnsmasqStateDir, obj->def->bridge)) || - !(obj->macmap =3D virMacMapNew(macMapFile))) + !(macmap =3D virMacMapNew(macMapFile))) goto err1; =20 + virNetworkObjSetMacMap(obj, macmap); + /* Set bridge options */ =20 /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay @@ -2536,8 +2480,7 @@ networkShutdownNetworkVirtual(virNetworkDriverStatePt= r driver, if (obj->def->bandwidth) virNetDevBandwidthClear(obj->def->bridge); =20 - if (!virObjectUnref(obj->macmap)) - obj->macmap =3D NULL; + virNetworkObjUnrefMacMap(obj); =20 if (obj->radvdPid > 0) { char *radvdpidbase; @@ -4653,7 +4596,8 @@ networkAllocateActualDevice(virDomainDefPtr dom, } } =20 - if (networkMacMgrAdd(driver, obj, dom->name, &iface->mac) < 0) + if (virNetworkObjMacMgrAdd(obj, driver->dnsmasqStateDir, + dom->name, &iface->mac) < 0) goto error; =20 if (virNetDevVPortProfileCheckComplete(virtport, true) < 0) @@ -5075,7 +5019,7 @@ networkReleaseActualDevice(virDomainDefPtr dom, } =20 success: - networkMacMgrDel(driver, obj, dom->name, &iface->mac); + virNetworkObjMacMgrDel(obj, driver->dnsmasqStateDir, dom->name, &iface= ->mac); =20 if (iface->data.network.actual) { netdef->connections--; --=20 2.9.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list