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