[Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-06-04 Thread zwu . kernel
From: Zhi Yong Wu wu...@linux.vnet.ibm.com

Reviewed-by:   Jan Kiszka  jan.kis...@siemens.com
Signed-off-by: Zhi Yong Wu wu...@linux.vnet.ibm.com
---
 net.c |   14 +-
 net.h |1 +
 net/hub.c |   23 +--
 net/hub.h |1 +
 4 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/net.c b/net.c
index 61dc28d..6cedc7a 100644
--- a/net.c
+++ b/net.c
@@ -1068,7 +1068,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, 
QObject **ret_data)
 return 0;
 }
 
-static void print_net_client(Monitor *mon, NetClientState *vc)
+void print_net_client(Monitor *mon, NetClientState *vc)
 {
 monitor_printf(mon, %s: type=%s,%s\n, vc-name,
net_client_types[vc-info-type].type, vc-info_str);
@@ -1079,20 +1079,24 @@ void do_info_network(Monitor *mon)
 NetClientState *nc, *peer;
 net_client_type type;
 
-monitor_printf(mon, Devices not on any VLAN:\n);
+net_hub_info(mon);
+
 QTAILQ_FOREACH(nc, net_clients, next) {
 peer = nc-peer;
 type = nc-info-type;
+
+if (net_hub_port_peer_nc(nc)) {
+continue;
+}
+
 if (!peer || type == NET_CLIENT_TYPE_NIC) {
-monitor_printf(mon,   );
 print_net_client(mon, nc);
 } /* else it's a netdev connected to a NIC, printed with the NIC */
 if (peer  type == NET_CLIENT_TYPE_NIC) {
-monitor_printf(mon,\\ );
+monitor_printf(mon,  \\ );
 print_net_client(mon, peer);
 }
 }
-net_hub_info(mon);
 }
 
 void qmp_set_link(const char *name, bool up, Error **errp)
diff --git a/net.h b/net.h
index 250669a..0692283 100644
--- a/net.h
+++ b/net.h
@@ -112,6 +112,7 @@ void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
 const char *default_model);
 
+void print_net_client(Monitor *mon, NetClientState *vc);
 void do_info_network(Monitor *mon);
 
 /* NIC info */
diff --git a/net/hub.c b/net/hub.c
index 122de69..230d86a 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 }
 
 /**
+ * Determine if one nc peers with one hub port
+ */
+bool net_hub_port_peer_nc(NetClientState *nc)
+{
+NetHub *hub;
+NetHubPort *port;
+
+QLIST_FOREACH(hub, hubs, next) {
+QLIST_FOREACH(port, hub-ports, next) {
+if (nc == port-nc.peer) {
+return true;
+}
+}
+}
+
+return false;
+}
+
+/**
  * Print hub configuration
  */
 void net_hub_info(Monitor *mon)
@@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
 QLIST_FOREACH(hub, hubs, next) {
 monitor_printf(mon, hub %u\n, hub-id);
 QLIST_FOREACH(port, hub-ports, next) {
-monitor_printf(mon, port %u peer %s\n, port-id,
-   port-nc.peer ? port-nc.peer-name : none);
+monitor_printf(mon,  \\ );
+print_net_client(mon, port-nc.peer);
 }
 }
 }
diff --git a/net/hub.h b/net/hub.h
index ff5024a..550189b 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -23,5 +23,6 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 void net_hub_info(Monitor *mon);
 int net_hub_id_for_client(NetClientState *nc, unsigned int *id);
 void net_hub_check_clients(void);
+bool net_hub_port_peer_nc(NetClientState *nc);
 
 #endif /* NET_HUB_H */
-- 
1.7.6




[Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread zwu . kernel
From: Zhi Yong Wu wu...@linux.vnet.ibm.com

Reviewed-by:   Jan Kiszka  jan.kis...@siemens.com
Signed-off-by: Zhi Yong Wu wu...@linux.vnet.ibm.com
---
 net.c |   18 ++
 net.h |   12 
 net/hub.c |   23 +--
 net/hub.h |1 +
 4 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/net.c b/net.c
index 61dc28d..ae0deec 100644
--- a/net.c
+++ b/net.c
@@ -887,6 +887,12 @@ static const struct {
 },
 },
 #endif /* CONFIG_NET_BRIDGE */
