[libvirt] [PATCHv4 4/6] Add a function virDomainNetFind

Osier Yang jyang at redhat.com
Thu Dec 29 10:12:37 UTC 2011


On 2011年12月29日 15:33, Hu Tao wrote:
> Add a function virDomainNetFind to find a domain's net def.
> ---
>   src/conf/domain_conf.c   |   39 +++++++++++++++++++++++++++++++++++++++
>   src/conf/domain_conf.h   |    3 +++
>   src/libvirt_private.syms |    1 +
>   3 files changed, 43 insertions(+), 0 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 2897b4a..7fa4adb 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -13726,3 +13726,42 @@ virDomainGraphicsListenSetNetwork(virDomainGraphicsDefPtr def,
> 
>       return 0;
>   }
> +
> +/**
> + * virDomainNetFind:
> + * @def: domain's def
> + * @device: could be the interface name or MAC address
> + *
> + * Finds a domain's net def, given the interface name or MAC address
> + *
> + * Returns a pointer to the net def or NULL if not found.
> + */
> +virDomainNetDefPtr
> +virDomainNetFind(virDomainDefPtr def, const char *device)
> +{
> +    bool isMac = false;
> +    virDomainNetDefPtr net = NULL;
> +    unsigned char mac[VIR_MAC_BUFLEN];
> +    int i;
> +
> +    if (virParseMacAddr(device, mac) == 0)
> +        isMac = true;
> +
> +    if (isMac) {
> +        for (i = 0; i<  def->nnets; i++) {
> +            if (memcmp(mac, def->nets[i]->mac, VIR_MAC_BUFLEN) == 0) {
> +                net = def->nets[i];
> +                break;
> +            }
> +        }
> +    } else { /* ifname */
> +        for (i = 0; i<  def->nnets; i++) {
> +            if (STREQ(device, def->nets[i]->ifname)) {

Oh, I missed this, this can cause libvirtd to crash if
def->nets[i]->ifname is NULL.

s/STREQ/STREQ_NULLABLE/

No need to post v5, I will squash the change in when
pushing.

Regards,
Osier




More information about the libvir-list mailing list