qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/2] net: Dump client type 'info network'


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v2 2/2] net: Dump client type 'info network'
Date: Mon, 23 May 2011 17:11:50 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Jan Kiszka <address@hidden> writes:

> On 2011-05-23 15:14, Markus Armbruster wrote:
>> Jan Kiszka <address@hidden> writes:
>> 
>>> On 2011-05-23 11:28, Markus Armbruster wrote:
>>>> Jan Kiszka <address@hidden> writes:
>>>>
>>>>> Include the client type name into the output of 'info network'. The
>>>>> result looks like this:
>>>>>
>>>>> (qemu) info network
>>>>> VLAN 0 devices:
>>>>>   rtl8139.0: type=nic,model=rtl8139,macaddr=52:54:00:12:34:57
>>>>> Devices not on any VLAN:
>>>>>   virtio-net-pci.0: 
>>>>> type=nic,model=virtio-net-pci,macaddr=52:54:00:12:34:56
>>>>>    \ network1: type=tap,fd=5
>>>>>
>>>>> Signed-off-by: Jan Kiszka <address@hidden>
>>>>> ---
>>>>>
>>>>> Changes in v2:
>>>>>  - format type as "type=name"
>>>>>  - use standard type names
>>>>>  - factor out print_net_client
>>>>>
>>>>>  net.c |   25 ++++++++++++++++++++++---
>>>>>  1 files changed, 22 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/net.c b/net.c
>>>>> index 606ce70..6d06eb7 100644
>>>>> --- a/net.c
>>>>> +++ b/net.c
>>>>> @@ -1221,6 +1221,22 @@ int do_netdev_del(Monitor *mon, const QDict 
>>>>> *qdict, QObject **ret_data)
>>>>>      return 0;
>>>>>  }
>>>>>  
>>>>> +static void print_net_client(Monitor *mon, VLANClientState *vc)
>>>>> +{
>>>>> +    static const char *typename[] = {
>>>>> +        [NET_CLIENT_TYPE_NONE]   = "none",
>>>>> +        [NET_CLIENT_TYPE_NIC]    = "nic",
>>>>> +        [NET_CLIENT_TYPE_SLIRP]  = "user",
>>>>> +        [NET_CLIENT_TYPE_TAP]    = "tap",
>>>>> +        [NET_CLIENT_TYPE_SOCKET] = "socket",
>>>>> +        [NET_CLIENT_TYPE_VDE]    = "vde",
>>>>> +        [NET_CLIENT_TYPE_DUMP]   = "dump",
>>>>> +    };
>>>>> +
>>>>> +    monitor_printf(mon, "%s: type=%s,%s\n", vc->name,
>>>>> +                   typename[vc->info->type], vc->info_str);
>>>>> +}
>>>>
>>>> Any particular reason for using typename[vc->info->type] instead of
>>>> net_client[types[vc->info->type].type?
>>>
>>> Uncertainty about the sorting of that array. Is it supposed to be
>>> aligned to NET_CLIENT_TYPE_* definitions?
>> 
>> Hmm, you're right: it happens to be in order, but it's not explicit, so
>> you can't rely on it.  I'd be tempted to make the order explicit, but
>> it's your call.
>
> Checked again: net_client is terminated by a NULL entry. If we put
> certain entries on fixed slots, that would created premature list
> termination if some features is missing (e.g. VDE is configured out). So
> we actually need a separate name array.

Fixable; there's just one user.  But again: it's your call.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]