+[NET_CLIENT_TYPE_HUB] = {
+.type = hubport,
+.desc = {
+{ /* end of list */ }
+},
+},
 };
 
 int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
@@ -1068,7 +1074,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, 
QObject **ret_data)
 return 0;
 }
 
-static void print_net_client(Monitor *mon, NetClientState *vc)
+void print_net_client(Monitor *mon, NetClientState *vc)
 {
 monitor_printf(mon, %s: type=%s,%s\n, vc-name,
net_client_types[vc-info-type].type, vc-info_str);
@@ -1079,12 +1085,17 @@ void do_info_network(Monitor *mon)
 NetClientState *nc, *peer;
 net_client_type type;
 
-monitor_printf(mon, Devices not on any VLAN:\n);
+net_hub_info(mon);
+
 QTAILQ_FOREACH(nc, net_clients, next) {
 peer = nc-peer;
 type = nc-info-type;
+
+if (net_hub_port_peer_nc(nc)) {
+continue;
+}
+
 if (!peer || type == NET_CLIENT_TYPE_NIC) {
-monitor_printf(mon,   );
 print_net_client(mon, nc);
 } /* else it's a netdev connected to a NIC, printed with the NIC */
 if (peer  type == NET_CLIENT_TYPE_NIC) {
@@ -1092,7 +1103,6 @@ void do_info_network(Monitor *mon)
 print_net_client(mon, peer);
 }
 }
-net_hub_info(mon);
 }
 
 void qmp_set_link(const char *name, bool up, Error **errp)
diff --git a/net.h b/net.h
index 250669a..08306a4 100644
--- a/net.h
+++ b/net.h
@@ -112,6 +112,18 @@ void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
 const char *default_model);
 
+ssize_t qemu_deliver_packet(NetClientState *sender,
+unsigned flags,
+const uint8_t *data,
+size_t size,
+void *opaque);
+ssize_t qemu_deliver_packet_iov(NetClientState *sender,
+unsigned flags,
+const struct iovec *iov,
+int iovcnt,
+void *opaque);
+
+void print_net_client(Monitor *mon, NetClientState *vc);
 void do_info_network(Monitor *mon);
 
 /* NIC info */
diff --git a/net/hub.c b/net/hub.c
index 122de69..8c77d03 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 }
 
 /**
+ * Determine if one nc peers with one hub port
+ */
+bool net_hub_port_peer_nc(NetClientState *nc)
+{
+NetHub *hub;
+NetHubPort *port;
+
+QLIST_FOREACH(hub, hubs, next) {
+QLIST_FOREACH(port, hub-ports, next) {
+if (nc == port-nc.peer) {
+return true;
+}
+}
+}
+
+return false;
+}
+
+/**
  * Print hub configuration
  */
 void net_hub_info(Monitor *mon)
@@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
 QLIST_FOREACH(hub, hubs, next) {
 monitor_printf(mon, hub %u\n, hub-id);
 QLIST_FOREACH(port, hub-ports, next) {
-monitor_printf(mon, port %u peer %s\n, port-id,
-   port-nc.peer ? port-nc.peer-name : none);
+monitor_printf(mon,\\ );
+print_net_client(mon, port-nc.peer);
 }
 }
 }
diff --git a/net/hub.h b/net/hub.h
index ff5024a..550189b 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -23,5 +23,6 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 void net_hub_info(Monitor *mon);
 int net_hub_id_for_client(NetClientState *nc, unsigned int *id);
 void net_hub_check_clients(void);
+bool net_hub_port_peer_nc(NetClientState *nc);
 
 #endif /* NET_HUB_H */
-- 
1.7.6




[Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread zwu . kernel
From: Zhi Yong Wu wu...@linux.vnet.ibm.com

Reviewed-by:   Jan Kiszka  jan.kis...@siemens.com
Signed-off-by: Zhi Yong Wu wu...@linux.vnet.ibm.com
---
 net.c |   18 ++
 net.h |1 +
 net/hub.c |   23 +--
 net/hub.h |1 +
 4 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/net.c b/net.c
index 61dc28d..ae0deec 100644
--- a/net.c
+++ b/net.c
@@ -887,6 +887,12 @@ static const struct {
 },
 },
 #endif /* CONFIG_NET_BRIDGE */
+[NET_CLIENT_TYPE_HUB] = {
+.type = hubport,
+.desc = {
+{ /* end of list */ }
+},
+},
 };
 
 int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
