[libvirt] [PATCH] virsh: lookup interface by name or mac other than one by one

Daniel P. Berrange berrange at redhat.com
Tue May 14 11:59:21 UTC 2013


On Tue, May 14, 2013 at 07:54:48AM -0400, Laine Stump wrote:
> On 05/14/2013 05:15 AM, Osier Yang wrote:
> > On 14/05/13 16:35, Guannan Ren wrote:
> >> On host without interface eth1, 'virsh iface-dumpxml eth1'
> >> it reports
> >> error: Interface not found: couldn't find interface with MAC address
> >> 'eth1'
> >
> > It should be similar for other objects. E.g.
> >
> > vshCommandOptVolumeBy
> >
> > So, perhaps what we need is a general method to fix the problems.
> >
> >>
> >> after fix, it reports
> >> error: Interface not found: couldn't find interface named 'eth1'
> >> ---
> >>   tools/virsh-interface.c | 10 +++++++---
> >>   1 file changed, 7 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/tools/virsh-interface.c b/tools/virsh-interface.c
> >> index f75c572..47883ae 100644
> >> --- a/tools/virsh-interface.c
> >> +++ b/tools/virsh-interface.c
> >> @@ -46,6 +46,7 @@ vshCommandOptInterfaceBy(vshControl *ctl, const
> >> vshCmd *cmd,
> >>   {
> >>       virInterfacePtr iface = NULL;
> >>       const char *n = NULL;
> >> +    bool is_name = false;
> >>       virCheckFlags(VSH_BYNAME | VSH_BYMAC, NULL);
> >>         if (!optname)
> >> @@ -62,14 +63,17 @@ vshCommandOptInterfaceBy(vshControl *ctl, const
> >> vshCmd *cmd,
> >>       if (name)
> >>           *name = n;
> >>   +    if (!strchr(n, ':'))
> >> +        is_name = true;
> >
> > Is it guaranteed that a network interface name can't contain a colon?
> 
> No.
> 
> Although it's not a true interface (the kernel doesn't see it as a
> separate interface), an "alias" interface can be created to add another
> IP address to an interface. It would be named something like "eth0:1",
> "eth0:2", etc. Use of alias interfaces to put multiple IP addresses on a
> single physical interface has been deprecated in favor of simply using
> netlink to add an IP address to the interface, but it's still supported,
> and quite common.
> 
> I would say that we should either:
> 
> 1) remove "mac address"/"name" from the error message (or put in both)
> to make a single generic message.
> 
> or
> 
> 2) only check for a ":" after the lookupbyname has failed, and decide
> then whether to log the error message or retry with lookupbymac.

Or actually see if it parses as a mac address or not, rather than
just looking for a single ':'.

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