This is a missing counterpart for virSocketAddrSetIPv4Addr()
and is going to be needed later in the tests.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/libvirt_private.syms | 1 +
src/util/virsocketaddr.c | 15 +++++++++++++++
src/util/virsocketaddr.h | 1 +
3 files changed, 17 insertions(+)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 3ae18b8..640c6b3 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2165,6 +2165,7 @@ virSocketAddrParseIPv4;
virSocketAddrParseIPv6;
virSocketAddrPrefixToNetmask;
virSocketAddrSetIPv4Addr;
+virSocketAddrSetIPv6Addr;
virSocketAddrSetPort;
# util/virstats.h
diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
index 900aa5b..b44d12e 100644
--- a/src/util/virsocketaddr.c
+++ b/src/util/virsocketaddr.c
@@ -189,6 +189,21 @@ virSocketAddrSetIPv4Addr(virSocketAddrPtr addr, uint32_t val)
}
/*
+ * virSocketAddrSetIPv6Addr:
+ * @addr: the location to store the result
+ * @val: the 128bit integer in host byte order representing the IPv6 address
+ *
+ * Set the IPv6 address given an integer in host order. This function does not
+ * touch any previously set port.
+ */
+void virSocketAddrSetIPv6Addr(virSocketAddrPtr addr, uint32_t val[4])
+{
+ addr->data.stor.ss_family = AF_INET6;
+ memcpy(addr->data.inet6.sin6_addr.s6_addr, val, 4 * sizeof(*val));
+ addr->len = sizeof(struct sockaddr_in6);
+}
+
+/*
* virSocketAddrEqual:
* @s1: the location of the one IP address
* @s2: the location of the other IP address
diff --git a/src/util/virsocketaddr.h b/src/util/virsocketaddr.h
index 9e2680a..9a6e1ec 100644
--- a/src/util/virsocketaddr.h
+++ b/src/util/virsocketaddr.h
@@ -85,6 +85,7 @@ int virSocketAddrParseIPv6(virSocketAddrPtr addr,
const char *val);
void virSocketAddrSetIPv4Addr(virSocketAddrPtr s, uint32_t addr);
+void virSocketAddrSetIPv6Addr(virSocketAddrPtr s, uint32_t addr[4]);
char *virSocketAddrFormat(const virSocketAddr *addr);
char *virSocketAddrFormatFull(const virSocketAddr *addr,
--
2.4.10