@@ -1068,7 +1074,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, 
QObject **ret_data)
 return 0;
 }
 
-static void print_net_client(Monitor *mon, NetClientState *vc)
+void print_net_client(Monitor *mon, NetClientState *vc)
 {
 monitor_printf(mon, %s: type=%s,%s\n, vc-name,
net_client_types[vc-info-type].type, vc-info_str);
@@ -1079,12 +1085,17 @@ void do_info_network(Monitor *mon)
 NetClientState *nc, *peer;
 net_client_type type;
 
-monitor_printf(mon, Devices not on any VLAN:\n);
+net_hub_info(mon);
+
 QTAILQ_FOREACH(nc, net_clients, next) {
 peer = nc-peer;
 type = nc-info-type;
+
+if (net_hub_port_peer_nc(nc)) {
+continue;
+}
+
 if (!peer || type == NET_CLIENT_TYPE_NIC) {
-monitor_printf(mon,   );
 print_net_client(mon, nc);
 } /* else it's a netdev connected to a NIC, printed with the NIC */
 if (peer  type == NET_CLIENT_TYPE_NIC) {
@@ -1092,7 +1103,6 @@ void do_info_network(Monitor *mon)
 print_net_client(mon, peer);
 }
 }
-net_hub_info(mon);
 }
 
 void qmp_set_link(const char *name, bool up, Error **errp)
diff --git a/net.h b/net.h
index 250669a..0692283 100644
--- a/net.h
+++ b/net.h
@@ -112,6 +112,7 @@ void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
 const char *default_model);
 
+void print_net_client(Monitor *mon, NetClientState *vc);
 void do_info_network(Monitor *mon);
 
 /* NIC info */
diff --git a/net/hub.c b/net/hub.c
index 122de69..8c77d03 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 }
 
 /**
+ * Determine if one nc peers with one hub port
+ */
+bool net_hub_port_peer_nc(NetClientState *nc)
+{
+NetHub *hub;
+NetHubPort *port;
+
+QLIST_FOREACH(hub, hubs, next) {
+QLIST_FOREACH(port, hub-ports, next) {
+if (nc == port-nc.peer) {
+return true;
+}
+}
+}
+
+return false;
+}
+
+/**
  * Print hub configuration
  */
 void net_hub_info(Monitor *mon)
@@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
 QLIST_FOREACH(hub, hubs, next) {
 monitor_printf(mon, hub %u\n, hub-id);
 QLIST_FOREACH(port, hub-ports, next) {
-monitor_printf(mon, port %u peer %s\n, port-id,
-   port-nc.peer ? port-nc.peer-name : none);
+monitor_printf(mon,\\ );
+print_net_client(mon, port-nc.peer);
 }
 }
 }
diff --git a/net/hub.h b/net/hub.h
index ff5024a..550189b 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -23,5 +23,6 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
hub_id,
 void net_hub_info(Monitor *mon);
 int net_hub_id_for_client(NetClientState *nc, unsigned int *id);
 void net_hub_check_clients(void);
+bool net_hub_port_peer_nc(NetClientState *nc);
 
 #endif /* NET_HUB_H */
-- 
1.7.6




Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Jan Kiszka
On 2012-05-25 11:02, zwu.ker...@gmail.com wrote:
 From: Zhi Yong Wu wu...@linux.vnet.ibm.com
 
 Reviewed-by:   Jan Kiszka  jan.kis...@siemens.com

Please don't put reviewed-by tags here before the reviewer had a chance
to look at the code.

 Signed-off-by: Zhi Yong Wu wu...@linux.vnet.ibm.com
 ---
  net.c |   18 ++
  net.h |   12 
  net/hub.c |   23 +--
  net/hub.h |1 +
  4 files changed, 48 insertions(+), 6 deletions(-)
 
 diff --git a/net.c b/net.c
 index 61dc28d..ae0deec 100644
 --- a/net.c
 +++ b/net.c
 @@ -887,6 +887,12 @@ static const struct {
  },
  },
  #endif /* CONFIG_NET_BRIDGE */
 +[NET_CLIENT_TYPE_HUB] = {
 +.type = hubport,
 +.desc = {
 +{ /* end of list */ }
 +},
 +},

