From 7435404fd5c152e5170b7f3e7e5d9e420c572643 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Tue, 9 May 2017 17:41:23 -0400 Subject: [PATCH] network: Introduce virNetworkObjGetClassIdMap In preparation for privatizing virNetworkObj, create accessor function to fetch the @classIdMap. Signed-off-by: John Ferlan --- src/conf/virnetworkobj.c | 7 +++++++ src/conf/virnetworkobj.h | 3 +++ src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 13 ++++++++----- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 56dc6200f8..7b5e6a2983 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -137,6 +137,13 @@ virNetworkObjSetRadvdPid(virNetworkObjPtr obj, } +virBitmapPtr +virNetworkObjGetClassIdMap(virNetworkObjPtr obj) +{ + return obj->classIdMap; +} + + virMacMapPtr virNetworkObjGetMacMap(virNetworkObjPtr obj) { diff --git a/src/conf/virnetworkobj.h b/src/conf/virnetworkobj.h index b5b5546b79..79a9d09944 100644 --- a/src/conf/virnetworkobj.h +++ b/src/conf/virnetworkobj.h @@ -67,6 +67,9 @@ void virNetworkObjSetRadvdPid(virNetworkObjPtr obj, pid_t radvdPid); +virBitmapPtr +virNetworkObjGetClassIdMap(virNetworkObjPtr obj); + void virNetworkObjSetMacMap(virNetworkObjPtr obj, virMacMapPtr macmap); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 052a0ab059..b9964111f4 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -942,6 +942,7 @@ virNetworkObjDeleteConfig; virNetworkObjEndAPI; virNetworkObjFindByName; virNetworkObjFindByUUID; +virNetworkObjGetClassIdMap; virNetworkObjGetDnsmasqPid; virNetworkObjGetMacMap; virNetworkObjGetPersistentDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index ff0ad9c926..4a1c258194 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -5346,10 +5346,11 @@ static ssize_t networkNextClassID(virNetworkObjPtr obj) { ssize_t ret = 0; + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); - ret = virBitmapNextClearBit(obj->classIdMap, -1); + ret = virBitmapNextClearBit(classIdMap, -1); - if (ret < 0 || virBitmapSetBit(obj->classIdMap, ret) < 0) + if (ret < 0 || virBitmapSetBit(classIdMap, ret) < 0) return -1; return ret; @@ -5363,6 +5364,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, unsigned long long new_rate) { virNetworkDriverStatePtr driver = networkGetDriver(); + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); ssize_t class_id = 0; int plug_ret; int ret = -1; @@ -5387,7 +5389,7 @@ networkPlugBandwidthImpl(virNetworkObjPtr obj, obj->floor_sum += ifaceBand->in->floor; /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { - ignore_value(virBitmapClearBit(obj->classIdMap, class_id)); + ignore_value(virBitmapClearBit(classIdMap, class_id)); obj->floor_sum -= ifaceBand->in->floor; iface->data.network.actual->class_id = 0; ignore_value(virNetDevBandwidthUnplug(obj->def->bridge, class_id)); @@ -5451,6 +5453,7 @@ static int networkUnplugBandwidth(virNetworkObjPtr obj, virDomainNetDefPtr iface) { + virBitmapPtr classIdMap = virNetworkObjGetClassIdMap(obj); virNetworkDriverStatePtr driver = networkGetDriver(); int ret = 0; unsigned long long new_rate; @@ -5476,12 +5479,12 @@ networkUnplugBandwidth(virNetworkObjPtr obj, /* update sum of 'floor'-s of attached NICs */ obj->floor_sum -= ifaceBand->in->floor; /* return class ID */ - ignore_value(virBitmapClearBit(obj->classIdMap, + ignore_value(virBitmapClearBit(classIdMap, iface->data.network.actual->class_id)); /* update status file */ if (virNetworkObjSaveStatus(driver->stateDir, obj) < 0) { obj->floor_sum += ifaceBand->in->floor; - ignore_value(virBitmapSetBit(obj->classIdMap, + ignore_value(virBitmapSetBit(classIdMap, iface->data.network.actual->class_id)); goto cleanup; }