[libvirt] PATCH 3/4: SUpport bridge config for openvz

Daniel P. Berrange berrange at redhat.com
Mon Oct 20 10:51:15 UTC 2008


On Thu, Oct 16, 2008 at 07:52:42PM +0400, Evgeniy Sokolov wrote:
> >This implements support for bridge configs in openvz following the rules
> >set out in
> >
> >http://wiki.openvz.org/Virtual_Ethernet_device#Making_a_bridged_veth-device_persistent
> >
> >This simply requires that the admin has created /etc/vz/vznetctl.conf
> >containing
> >
> >  #!/bin/bash
> >  EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
> >
> >
> >For openvz <= 3.0.22, we have to manually re-write the NETIF line to
> >add the bridge config parameter. 
> It is alternative, but more flexible way. It require simple modification 
> of vznetaddbr.
> Common scenario is to add VZHOSTBR="<bridge if>" to config.
> For newer openvz we can simply pass
> >the bridge name on the commnand line to --netif_add.
> >
> >Older openvz also requires that the admin install /usr/sbin/vznetaddbr
> >since it is not available out of the box
> >
> >Daniel
> >
> 
> 
> >+
> >+    while(1) {
> >+        if (openvz_readline(fd, line, sizeof(line)) <= 0)
> >+            break;
> >+
> >+        if (!STRPREFIX(line, param)) {
> need to check for '='.
> Currently, if you will search for 'NETIF', you can find any string with 
> such prefix. example 'NETIFOTHERPARAM'

Ahh, good point, will fix that.

> >+            if (safewrite(temp_fd, line, strlen(line)) !=
> >+                strlen(line))
> >+                goto error;
> >+        }
> >+    }
> >+
> > /*
> 
> >+
> >+        if (!(opt = virBufferContentAndReset(&buf)))
> >+            goto no_memory;
> >+
> >         ADD_ARG_LIT(opt) ;
> Need to free opt

Yes.

> >-    }else if (net->type == VIR_DOMAIN_NET_TYPE_ETHERNET &&
> >+    } else if (net->type == VIR_DOMAIN_NET_TYPE_ETHERNET &&
> >               net->data.ethernet.ipaddr != NULL) {
> 
> >+static int
> >+openvzDomainSetNetworkConfig(virConnectPtr conn,
> >+                             virDomainDefPtr def)
> >+{
> >+    unsigned int i;
> >+    virBuffer buf = VIR_BUFFER_INITIALIZER;
> >+    char *param;
> >+    struct openvz_driver *driver = (struct openvz_driver *) 
> >conn->privateData;
> >+
> >+    for (i = 0 ; i < def->nnets ; i++) {
> >+        if (driver->version < VZCTL_BRIDGE_MIN_VERSION && i > 0)
> >+            virBufferAddLit(&buf, ";");
> Need to check that network is bridge.
> In other case we will have NETIF='<some params>;;;;'

Opps, completely forgot that check

> >+
> >+        if (openvzDomainSetNetwork(conn, def->name, def->nets[i], &buf) < 
> >0) {
> >+            openvzError(conn, VIR_ERR_INTERNAL_ERROR,
> >+                        "%s", _("Could not configure network"));
> >+            goto exit;
> >+        }
> >+    }
> >+

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list