From nobody Mon Feb 9 23:26:27 2026 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.zoho.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 149519902472154.78676817712778; Fri, 19 May 2017 06:03:44 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AD70D61BA6; Fri, 19 May 2017 13:03:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 58D785C546; Fri, 19 May 2017 13:03:40 +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 CCF81180BAF1; Fri, 19 May 2017 13:03:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4JD3b3I003783 for ; Fri, 19 May 2017 09:03:37 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5070F18C60; Fri, 19 May 2017 13:03:37 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-18.phx2.redhat.com [10.3.116.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0E29718C5D for ; Fri, 19 May 2017 13:03:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AD70D61BA6 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com AD70D61BA6 From: John Ferlan To: libvir-list@redhat.com Date: Fri, 19 May 2017 09:03:13 -0400 Message-Id: <20170519130324.4624-6-jferlan@redhat.com> In-Reply-To: <20170519130324.4624-1-jferlan@redhat.com> References: <20170519130324.4624-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 05/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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 19 May 2017 13:03:42 +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 --- src/conf/virnetworkobj.c | 97 ++++++++++++++++++++++++++++++++++++++++= ++ src/conf/virnetworkobj.h | 26 ++++++++++++ src/libvirt_private.syms | 6 +++ src/network/bridge_driver.c | 101 ++++++++--------------------------------= ---- 4 files changed, 147 insertions(+), 83 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 88e42b5..562fb91 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -107,6 +107,103 @@ 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; +} + + +char * +virNetworkObjMacMgrFileName(const char *dnsmasqStateDir, + const char *bridge) +{ + char *filename; + + ignore_value(virAsprintf(&filename, "%s/%s.macs", dnsmasqStateDir, bri= dge)); + + return filename; +} + + +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 virNetworkObjMacMgrFileName(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 virNetworkObjMacMgrFileName(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..da12848 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -50,6 +50,32 @@ struct _virNetworkObj { virNetworkObjPtr virNetworkObjNew(void); =20 +virMacMapPtr +virNetworkObjGetMacMap(virNetworkObjPtr obj); + +void +virNetworkObjSetMacMap(virNetworkObjPtr obj, + virMacMapPtr macmap); + +void +virNetworkObjUnrefMacMap(virNetworkObjPtr obj); + +char * +virNetworkObjMacMgrFileName(const char *dnsmasqStateDir, + const char *bridge); + +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 d361454..1907afe 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -931,6 +931,7 @@ virNetworkObjFindByName; virNetworkObjFindByNameLocked; virNetworkObjFindByUUID; virNetworkObjFindByUUIDLocked; +virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; virNetworkObjListExport; virNetworkObjListForEach; @@ -940,12 +941,17 @@ virNetworkObjListNumOfNetworks; virNetworkObjListPrune; virNetworkObjLoadAllConfigs; virNetworkObjLoadAllState; +virNetworkObjMacMgrAdd; +virNetworkObjMacMgrDel; +virNetworkObjMacMgrFileName; 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 d888391..d8d3782 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -322,18 +322,6 @@ networkRadvdConfigFileName(virNetworkDriverStatePtr dr= iver, } =20 =20 -static char * -networkMacMgrFileName(virNetworkDriverStatePtr driver, - const char *bridge) -{ - char *filename; - - ignore_value(virAsprintf(&filename, "%s/%s.macs", - driver->dnsmasqStateDir, bridge)); - return filename; -} - - /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverStatePtr driver, @@ -375,7 +363,8 @@ networkRemoveInactive(virNetworkDriverStatePtr driver, if (!(statusfile =3D virNetworkConfigFile(driver->stateDir, def->name)= )) goto cleanup; =20 - if (!(macMapFile =3D networkMacMgrFileName(driver, def->bridge))) + if (!(macMapFile =3D virNetworkObjMacMgrFileName(driver->dnsmasqStateD= ir, + def->bridge))) goto cleanup; =20 /* dnsmasq */ @@ -412,68 +401,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 networkMacMgrFileName(driver, 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; -} - - -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 networkMacMgrFileName(driver, 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; -} - - static char * networkBridgeDummyNicName(const char *brname) { @@ -505,6 +432,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 @@ -523,12 +451,15 @@ networkUpdateState(virNetworkObjPtr obj, if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) =3D=3D= 1)) obj->active =3D 0; =20 - if (!(macMapFile =3D networkMacMgrFileName(driver, obj->def->bridg= e))) + if (!(macMapFile =3D virNetworkObjMacMgrFileName(driver->dnsmasqSt= ateDir, + 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: @@ -2332,6 +2263,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr d= river, virNetworkIPDefPtr ipdef; virNetDevIPRoutePtr routedef; char *macTapIfName =3D NULL; + virMacMapPtr macmap; char *macMapFile =3D NULL; int tapfd =3D -1; =20 @@ -2380,10 +2312,13 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr= driver, } } =20 - if (!(macMapFile =3D networkMacMgrFileName(driver, obj->def->bridge)) = || - !(obj->macmap =3D virMacMapNew(macMapFile))) + if (!(macMapFile =3D virNetworkObjMacMgrFileName(driver->dnsmasqStateD= ir, + obj->def->bridge)) || + !(macmap =3D virMacMapNew(macMapFile))) goto err1; =20 + virNetworkObjSetMacMap(obj, macmap); + /* Set bridge options */ =20 /* delay is configured in seconds, but virNetDevBridgeSetSTPDelay @@ -2546,8 +2481,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; @@ -4663,7 +4597,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) @@ -5085,7 +5020,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.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list