[libvirt] [PATCH 2/2] netdev: Use the correct pointer type for virSocketAddrFormat()

Roman Bogorodskiy bogorodskiy at gmail.com
Fri Apr 8 09:44:15 UTC 2016


  Andrea Bolognani wrote:

> virSocketAddrFormat() wants a single pointer, not a double pointer.
> 
> Fixes the following compilation error on FreeBSD:
> 
>   util/virnetdev.c:1448:72: error: incompatible pointer types passing
>    'virSocketAddr **' to parameter of type 'const virSocketAddr *';
>    remove & [-Werror,-Wincompatible-pointer-types]
>       if (VIR_SOCKET_ADDR_VALID(peer) && !(peerstr = virSocketAddrFormat(&peer)))
>                                                                          ^~~~~
>   ./util/virsocketaddr.h:92:48: note: passing argument to parameter 'addr' here
>   char *virSocketAddrFormat(const virSocketAddr *addr);
>                                                  ^
> ---
>  src/util/virnetdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index 6e32ebb..712c3bc 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -1445,7 +1445,7 @@ int virNetDevSetIPAddress(const char *ifname,
>      if (!(addrstr = virSocketAddrFormat(addr)))
>          goto cleanup;
>  
> -    if (VIR_SOCKET_ADDR_VALID(peer) && !(peerstr = virSocketAddrFormat(&peer)))
> +    if (VIR_SOCKET_ADDR_VALID(peer) && !(peerstr = virSocketAddrFormat(peer)))
>          goto cleanup;
>  
>      /* format up a broadcast address if this is IPv4 */

ACK (having the same one in my queue :-) ).

On a related note, there's one more issue in this function related to
the peer address support addition. It contains a code like this:

1466     if (peerstr)
1467         virCommandAddArgList(cmd, "pointopoint", peerstr, NULL);

This should work on Linux, but FreeBSD's ifconfig has no support for the
"pointopoint" keyword, the syntax is just "ifconfig $if $addr
$peer_addr". I'll add a fix for that a little later as soon as I figure
out how to give it a real test. Unfortunately, I see no easy way to
detect presence of this keyword in ifconfig, so I guess it's going to be
one more "#ifdef __linux__" knob.

PS Also, appears that a command like this:

ifconfig tun0 inet 192.168.77.0/24 192.168.77.12 broadcast 192.168.77.255

Actually sets peer address to 192.168.77.255. So need to figure out if
we need to set broadcast if have peer address.

Roman Bogorodskiy




More information about the libvir-list mailing list