Re: [libvirt] [PATCH 2/2] virsh: extend domif-{get, set}link command to accept target name as a parameter

2012-01-20 Thread Eric Blake
On 01/19/2012 11:38 PM, Taku Izumi wrote:
 
 Other virsh domifXXX commands can accept target name 
 as a parameter to specify interface. From viewpoint of
 consistency, virsh domif-setlink command should accept
 target name as a parameter. This patch achieves this.
 
 Signd-off-by: Taku Izumi izumi.t...@jp.fujitsu.com
 ---
  tools/virsh.c   |   25 ++---
  tools/virsh.pod |3 ++-
  2 files changed, 20 insertions(+), 8 deletions(-)
 
 Index: libvirt/tools/virsh.c
 ===
 --- libvirt.orig/tools/virsh.c
 +++ libvirt/tools/virsh.c
 @@ -1344,8 +1344,11 @@ cmdDomIfSetLink (vshControl *ctl, const 
  virDomainPtr dom;
  const char *iface;
  const char *state;
 -const char *mac;
 +const char *value;
  const char *desc;
 +unsigned char macaddr[VIR_MAC_BUFLEN];
 +const char *element;
 +const char *attribute;

Same renaming exercise as in 1/2, and same ACK and push.

Actually, I merged these into one patch, since the subject line of both
patches implied that both functions were being modified at once.

-- 
Eric Blake   ebl...@redhat.com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH 2/2] virsh: extend domif-{get, set}link command to accept target name as a parameter

2012-01-19 Thread Taku Izumi

Other virsh domifXXX commands can accept target name 
as a parameter to specify interface. From viewpoint of
consistency, virsh domif-setlink command should accept
target name as a parameter. This patch achieves this.

Signd-off-by: Taku Izumi izumi.t...@jp.fujitsu.com
---
 tools/virsh.c   |   25 ++---
 tools/virsh.pod |3 ++-
 2 files changed, 20 insertions(+), 8 deletions(-)

Index: libvirt/tools/virsh.c
===
--- libvirt.orig/tools/virsh.c
+++ libvirt/tools/virsh.c
@@ -1344,8 +1344,11 @@ cmdDomIfSetLink (vshControl *ctl, const 
 virDomainPtr dom;
 const char *iface;
 const char *state;
-const char *mac;
+const char *value;
 const char *desc;
+unsigned char macaddr[VIR_MAC_BUFLEN];
+const char *element;
+const char *attribute;
 bool persistent;
 bool ret = false;
 unsigned int flags = 0;
@@ -1405,26 +1408,34 @@ cmdDomIfSetLink (vshControl *ctl, const 
 goto cleanup;
 }
 
+if (virParseMacAddr(iface, macaddr) == 0) {
+element = mac;
+attribute = address;
+} else {
+element = target;
+attribute = dev;
+}
+
 /* find interface with matching mac addr */
 for (i = 0; i  obj-nodesetval-nodeNr; i++) {
 cur = obj-nodesetval-nodeTab[i]-children;
 
 while (cur) {
 if (cur-type == XML_ELEMENT_NODE 
-xmlStrEqual(cur-name, BAD_CAST mac)) {
-mac = virXMLPropString(cur, address);
+xmlStrEqual(cur-name, BAD_CAST element)) {
+value = virXMLPropString(cur, attribute);
 
-if (STRCASEEQ(mac, iface)) {
-VIR_FREE(mac);
+if (STRCASEEQ(value, iface)) {
+VIR_FREE(value);
 goto hit;
 }
-VIR_FREE(mac);
+VIR_FREE(value);
 }
 cur = cur-next;
 }
 }
 
-vshError(ctl, _(interface with address '%s' not found), iface);
+vshError(ctl, _(interface (%s: %s) not found), element, iface);
 goto cleanup;
 
 hit:
Index: libvirt/tools/virsh.pod
===
--- libvirt.orig/tools/virsh.pod
+++ libvirt/tools/virsh.pod
@@ -469,11 +469,12 @@ BExplanation of fields (fields appear 
 
 Get network interface stats for a running domain.
 
-=item Bdomif-setlink Idomain Iinterface-MAC Istate I--persistent
+=item Bdomif-setlink Idomain Iinterface-device Istate I--persistent
 
 Modify link state of the domain's virtual interface. Possible values for
 state are up and down. If --persistent is specified, only the persistent
 configuration of the domain is modified.
+Iinterface-device can be the interface's target name or the MAC address.
 
 =item Bdomif-getlink Idomain Iinterface-device I--persistent
 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list