[libvirt] [PATCH 14/23] Add support for attach/detach/update net devices in config for LXC

Daniel P. Berrange berrange at redhat.com
Mon Dec 17 17:16:12 UTC 2012


On Fri, Dec 14, 2012 at 04:56:50PM +0800, Gao feng wrote:
> On 2012/12/01 04:26, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> > 
> > Wire up the attach/detach/update device APIs to support changing
> > of network interfaces in the persistent config file
> > 
> > Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> > ---
> >  src/lxc/lxc_driver.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++---
> >  1 file changed, 66 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> > index 38d5d87..ecd7cb8 100644
> > --- a/src/lxc/lxc_driver.c
> > +++ b/src/lxc/lxc_driver.c
> > @@ -2770,52 +2770,115 @@ lxcListAllDomains(virConnectPtr conn,
> >  
> >  
> >  static int
> > -lxcDomainAttachDeviceConfig(virDomainDefPtr vmdef ATTRIBUTE_UNUSED,
> > +lxcDomainAttachDeviceConfig(virDomainDefPtr vmdef,
> >                              virDomainDeviceDefPtr dev)
> >  {
> >      int ret = -1;
> > +    virDomainNetDefPtr net;
> >  
> >      switch (dev->type) {
> > +    case VIR_DOMAIN_DEVICE_NET:
> > +        net = dev->data.net;
> > +        if (virDomainNetInsert(vmdef, net) < 0) {
> > +            virReportOOMError();
> > +            goto cleanup;
> > +        }
> > +        dev->data.net = NULL;
> > +        ret = 0;
> > +        break;
> > +
> >      default:
> >           virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> >                          _("persistent attach of device is not supported"));
> >           break;
> >      }
> >  
> > +cleanup:
> >      return ret;
> >  }
> >  
> >  
> >  static int
> > -lxcDomainUpdateDeviceConfig(virDomainDefPtr vmdef ATTRIBUTE_UNUSED,
> > +lxcDomainUpdateDeviceConfig(virDomainDefPtr vmdef,
> >                              virDomainDeviceDefPtr dev)
> >  {
> >      int ret = -1;
> > +    virDomainNetDefPtr net;
> > +    int pos;
> > +    char mac[VIR_MAC_STRING_BUFLEN];
> >  
> >      switch (dev->type) {
> > +    case VIR_DOMAIN_DEVICE_NET:
> > +        net = dev->data.net;
> > +        pos = virDomainNetFindIdx(vmdef, net);
> > +        if (pos == -2) {
> > +            virMacAddrFormat(&net->mac, mac);
> > +            virReportError(VIR_ERR_OPERATION_FAILED,
> > +                           _("couldn't find matching device "
> > +                             "with mac address %s"), mac);
> > +            goto cleanup;
> > +        } else if (pos < 0) {
> > +            virMacAddrFormat(&net->mac, mac);
> > +            virReportError(VIR_ERR_OPERATION_FAILED,
> > +                           _("couldn't find matching device "
> > +                             "with mac address %s"), mac);
> > +            goto cleanup;
> > +        }
> 
> 
> Need some proper err msg,just as the err msg in lxcDomainDetachDeviceConfig

Ok, will change this error message to match

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list