This should be obsolete now.

  };
  
  int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
 @@ -1068,7 +1074,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, 
 QObject **ret_data)
  return 0;
  }
  
 -static void print_net_client(Monitor *mon, NetClientState *vc)
 +void print_net_client(Monitor *mon, NetClientState *vc)
  {
  monitor_printf(mon, %s: type=%s,%s\n, vc-name,
 net_client_types[vc-info-type].type, vc-info_str);
 @@ -1079,12 +1085,17 @@ void do_info_network(Monitor *mon)
  NetClientState *nc, *peer;
  net_client_type type;
  
 -monitor_printf(mon, Devices not on any VLAN:\n);
 +net_hub_info(mon);
 +
  QTAILQ_FOREACH(nc, net_clients, next) {
  peer = nc-peer;
  type = nc-info-type;
 +
 +if (net_hub_port_peer_nc(nc)) {
 +continue;
 +}
 +
  if (!peer || type == NET_CLIENT_TYPE_NIC) {
 -monitor_printf(mon,   );
  print_net_client(mon, nc);
  } /* else it's a netdev connected to a NIC, printed with the NIC */
  if (peer  type == NET_CLIENT_TYPE_NIC) {
 @@ -1092,7 +1103,6 @@ void do_info_network(Monitor *mon)
  print_net_client(mon, peer);
  }
  }
 -net_hub_info(mon);

Why introduce a different hub output format at all? Do it in the final
right from the start.

  }
  
  void qmp_set_link(const char *name, bool up, Error **errp)
 diff --git a/net.h b/net.h
 index 250669a..08306a4 100644
 --- a/net.h
 +++ b/net.h
 @@ -112,6 +112,18 @@ void qemu_check_nic_model(NICInfo *nd, const char 
 *model);
  int qemu_find_nic_model(NICInfo *nd, const char * const *models,
  const char *default_model);
  
 +ssize_t qemu_deliver_packet(NetClientState *sender,
 +unsigned flags,
 +const uint8_t *data,
 +size_t size,
 +void *opaque);
 +ssize_t qemu_deliver_packet_iov(NetClientState *sender,
 +unsigned flags,
 +const struct iovec *iov,
 +int iovcnt,
 +void *opaque);
 +

