[libvirt] [PATCH v4 03/17] LXC: set IP addresses to veth devices in the container

Dmitry Guryanov dguryanov at parallels.com
Tue Dec 2 14:49:16 UTC 2014


On Tuesday 02 December 2014 16:57:12 Dmitry Guryanov wrote:
> On Thursday 13 November 2014 10:33:02 Cédric Bosdonnat wrote:
> > Uses the new virDomainNetDef ips to set the IP addresses on the network
> > interfaces in the container.

Also I think it should be forbidden to set ip addresses if libnl is not found, 
because because behavior will be defined by guest filesystem content, if ip of 
ifconfig utility is found there or not.

> > ---
> > 
> >  src/lxc/lxc_container.c | 19 ++++++++++++++++++-
> >  1 file changed, 18 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> > index 8aba3ba..4aeb19c 100644
> > --- a/src/lxc/lxc_container.c
> > +++ b/src/lxc/lxc_container.c
> > @@ -496,7 +496,7 @@ static int
> > lxcContainerRenameAndEnableInterfaces(virDomainDefPtr vmDef, char **veths)
> > 
> >  {
> >  
> >      int rc = 0;
> > 
> > -    size_t i;
> > +    size_t i, j;
> > 
> >      char *newname = NULL;
> >      virDomainNetDefPtr netDef;
> >      bool privNet = vmDef->features[VIR_DOMAIN_FEATURE_PRIVNET] ==
> > 
> > @@ -517,6 +517,23 @@ static int
> > lxcContainerRenameAndEnableInterfaces(virDomainDefPtr vmDef, if (rc < 0)
> > 
> >              goto error_out;
> > 
> > +        for (j = 0; j < netDef->nips; j++) {
> > +            virDomainNetIpDefPtr ip = netDef->ips[j];
> > +            unsigned int prefix = (ip->prefix > 0) ? ip->prefix : 24;
> 
> Why is default prefix hardcoded here? I think we should  add a constant for
> it in some common header file.
> 
> > +            char *ipStr = virSocketAddrFormat(&ip->address);
> > +
> > +            VIR_DEBUG("Adding IP address '%s/%u' to '%s'",
> > +                      ipStr, ip->prefix, newname);
> > +            if (virNetDevSetIPv4Address(newname, &ip->address, prefix) <
> > 0) { +                virReportError(VIR_ERR_SYSTEM_ERROR,
> > +                               _("Failed to set IP address '%s' on %s"),
> > +                               ipStr, newname);
> > +                VIR_FREE(ipStr);
> > +                goto error_out;
> > +            }
> > +            VIR_FREE(ipStr);
> > +        }
> > +
> > 
> >          VIR_DEBUG("Enabling %s", newname);
> >          rc = virNetDevSetOnline(newname, true);
> >          if (rc < 0)

-- 
Dmitry Guryanov




More information about the libvir-list mailing list