networkd: expose DHCP server pool size and offset via DBus (#41137)

This commit is contained in:
Daan De Meyer
2026-04-22 15:41:43 +02:00
committed by GitHub
3 changed files with 74 additions and 3 deletions
+42
View File
@@ -74,6 +74,46 @@ static int property_get_leases(
return sd_bus_message_close_container(reply);
}
static int property_get_pool_size(
sd_bus *bus,
const char *path,
const char *interface,
const char *property,
sd_bus_message *reply,
void *userdata,
sd_bus_error *error) {
Link *l = ASSERT_PTR(userdata);
sd_dhcp_server *s;
uint32_t v;
assert(reply);
s = l->dhcp_server;
v = s && !sd_dhcp_server_is_in_relay_mode(s) ? s->pool_size : UINT32_MAX;
return sd_bus_message_append_basic(reply, 'u', &v);
}
static int property_get_pool_offset(
sd_bus *bus,
const char *path,
const char *interface,
const char *property,
sd_bus_message *reply,
void *userdata,
sd_bus_error *error) {
Link *l = ASSERT_PTR(userdata);
sd_dhcp_server *s;
uint32_t v;
assert(reply);
s = l->dhcp_server;
v = s && !sd_dhcp_server_is_in_relay_mode(s) ? s->pool_offset : UINT32_MAX;
return sd_bus_message_append_basic(reply, 'u', &v);
}
static int dhcp_server_emit_changed_strv(Link *link, char **properties) {
_cleanup_free_ char *path = NULL;
@@ -104,6 +144,8 @@ static const sd_bus_vtable dhcp_server_vtable[] = {
SD_BUS_VTABLE_START(0),
SD_BUS_PROPERTY("Leases", "a(uayayayayt)", property_get_leases, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("PoolSize", "u", property_get_pool_size, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PoolOffset", "u", property_get_pool_offset, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_VTABLE_END
};