I bet those two prototypes are required by some other patch (or are even
redundant).

 +void print_net_client(Monitor *mon, NetClientState *vc);
  void do_info_network(Monitor *mon);
  
  /* NIC info */
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
 hub_id,
  }
  
  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +NetHub *hub;
 +NetHubPort *port;
 +
 +QLIST_FOREACH(hub, hubs, next) {
 +QLIST_FOREACH(port, hub-ports, next) {
 +if (nc == port-nc.peer) {
 +return true;
 +}
 +}
 +}
 +
 +return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
  QLIST_FOREACH(hub, hubs, next) {
  monitor_printf(mon, hub %u\n, hub-id);
  QLIST_FOREACH(port, hub-ports, next) {
 -monitor_printf(mon, port %u peer %s\n, port-id,
 -   port-nc.peer ? port-nc.peer-name : none);
 +monitor_printf(mon,\\ );

Two space too much of indention (you remove them above for the existing
peer \ peer outputs).

 +print_net_client(mon, port-nc.peer);
  }
  }
  }
 diff --git a/net/hub.h b/net/hub.h
 index ff5024a..550189b 100644
 --- a/net/hub.h
 +++ b/net/hub.h
 @@ -23,5 +23,6 @@ NetClientState *net_hub_find_client_by_name(unsigned int 
 hub_id,
  void net_hub_info(Monitor *mon);
  int net_hub_id_for_client(NetClientState *nc, unsigned int *id);
  void net_hub_check_clients(void);
 +bool net_hub_port_peer_nc(NetClientState *nc);
  
  #endif /* NET_HUB_H */

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Zhi Yong Wu
On Fri, May 25, 2012 at 10:17 PM, Jan Kiszka jan.kis...@siemens.com wrote:
 On 2012-05-25 11:02, zwu.ker...@gmail.com wrote:
 From: Zhi Yong Wu wu...@linux.vnet.ibm.com

 Reviewed-by:   Jan Kiszka  jan.kis...@siemens.com

 Please don't put reviewed-by tags here before the reviewer had a chance
 to look at the code.

 Signed-off-by: Zhi Yong Wu wu...@linux.vnet.ibm.com
 ---
  net.c     |   18 ++
  net.h     |   12 
  net/hub.c |   23 +--
  net/hub.h |    1 +
  4 files changed, 48 insertions(+), 6 deletions(-)

 diff --git a/net.c b/net.c
 index 61dc28d..ae0deec 100644
 --- a/net.c
 +++ b/net.c
 @@ -887,6 +887,12 @@ static const struct {
          },
      },
  #endif /* CONFIG_NET_BRIDGE */
 +    [NET_CLIENT_TYPE_HUB] = {
 +        .type = hubport,
 +        .desc = {
 +            { /* end of list */ }
 +        },
 +    },

 This should be obsolete now.

  };

  int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
 @@ -1068,7 +1074,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, 
 QObject **ret_data)
      return 0;
  }

 -static void print_net_client(Monitor *mon, NetClientState *vc)
 +void print_net_client(Monitor *mon, NetClientState *vc)
  {
      monitor_printf(mon, %s: type=%s,%s\n, vc-name,
                     net_client_types[vc-info-type].type, vc-info_str);
 @@ -1079,12 +1085,17 @@ void do_info_network(Monitor *mon)
      NetClientState *nc, *peer;
      net_client_type type;

 -    monitor_printf(mon, Devices not on any VLAN:\n);
 +    net_hub_info(mon);
 +
      QTAILQ_FOREACH(nc, net_clients, next) {
          peer = nc-peer;
          type = nc-info-type;
 +
 +        if (net_hub_port_peer_nc(nc)) {
 +            continue;
 +        }
 +
          if (!peer || type == NET_CLIENT_TYPE_NIC) {
 -            monitor_printf(mon,   );
              print_net_client(mon, nc);
          } /* else it's a netdev connected to a NIC, printed with the NIC */
          if (peer  type == NET_CLIENT_TYPE_NIC) {
 @@ -1092,7 +1103,6 @@ void do_info_network(Monitor *mon)
              print_net_client(mon, peer);
          }
      }
 -    net_hub_info(mon);

 Why introduce a different hub output format at all? Do it in the final
 right from the start.

  }

  void qmp_set_link(const char *name, bool up, Error **errp)
 diff --git a/net.h b/net.h
 index 250669a..08306a4 100644
 --- a/net.h
 +++ b/net.h
 @@ -112,6 +112,18 @@ void qemu_check_nic_model(NICInfo *nd, const char 
 *model);
  int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                          const char *default_model);

 +ssize_t qemu_deliver_packet(NetClientState *sender,
 +                            unsigned flags,
 +                            const uint8_t *data,
 +                            size_t size,
 +                            void *opaque);
 +ssize_t qemu_deliver_packet_iov(NetClientState *sender,
 +                            unsigned flags,
 +                            const struct iovec *iov,
 +                            int iovcnt,
 +                            void *opaque);
 +

 I bet those two prototypes are required by some other patch (or are even
 redundant).
