summaryrefslogtreecommitdiff
path: root/lib/libifconfig
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2023-03-15 12:31:45 +0000
committerKristof Provost <kp@FreeBSD.org>2023-03-20 13:37:09 +0000
commit137818006de5bb0be0b6562a0d601977f85c6867 (patch)
tree2ae84bcb3d05cc2abe8948317fec3f798a4b2499 /lib/libifconfig
parent3afba490c1266200e9fd899f2494aa47f71c6095 (diff)
Diffstat (limited to 'lib/libifconfig')
-rw-r--r--lib/libifconfig/libifconfig.h2
-rw-r--r--lib/libifconfig/libifconfig_carp.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/libifconfig/libifconfig.h b/lib/libifconfig/libifconfig.h
index 64a61af0708c..861d2bc93f80 100644
--- a/lib/libifconfig/libifconfig.h
+++ b/lib/libifconfig/libifconfig.h
@@ -287,6 +287,8 @@ struct ifconfig_carp {
int32_t carpr_advbase;
int32_t carpr_advskew;
uint8_t carpr_key[CARP_KEY_LEN];
+ struct in_addr carpr_addr;
+ struct in6_addr carpr_addr6;
};
int ifconfig_carp_get_vhid(ifconfig_handle_t *h, const char *name,
diff --git a/lib/libifconfig/libifconfig_carp.c b/lib/libifconfig/libifconfig_carp.c
index ffc497590aaa..5729362ffef9 100644
--- a/lib/libifconfig/libifconfig_carp.c
+++ b/lib/libifconfig/libifconfig_carp.c
@@ -39,6 +39,7 @@
#include <netlink/netlink_generic.h>
#include <netlink/netlink_snl.h>
#include <netlink/netlink_snl_generic.h>
+#include <netlink/netlink_snl_route.h>
#include <string.h>
#include <strings.h>
@@ -55,6 +56,8 @@ static struct snl_attr_parser ap_carp_get[] = {
{ .type = CARP_NL_ADVBASE, .off = _OUT(carpr_advbase), .cb = snl_attr_get_int32 },
{ .type = CARP_NL_ADVSKEW, .off = _OUT(carpr_advskew), .cb = snl_attr_get_int32 },
{ .type = CARP_NL_KEY, .off = _OUT(carpr_key), .cb = snl_attr_get_string },
+ { .type = CARP_NL_ADDR, .off = _OUT(carpr_addr), .cb = snl_attr_get_in_addr },
+ { .type = CARP_NL_ADDR6, .off = _OUT(carpr_addr6), .cb = snl_attr_get_in6_addr },
};
#undef _OUT
@@ -181,6 +184,10 @@ ifconfig_carp_set_info(ifconfig_handle_t *h, const char *name,
snl_add_msg_attr_s32(&nw, CARP_NL_ADVBASE, carpr->carpr_advbase);
snl_add_msg_attr_s32(&nw, CARP_NL_ADVSKEW, carpr->carpr_advskew);
snl_add_msg_attr_u32(&nw, CARP_NL_IFINDEX, ifindex);
+ snl_add_msg_attr(&nw, CARP_NL_ADDR, sizeof(carpr->carpr_addr),
+ &carpr->carpr_addr);
+ snl_add_msg_attr(&nw, CARP_NL_ADDR6, sizeof(carpr->carpr_addr6),
+ &carpr->carpr_addr6);
hdr = snl_finalize_msg(&nw);
if (hdr == NULL) {