summaryrefslogtreecommitdiffstats
path: root/lib/pb-protocol/pb-protocol.c
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>2018-05-09 11:13:54 +1000
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>2018-07-10 14:00:08 +1000
commitbecf2b28d8b0aa561ac7e42db519071f8065d37f (patch)
tree0dfcc6ef5cbcf1a433ec2f116de119b1c5742f07 /lib/pb-protocol/pb-protocol.c
parent99a1f905f585480cca2c9a43ab18ed8e37365192 (diff)
downloadtalos-petitboot-becf2b28d8b0aa561ac7e42db519071f8065d37f.tar.gz
talos-petitboot-becf2b28d8b0aa561ac7e42db519071f8065d37f.zip
lib: Add support and helpers for IPv6 host addresses
Recognise IPv6 addresses and URLs, and allow an interface_info struct to have both an IPv4 and IPv6 address. The addr_scheme() helper returns the address family of a given address. Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'lib/pb-protocol/pb-protocol.c')
-rw-r--r--lib/pb-protocol/pb-protocol.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c
index 8e37348..41707da 100644
--- a/lib/pb-protocol/pb-protocol.c
+++ b/lib/pb-protocol/pb-protocol.c
@@ -253,7 +253,8 @@ int pb_protocol_system_info_len(const struct system_info *sysinfo)
len += 4 + if_info->hwaddr_size +
4 + optional_strlen(if_info->name) +
sizeof(if_info->link) +
- 4 + optional_strlen(if_info->address);
+ 4 + optional_strlen(if_info->address) +
+ 4 + optional_strlen(if_info->address_v6);
}
for (i = 0; i < sysinfo->n_blockdevs; i++) {
@@ -509,6 +510,7 @@ int pb_protocol_serialise_system_info(const struct system_info *sysinfo,
pos += sizeof(bool);
pos += pb_protocol_serialise_string(pos, if_info->address);
+ pos += pb_protocol_serialise_string(pos, if_info->address_v6);
}
*(uint32_t *)pos = __cpu_to_be32(sysinfo->n_blockdevs);
@@ -1046,6 +1048,8 @@ int pb_protocol_deserialise_system_info(struct system_info *sysinfo,
if (read_string(if_info, &pos, &len, &if_info->address))
goto out;
+ if (read_string(if_info, &pos, &len, &if_info->address_v6))
+ goto out;
sysinfo->interfaces[i] = if_info;
}
OpenPOWER on IntegriCloud