I have noticed this, and split out them to other patch.

 +void print_net_client(Monitor *mon, NetClientState *vc);
  void do_info_network(Monitor *mon);

  /* NIC info */
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned 
 int hub_id,
  }

  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +    NetHub *hub;
 +    NetHubPort *port;
 +
 +    QLIST_FOREACH(hub, hubs, next) {
 +        QLIST_FOREACH(port, hub-ports, next) {
 +            if (nc == port-nc.peer) {
 +                return true;
 +            }
 +        }
 +    }
 +
 +    return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
      QLIST_FOREACH(hub, hubs, next) {
          monitor_printf(mon, hub %u\n, hub-id);
          QLIST_FOREACH(port, hub-ports, next) {
 -            monitor_printf(mon,     port %u peer %s\n, port-id,
 -                           port-nc.peer ? port-nc.peer-name : none);
 +            monitor_printf(mon,    \\ );
This will have the following layout:
(qemu) info network
hub 1
   \ dump.0: type=dump,dump to qemu-vlan1.pcap (len=65536)
   \ user.1: type=user,net=10.0.2.0,restrict=off
   \ virtio-net-pci.0: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:58
hub 0
   \ user.0: type=user,net=10.0.2.0,restrict=off
   \ e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:57
virtio-net-pci.1: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
   \ ur: type=tap,ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
^^^

 Two space too much of indention (you remove them above for the existing
It is three 

Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Jan Kiszka
On 2012-05-25 11:25, Zhi Yong Wu wrote:
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned 
 int hub_id,
  }

  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +NetHub *hub;
 +NetHubPort *port;
 +
 +QLIST_FOREACH(hub, hubs, next) {
 +QLIST_FOREACH(port, hub-ports, next) {
 +if (nc == port-nc.peer) {
 +return true;
 +}
 +}
 +}
 +
 +return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
  QLIST_FOREACH(hub, hubs, next) {
  monitor_printf(mon, hub %u\n, hub-id);
  QLIST_FOREACH(port, hub-ports, next) {
 -monitor_printf(mon, port %u peer %s\n, port-id,
 -   port-nc.peer ? port-nc.peer-name : none);
 +monitor_printf(mon,\\ );
 This will have the following layout:
 (qemu) info network
 hub 1
\ dump.0: type=dump,dump to qemu-vlan1.pcap (len=65536)
\ user.1: type=user,net=10.0.2.0,restrict=off
\ virtio-net-pci.0: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:58
 hub 0
\ user.0: type=user,net=10.0.2.0,restrict=off
\ e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:57
 virtio-net-pci.1: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
\ ur: 
 type=tap,ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
 ^^^

 Two space too much of indention (you remove them above for the existing
 It is three space, not two.
 peer \ peer outputs).
 Do you mean that it should be like monitor_printf(mon, \\ ); but
 this indention will not match with those peers in hub case.

This line is for printing peers attached to a hub, isn't it? So it
should be exactly one space, like for the non-hub peers. You should see
it better than I when running the code.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Zhi Yong Wu
On Fri, May 25, 2012 at 10:40 PM, Jan Kiszka jan.kis...@siemens.com wrote:
 On 2012-05-25 11:25, Zhi Yong Wu wrote:
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned 
 int hub_id,
  }

  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +    NetHub *hub;
 +    NetHubPort *port;
 +
 +    QLIST_FOREACH(hub, hubs, next) {
 +        QLIST_FOREACH(port, hub-ports, next) {
 +            if (nc == port-nc.peer) {
 +                return true;
 +            }
 +        }
 +    }
 +
 +    return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
      QLIST_FOREACH(hub, hubs, next) {
          monitor_printf(mon, hub %u\n, hub-id);
          QLIST_FOREACH(port, hub-ports, next) {
 -            monitor_printf(mon,     port %u peer %s\n, port-id,
 -                           port-nc.peer ? port-nc.peer-name : 
 none);
 +            monitor_printf(mon,    \\ );
 This will have the following layout:
 (qemu) info network
 hub 1
    \ dump.0: type=dump,dump to qemu-vlan1.pcap (len=65536)
    \ user.1: type=user,net=10.0.2.0,restrict=off
    \ virtio-net-pci.0: 
 type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:58
 hub 0
    \ user.0: type=user,net=10.0.2.0,restrict=off
    \ e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:57
 virtio-net-pci.1: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
    \ ur: 
 type=tap,ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
 ^^^

 Two space too much of indention (you remove them above for the existing
 It is three space, not two.
 peer \ peer outputs).
 Do you mean that it should be like monitor_printf(mon, \\ ); but
 this indention will not match with those peers in hub case.

 This line is for printing peers attached to a hub, isn't it? So it
Yeah, but it is three spaces, not one. You can check the code in
do_info_network. For non-hub peers, it is also three spaces.
 should be exactly one space, like for the non-hub peers. You should see
 it better than I when running the code.
That is the result i got when i was running the code.

 Jan

 --
 Siemens AG, Corporate Technology, CT T DE IT 1
 Corporate Competence Center Embedded Linux



-- 
Regards,

Zhi Yong Wu



Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Jan Kiszka
On 2012-05-25 11:44, Zhi Yong Wu wrote:
 On Fri, May 25, 2012 at 10:40 PM, Jan Kiszka jan.kis...@siemens.com wrote:
 On 2012-05-25 11:25, Zhi Yong Wu wrote:
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState *net_hub_find_client_by_name(unsigned 
 int hub_id,
  }

  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +NetHub *hub;
 +NetHubPort *port;
 +
 +QLIST_FOREACH(hub, hubs, next) {
 +QLIST_FOREACH(port, hub-ports, next) {
 +if (nc == port-nc.peer) {
 +return true;
 +}
 +}
 +}
 +
 +return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
  QLIST_FOREACH(hub, hubs, next) {
  monitor_printf(mon, hub %u\n, hub-id);
  QLIST_FOREACH(port, hub-ports, next) {
 -monitor_printf(mon, port %u peer %s\n, port-id,
 -   port-nc.peer ? port-nc.peer-name : 
 none);
 +monitor_printf(mon,\\ );
 This will have the following layout:
 (qemu) info network
 hub 1
\ dump.0: type=dump,dump to qemu-vlan1.pcap (len=65536)
\ user.1: type=user,net=10.0.2.0,restrict=off
\ virtio-net-pci.0: 
 type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:58
 hub 0
\ user.0: type=user,net=10.0.2.0,restrict=off
\ e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:57
 virtio-net-pci.1: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
\ ur: 
 type=tap,ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
 ^^^

 Two space too much of indention (you remove them above for the existing
 It is three space, not two.
 peer \ peer outputs).
 Do you mean that it should be like monitor_printf(mon, \\ ); but
 this indention will not match with those peers in hub case.

 This line is for printing peers attached to a hub, isn't it? So it
 Yeah, but it is three spaces, not one. You can check the code in
 do_info_network. For non-hub peers, it is also three spaces.

Then non-hub needs adjustment to a single space as well. Just remove the
two spaces I added to indent the categories (VLAN vs. non-VLAN listing)
for _both_ peer lines.

(I love nit-picking discussions :) )

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



Re: [Qemu-devel] [PATCH v4 13/16] net: Make info network output more readable info

2012-05-25 Thread Zhi Yong Wu
On Fri, May 25, 2012 at 10:50 PM, Jan Kiszka jan.kis...@siemens.com wrote:
 On 2012-05-25 11:44, Zhi Yong Wu wrote:
 On Fri, May 25, 2012 at 10:40 PM, Jan Kiszka jan.kis...@siemens.com wrote:
 On 2012-05-25 11:25, Zhi Yong Wu wrote:
 diff --git a/net/hub.c b/net/hub.c
 index 122de69..8c77d03 100644
 --- a/net/hub.c
 +++ b/net/hub.c
 @@ -184,6 +184,25 @@ NetClientState 
 *net_hub_find_client_by_name(unsigned int hub_id,
  }

  /**
 + * Determine if one nc peers with one hub port
 + */
 +bool net_hub_port_peer_nc(NetClientState *nc)
 +{
 +    NetHub *hub;
 +    NetHubPort *port;
 +
 +    QLIST_FOREACH(hub, hubs, next) {
 +        QLIST_FOREACH(port, hub-ports, next) {
 +            if (nc == port-nc.peer) {
 +                return true;
 +            }
 +        }
 +    }
 +
 +    return false;
 +}
 +
 +/**
   * Print hub configuration
   */
  void net_hub_info(Monitor *mon)
 @@ -194,8 +213,8 @@ void net_hub_info(Monitor *mon)
      QLIST_FOREACH(hub, hubs, next) {
          monitor_printf(mon, hub %u\n, hub-id);
          QLIST_FOREACH(port, hub-ports, next) {
 -            monitor_printf(mon,     port %u peer %s\n, port-id,
 -                           port-nc.peer ? port-nc.peer-name : 
 none);
 +            monitor_printf(mon,    \\ );
 This will have the following layout:
 (qemu) info network
 hub 1
    \ dump.0: type=dump,dump to qemu-vlan1.pcap (len=65536)
    \ user.1: type=user,net=10.0.2.0,restrict=off
    \ virtio-net-pci.0: 
 type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:58
 hub 0
    \ user.0: type=user,net=10.0.2.0,restrict=off
    \ e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:57
 virtio-net-pci.1: type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
    \ ur: 
 type=tap,ifname=tap0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
 ^^^

 Two space too much of indention (you remove them above for the existing
 It is three space, not two.
 peer \ peer outputs).
 Do you mean that it should be like monitor_printf(mon, \\ ); but
 this indention will not match with those peers in hub case.

 This line is for printing peers attached to a hub, isn't it? So it
 Yeah, but it is three spaces, not one. You can check the code in
 do_info_network. For non-hub peers, it is also three spaces.

 Then non-hub needs adjustment to a single space as well. Just remove the
 two spaces I added to indent the categories (VLAN vs. non-VLAN listing)
OK, done
 for _both_ peer lines.

 (I love nit-picking discussions :) )
No matter. :)

 Jan

 --
 Siemens AG, Corporate Technology, CT T DE IT 1
 Corporate Competence Center Embedded Linux



-- 
Regards,

Zhi Yong Wu