
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