break;
case SD_DHCP_OPTION_VENDOR_SPECIFIC: {
- OrderedHashmap *s = (OrderedHashmap *) optval;
+ OrderedSet *s = (OrderedSet *) optval;
struct sd_dhcp_option *p;
size_t l = 0;
- ORDERED_HASHMAP_FOREACH(p, s)
+ ORDERED_SET_FOREACH(p, s)
l += p->length + 2;
if (*offset + l + 2 > size)
*offset += 2;
- ORDERED_HASHMAP_FOREACH(p, s) {
+ ORDERED_SET_FOREACH(p, s) {
options[*offset] = p->option;
options[*offset + 1] = p->length;
memcpy(&options[*offset + 2], p->data, p->length);
#include "sd-event.h"
#include "dhcp-internal.h"
-#include "hashmap.h"
+#include "ordered-set.h"
#include "log.h"
#include "time-util.h"
DHCPServerData servers[_SD_DHCP_LEASE_SERVER_TYPE_MAX];
- OrderedHashmap *extra_options;
- OrderedHashmap *vendor_options;
+ OrderedSet *extra_options;
+ OrderedSet *vendor_options;
bool emit_router;
assert_return(client, -EINVAL);
assert_return(v, -EINVAL);
- r = ordered_hashmap_ensure_allocated(&client->extra_options, &dhcp_option_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(client->extra_options, UINT_TO_PTR(v->option), v);
+ r = ordered_hashmap_ensure_put(&client->extra_options, &dhcp_option_hash_ops, UINT_TO_PTR(v->option), v);
if (r < 0)
return r;
#include "fd-util.h"
#include "in-addr-util.h"
#include "io-util.h"
+#include "ordered-set.h"
#include "siphash24.h"
#include "string-util.h"
#include "unaligned.h"
hashmap_free(server->leases_by_client_id);
- ordered_hashmap_free(server->extra_options);
- ordered_hashmap_free(server->vendor_options);
+ ordered_set_free(server->extra_options);
+ ordered_set_free(server->vendor_options);
free(server->bound_leases);
return mfree(server);
return r;
}
- ORDERED_HASHMAP_FOREACH(j, server->extra_options) {
+ ORDERED_SET_FOREACH(j, server->extra_options) {
r = dhcp_option_append(&packet->dhcp, req->max_optlen, &offset, 0,
j->option, j->length, j->data);
if (r < 0)
return r;
}
- if (!ordered_hashmap_isempty(server->vendor_options)) {
+ if (!ordered_set_isempty(server->vendor_options)) {
r = dhcp_option_append(
&packet->dhcp, req->max_optlen, &offset, 0,
SD_DHCP_OPTION_VENDOR_SPECIFIC,
- ordered_hashmap_size(server->vendor_options), server->vendor_options);
+ ordered_set_size(server->vendor_options), server->vendor_options);
if (r < 0)
return r;
}
assert_return(server, -EINVAL);
assert_return(v, -EINVAL);
- r = ordered_hashmap_ensure_allocated(&server->extra_options, &dhcp_option_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(server->extra_options, UINT_TO_PTR(v->option), v);
+ r = ordered_set_ensure_put(&server->extra_options, &dhcp_option_hash_ops, v);
if (r < 0)
return r;
assert_return(server, -EINVAL);
assert_return(v, -EINVAL);
- r = ordered_hashmap_ensure_allocated(&server->vendor_options, &dhcp_option_hash_ops);
- if (r < 0)
- return -ENOMEM;
-
- r = ordered_hashmap_put(server->vendor_options, v, v);
+ r = ordered_set_ensure_put(&server->vendor_options, &dhcp_option_hash_ops, v);
if (r < 0)
return r;
.section = TAKE_PTR(n),
};
- r = ordered_hashmap_ensure_allocated(&t->sessions_by_section, &network_config_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(t->sessions_by_section, s->section, s);
+ r = ordered_hashmap_ensure_put(&t->sessions_by_section, &network_config_hash_ops, s->section, s);
if (r < 0)
return r;
sr_iov->network = network;
sr_iov->section = TAKE_PTR(n);
- r = ordered_hashmap_ensure_allocated(&network->sr_iov_by_section, &network_config_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(network->sr_iov_by_section, sr_iov->section, sr_iov);
+ r = ordered_hashmap_ensure_put(&network->sr_iov_by_section, &network_config_hash_ops, sr_iov->section, sr_iov);
if (r < 0)
return r;
qdisc->network = network;
qdisc->section = TAKE_PTR(n);
- r = ordered_hashmap_ensure_allocated(&network->tc_by_section, &network_config_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(network->tc_by_section, qdisc->section, TC(qdisc));
+ r = ordered_hashmap_ensure_put(&network->tc_by_section, &network_config_hash_ops, qdisc->section, TC(qdisc));
if (r < 0)
return r;
tclass->network = network;
tclass->section = TAKE_PTR(n);
- r = ordered_hashmap_ensure_allocated(&network->tc_by_section, &network_config_hash_ops);
- if (r < 0)
- return r;
-
- r = ordered_hashmap_put(network->tc_by_section, tclass->section, tclass);
+ r = ordered_hashmap_ensure_put(&network->tc_by_section, &network_config_hash_ops, tclass->section, tclass);
if (r < 0)
return r;