On Tue, 2007-03-06 at 22:52 +0000, Daniel P. Berrange wrote:
This feels kind of sick - inventing a common shared struct between
the
two driver tables, when there isn't any common stuff to share :-(
Yeah. Although, as a way to share more code between domains and
networks (especially in qemud), it might make sense.
Looking at the code, IMHO, the whole approach of iterating over the
driver
table soo many times is just wrong, when we can simply have an integer
count recording how many drivers are registered. This eliminates both
for(;;) loops, and reduces the amount of code to the point where I
don't
think there's anything to be gained by having a generic
_virDriverRegister
with all the type-casting this entails.
That sounds fine.
@@ -203,7 +166,21 @@ _virRegisterDriver(void *driver, int isN
int
virRegisterNetworkDriver(virNetworkDriverPtr driver)
{
- return _virRegisterDriver(driver, 1);
+ if (virInitialize() < 0)
+ return -1;
+
+ if (driver == NULL) {
+ virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ return(-1);
+ }
+
+ if (virNetworkDriverTabCount >=
(sizeof(virNetworkDriverTab)/sizeof(virNetworkDriverPtr))) {
Just use MAX_DRIVERS?
Cheers,
Mark.