1 /* 2 * virnetworkobj.h: handle network objects 3 * (derived from network_conf.h) 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library. If not, see 17 * <http://www.gnu.org/licenses/>. 18 */ 19 20 #pragma once 21 22 #include "internal.h" 23 24 #include "network_conf.h" 25 #include "virnetworkportdef.h" 26 27 typedef struct _virNetworkObj virNetworkObj; 28 29 virNetworkObj * 30 virNetworkObjNew(void); 31 32 virNetworkDef * 33 virNetworkObjGetDef(virNetworkObj *obj); 34 35 void 36 virNetworkObjSetDef(virNetworkObj *obj, 37 virNetworkDef *def); 38 39 virNetworkDef * 40 virNetworkObjGetNewDef(virNetworkObj *obj); 41 42 bool 43 virNetworkObjIsActive(virNetworkObj *obj); 44 45 void 46 virNetworkObjSetActive(virNetworkObj *obj, 47 bool active); 48 49 bool 50 virNetworkObjIsPersistent(virNetworkObj *obj); 51 52 bool 53 virNetworkObjIsAutostart(virNetworkObj *obj); 54 55 void 56 virNetworkObjSetAutostart(virNetworkObj *obj, 57 bool autostart); 58 59 virMacMap * 60 virNetworkObjGetMacMap(virNetworkObj *obj); 61 62 pid_t 63 virNetworkObjGetDnsmasqPid(virNetworkObj *obj); 64 65 void 66 virNetworkObjSetDnsmasqPid(virNetworkObj *obj, 67 pid_t dnsmasqPid); 68 69 pid_t 70 virNetworkObjGetRadvdPid(virNetworkObj *obj); 71 72 void 73 virNetworkObjSetRadvdPid(virNetworkObj *obj, 74 pid_t radvdPid); 75 76 virBitmap * 77 virNetworkObjGetClassIdMap(virNetworkObj *obj); 78 79 unsigned long long 80 virNetworkObjGetFloorSum(virNetworkObj *obj); 81 82 void 83 virNetworkObjSetFloorSum(virNetworkObj *obj, 84 unsigned long long floor_sum); 85 86 void 87 virNetworkObjSetMacMap(virNetworkObj *obj, 88 virMacMap *macmap); 89 90 void 91 virNetworkObjUnrefMacMap(virNetworkObj *obj); 92 93 int 94 virNetworkObjMacMgrAdd(virNetworkObj *obj, 95 const char *dnsmasqStateDir, 96 const char *domain, 97 const virMacAddr *mac); 98 99 int 100 virNetworkObjMacMgrDel(virNetworkObj *obj, 101 const char *dnsmasqStateDir, 102 const char *domain, 103 const virMacAddr *mac); 104 105 void 106 virNetworkObjEndAPI(virNetworkObj **net); 107 108 typedef struct _virNetworkObjList virNetworkObjList; 109 110 virNetworkObjList * 111 virNetworkObjListNew(void); 112 113 virNetworkObj * 114 virNetworkObjFindByUUID(virNetworkObjList *nets, 115 const unsigned char *uuid); 116 117 virNetworkObj * 118 virNetworkObjFindByName(virNetworkObjList *nets, 119 const char *name); 120 121 bool 122 virNetworkObjTaint(virNetworkObj *obj, 123 virNetworkTaintFlags taint); 124 125 typedef bool 126 (*virNetworkObjListFilter)(virConnectPtr conn, 127 virNetworkDef *def); 128 129 virNetworkObj * 130 virNetworkObjAssignDef(virNetworkObjList *nets, 131 virNetworkDef *def, 132 unsigned int flags); 133 134 void 135 virNetworkObjUpdateAssignDef(virNetworkObj *network, 136 virNetworkDef *def, 137 bool live); 138 139 int 140 virNetworkObjSetDefTransient(virNetworkObj *network, 141 bool live, 142 virNetworkXMLOption *xmlopt); 143 144 void 145 virNetworkObjUnsetDefTransient(virNetworkObj *network); 146 147 virNetworkDef * 148 virNetworkObjGetPersistentDef(virNetworkObj *network); 149 150 int 151 virNetworkObjReplacePersistentDef(virNetworkObj *network, 152 virNetworkDef *def); 153 154 void 155 virNetworkObjRemoveInactive(virNetworkObjList *nets, 156 virNetworkObj *net); 157 158 int 159 virNetworkObjAddPort(virNetworkObj *net, 160 virNetworkPortDef *portdef, 161 const char *stateDir); 162 163 char * 164 virNetworkObjGetPortStatusDir(virNetworkObj *net, 165 const char *stateDir); 166 167 virNetworkPortDef * 168 virNetworkObjLookupPort(virNetworkObj *net, 169 const unsigned char *uuid); 170 171 int 172 virNetworkObjDeletePort(virNetworkObj *net, 173 const unsigned char *uuid, 174 const char *stateDir); 175 176 int 177 virNetworkObjDeleteAllPorts(virNetworkObj *net, 178 const char *stateDir); 179 180 typedef bool 181 (*virNetworkPortListFilter)(virConnectPtr conn, 182 virNetworkDef *def, 183 virNetworkPortDef *portdef); 184 185 int 186 virNetworkObjPortListExport(virNetworkPtr net, 187 virNetworkObj *obj, 188 virNetworkPortPtr **ports, 189 virNetworkPortListFilter filter); 190 191 typedef bool 192 (*virNetworkPortListIter)(virNetworkPortDef *portdef, 193 void *opaque); 194 195 int 196 virNetworkObjPortForEach(virNetworkObj *obj, 197 virNetworkPortListIter iter, 198 void *opaque); 199 200 int 201 virNetworkObjSaveStatus(const char *statusDir, 202 virNetworkObj *net, 203 virNetworkXMLOption *xmlopt) G_GNUC_WARN_UNUSED_RESULT; 204 205 int 206 virNetworkObjLoadAllConfigs(virNetworkObjList *nets, 207 const char *configDir, 208 const char *autostartDir, 209 virNetworkXMLOption *xmlopt); 210 211 int 212 virNetworkObjLoadAllState(virNetworkObjList *nets, 213 const char *stateDir, 214 virNetworkXMLOption *xmlopt); 215 216 int 217 virNetworkObjDeleteConfig(const char *configDir, 218 const char *autostartDir, 219 virNetworkObj *net); 220 221 bool 222 virNetworkObjBridgeInUse(virNetworkObjList *nets, 223 const char *bridge, 224 const char *skipname); 225 226 int 227 virNetworkObjUpdate(virNetworkObj *obj, 228 unsigned int command, /* virNetworkUpdateCommand */ 229 unsigned int section, /* virNetworkUpdateSection */ 230 int parentIndex, 231 const char *xml, 232 virNetworkXMLOption *xmlopt, 233 unsigned int flags); /* virNetworkUpdateFlags */ 234 235 int 236 virNetworkObjListExport(virConnectPtr conn, 237 virNetworkObjList *netobjs, 238 virNetworkPtr **nets, 239 virNetworkObjListFilter filter, 240 unsigned int flags); 241 242 typedef int 243 (*virNetworkObjListIterator)(virNetworkObj *net, 244 void *opaque); 245 246 int 247 virNetworkObjListForEach(virNetworkObjList *nets, 248 virNetworkObjListIterator callback, 249 void *opaque); 250 251 int 252 virNetworkObjListGetNames(virNetworkObjList *nets, 253 bool active, 254 char **names, 255 int maxnames, 256 virNetworkObjListFilter filter, 257 virConnectPtr conn); 258 259 int 260 virNetworkObjListNumOfNetworks(virNetworkObjList *nets, 261 bool active, 262 virNetworkObjListFilter filter, 263 virConnectPtr conn); 264 265 void 266 virNetworkObjListPrune(virNetworkObjList *nets, 267 unsigned int flags); 268