summaryrefslogtreecommitdiff
path: root/src/libhydra/plugins/attr/attr_provider.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libhydra/plugins/attr/attr_provider.c')
-rw-r--r--src/libhydra/plugins/attr/attr_provider.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/libhydra/plugins/attr/attr_provider.c b/src/libhydra/plugins/attr/attr_provider.c
index 329f317dd..1a2fa7f28 100644
--- a/src/libhydra/plugins/attr/attr_provider.c
+++ b/src/libhydra/plugins/attr/attr_provider.c
@@ -219,7 +219,7 @@ static void load_entries(private_attr_provider_t *this)
host = host_create_from_string(token, 0);
if (!host)
{
- if (!type)
+ if (mapped)
{
DBG1(DBG_CFG, "invalid host in key %s: %s", key, token);
continue;
@@ -252,9 +252,21 @@ static void load_entries(private_attr_provider_t *this)
}
}
host->destroy(host);
+ if (mapped)
+ {
+ switch (family)
+ {
+ case AF_INET:
+ type = mapped->v4;
+ break;
+ case AF_INET6:
+ type = mapped->v6;
+ break;
+ }
+ }
}
INIT(entry,
- .type = type ?: (family == AF_INET ? mapped->v4 : mapped->v6),
+ .type = type,
.value = data,
);
DBG2(DBG_CFG, "loaded attribute %N: %#B",
@@ -308,4 +320,3 @@ attr_provider_t *attr_provider_create(database_t *db)
return &this->public;
}
-