On 21/10/2015 17:43, Daniel P. Berrange wrote:
> +    }
> +    if (addr->has_ipv6 && addr->ipv6) {
> +        g_printerr("One\n");
> +        return PF_INET6;
> +    }
> +    if (addr->has_ipv4 && addr->ipv4) {
> +        g_printerr("Two\n");
> +        return PF_INET;
> +    }
> +    if (addr->has_ipv6 && !addr->ipv6) {
> +        g_printerr("Three\n");
> +        return PF_INET;
> +    }
> +    if (addr->has_ipv4 && !addr->ipv4) {
> +        g_printerr("Four\n");
> +        return PF_INET6;
> +    }
> +    g_printerr("Five %d %d %d %d\n",
> +               addr->has_ipv4, addr->ipv4,
> +               addr->has_ipv6, addr->ipv6);
> +    return PF_UNSPEC;
> +}
> +

Apart from the extra debugging output, I think you can merge as

    if ((addr->has_ipv6 && addr->ipv6) || (addr->has_ipv4 && !addr->ipv4)) {
        return PF_INET6;
    }
    if ((addr->has_ipv4 && addr->ipv4) || (addr->has_ipv6 && !addr->ipv6)) {
        return PF_INET;
    }
    return PF_UNSPEC;

where the order of the first two is important.

Paolo

Reply via email to