This also renames link_get() -> link_get_by_index().
assert(p);
assert(u);
- HASHMAP_FOREACH(l, p->manager->links) {
+ HASHMAP_FOREACH(l, p->manager->links_by_index) {
Address *a;
/* Don't clash with assigned addresses */
assert(address);
if (family == AF_INET) {
- HASHMAP_FOREACH(link, manager->links)
+ HASHMAP_FOREACH(link, manager->links_by_index)
if (link_get_ipv4_address(link, &address->in, 0, &a) >= 0)
return !check_ready || address_is_ready(a);
} else {
tmp->family = family;
tmp->in_addr = *address;
- HASHMAP_FOREACH(link, manager->links)
+ HASHMAP_FOREACH(link, manager->links_by_index)
if (address_get(link, tmp, &a) >= 0)
return !check_ready || address_is_ready(a);
}
return 0;
}
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0 || !link) {
/* when enumerating we might be out of sync, but we will get the address again, so just
* ignore it */
fdb->outgoing_ifindex = out->ifindex;
} else if (fdb->outgoing_ifindex > 0) {
- if (link_get(link->manager, fdb->outgoing_ifindex, &out) < 0)
+ if (link_get_by_index(link->manager, fdb->outgoing_ifindex, &out) < 0)
return false;
}
if (out && !link_is_ready_to_configure(out, false))
if (link->master_ifindex != link->network->bridge->ifindex)
return false;
- if (link_get(link->manager, link->master_ifindex, &master) < 0)
+ if (link_get_by_index(link->manager, link->master_ifindex, &master) < 0)
return false;
if (!streq_ptr(master->kind, "bridge"))
return link_get_by_name(link->manager, link->network->dhcp_server_uplink_name, ret);
if (link->network->dhcp_server_uplink_index > 0)
- return link_get(link->manager, link->network->dhcp_server_uplink_index, ret);
+ return link_get_by_index(link->manager, link->network->dhcp_server_uplink_index, ret);
if (link->network->dhcp_server_uplink_index == 0) {
/* It is not necessary to propagate error in automatic selection. */
assert(masked_pd_prefix);
assert(pd_prefix_len <= 64);
- HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
+ HASHMAP_FOREACH(link, dhcp6_link->manager->links_by_index) {
_cleanup_free_ char *assigned_buf = NULL;
struct in6_addr assigned_prefix;
assert(dhcp6_link);
assert(dhcp6_link->manager);
- HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
+ HASHMAP_FOREACH(link, dhcp6_link->manager->links_by_index) {
if (link == dhcp6_link)
continue;
assert(dhcp6_link);
assert(dhcp6_link->dhcp6_lease);
- HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
+ HASHMAP_FOREACH(link, dhcp6_link->manager->links_by_index) {
if (link == dhcp6_link)
continue;
false);
}
- HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
+ HASHMAP_FOREACH(link, dhcp6_link->manager->links_by_index) {
if (link == dhcp6_link)
continue;
log_link_debug(link, "Requesting DHCPv6 prefixes to be delegated for new link");
- HASHMAP_FOREACH(l, link->manager->links) {
+ HASHMAP_FOREACH(l, link->manager->links_by_index) {
int r, enabled;
if (l == link)
assert(dhcp6_link);
assert(dhcp6_link->manager);
- HASHMAP_FOREACH(link, dhcp6_link->manager->links) {
+ HASHMAP_FOREACH(link, dhcp6_link->manager->links_by_index) {
if (link == dhcp6_link)
continue;
assert(manager);
assert(ret);
- elements = new(JsonVariant*, hashmap_size(manager->links));
+ elements = new(JsonVariant*, hashmap_size(manager->links_by_index));
if (!elements)
return -ENOMEM;
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
r = link_build_json(link, elements + n);
if (r < 0)
goto finalize;
assert(m);
assert(nodes);
- l = new0(char*, hashmap_size(m->links) + 1);
+ l = new0(char*, hashmap_size(m->links_by_index) + 1);
if (!l)
return -ENOMEM;
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
char *p;
p = link_bus_path(link);
if (ifindex < 0)
return 0;
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0)
return 0;
DEFINE_TRIVIAL_REF_UNREF_FUNC(Link, link, link_free);
-int link_get(Manager *m, int ifindex, Link **ret) {
+int link_get_by_index(Manager *m, int ifindex, Link **ret) {
Link *link;
assert(m);
assert(ifindex > 0);
- link = hashmap_get(m->links, INT_TO_PTR(ifindex));
+ link = hashmap_get(m->links_by_index, INT_TO_PTR(ifindex));
if (!link)
return -ENODEV;
if (link->master_ifindex <= 0 || link->master_ifindex == link->ifindex)
return -ENODEV;
- return link_get(link->manager, link->master_ifindex, ret);
+ return link_get_by_index(link->manager, link->master_ifindex, ret);
}
void link_set_state(Link *link, LinkState state) {
m = link->manager;
- HASHMAP_FOREACH(carrier, m->links) {
+ HASHMAP_FOREACH(carrier, m->links_by_index) {
if (!carrier->network)
continue;
m = link->manager;
- HASHMAP_FOREACH(carrier, m->links) {
+ HASHMAP_FOREACH(carrier, m->links_by_index) {
if (strv_fnmatch(link->network->bind_carrier, carrier->ifname)) {
r = link_put_carrier(link, carrier, &link->bound_to_links);
if (r < 0)
hashmap_remove(link->manager->links_by_name, link->ifname);
/* The following must be called at last. */
- assert_se(hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex)) == link);
+ assert_se(hashmap_remove(link->manager->links_by_index, INT_TO_PTR(link->ifindex)) == link);
return link_unref(link);
}
return 0;
}
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0) {
log_device_debug_errno(device, r, "Failed to get link from ifindex %i, ignoring: %m", ifindex);
return 0;
.dns_over_tls_mode = _DNS_OVER_TLS_MODE_INVALID,
};
- r = hashmap_ensure_put(&manager->links, NULL, INT_TO_PTR(link->ifindex), link);
+ r = hashmap_ensure_put(&manager->links_by_index, NULL, INT_TO_PTR(link->ifindex), link);
if (r < 0)
return log_link_debug_errno(link, r, "Failed to store link into manager: %m");
return 0;
}
- (void) link_get(manager, ifindex, &link);
+ (void) link_get_by_index(manager, ifindex, &link);
(void) netdev_get(manager, name, &netdev);
switch (type) {
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_unref);
DEFINE_TRIVIAL_DESTRUCTOR(link_netlink_destroy_callback, Link, link_unref);
-int link_get(Manager *m, int ifindex, Link **ret);
+int link_get_by_index(Manager *m, int ifindex, Link **ret);
int link_get_by_name(Manager *m, const char *ifname, Link **ret);
int link_get_master(Link *link, Link **ret);
if (r < 0)
return r;
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
_cleanup_free_ char *path = NULL;
path = link_bus_path(link);
if (r < 0)
return r;
- link = hashmap_get(manager->links, INT_TO_PTR(ifindex));
- if (!link)
+ r = link_get_by_index(manager, ifindex, &link);
+ if (r < 0)
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_LINK, "Link %i not known", ifindex);
r = sd_bus_message_new_method_return(message, &reply);
if (r < 0)
return r;
- l = hashmap_get(m->links, INT_TO_PTR(ifindex));
- if (!l)
+ r = link_get_by_index(m, ifindex, &l);
+ if (r < 0)
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_LINK, "Link %i not known", ifindex);
return handler(message, l, error);
if (r < 0)
return r;
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
r = link_reconfigure(link, /* force = */ false);
if (r < 0)
return r;
assert(m);
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
r = link_carrier_reset(link);
if (r < 0) {
log_link_warning_errno(link, r, "Could not reset carrier: %m");
free(m->state_file);
- HASHMAP_FOREACH(link, m->links)
+ HASHMAP_FOREACH(link, m->links_by_index)
(void) link_stop_engines(link, true);
m->request_queue = ordered_set_free(m->request_queue);
m->dirty_links = set_free_with_destructor(m->dirty_links, link_unref);
m->links_requesting_uuid = set_free_with_destructor(m->links_requesting_uuid, link_unref);
m->links_by_name = hashmap_free(m->links_by_name);
- m->links = hashmap_free_with_destructor(m->links, link_unref);
+ m->links_by_index = hashmap_free_with_destructor(m->links_by_index, link_unref);
m->networks = ordered_hashmap_free_with_destructor(m->networks, network_unref);
if (r < 0)
log_warning_errno(r, "Failed to update state file %s, ignoring: %m", m->state_file);
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
r = link_save(link);
if (r < 0)
log_link_warning_errno(link, r, "Failed to update link state file %s, ignoring: %m", link->state_file);
LinkAddressState ipv6_address_state;
LinkOnlineState online_state;
- Hashmap *links;
+ Hashmap *links_by_index;
Hashmap *links_by_name;
Hashmap *netdevs;
OrderedHashmap *networks;
return 0;
}
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0 || !link) {
/* when enumerating we might be out of sync, but we will get the neighbor again. Also,
* kernel sends messages about neighbors after a link is removed. So, just ignore it. */
assert(manager);
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
if (link == except)
continue;
if (!FLAGS_SET(link->flags, IFF_UP))
return false;
- HASHMAP_FOREACH(l, link->manager->links) {
+ HASHMAP_FOREACH(l, link->manager->links_by_index) {
if (l->address_remove_messages > 0)
return false;
if (l->nexthop_remove_messages > 0)
return 0;
}
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0 || !link) {
if (!m->enumerating)
log_warning("rtnl: received nexthop message for link (%"PRIu32") we do not know about, ignoring", ifindex);
assert(IN_SET(family, AF_INET, AF_INET6));
assert(address);
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
Route *route;
SET_FOREACH(route, link->routes)
/* Looks for a suitable "uplink", via black magic: an interface that is up and where the
* default route with the highest priority points to. */
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
if (link == exclude)
continue;
assert(manager);
- HASHMAP_FOREACH(link, manager->links) {
+ HASHMAP_FOREACH(link, manager->links_by_index) {
if (link == except)
continue;
} else if (m && m->ifindex != 0 && m->ifindex != link->ifindex) {
Link *link_gw;
- r = link_get(link->manager, m->ifindex, &link_gw);
+ r = link_get_by_index(link->manager, m->ifindex, &link_gw);
if (r < 0)
return log_link_error_errno(link, r, "Failed to get link with ifindex %d: %m", m->ifindex);
} else {
Link *l;
- HASHMAP_FOREACH(l, link->manager->links) {
+ HASHMAP_FOREACH(l, link->manager->links_by_index) {
if (l->address_remove_messages > 0)
return false;
if (l->nexthop_remove_messages > 0)
m->ifindex = l->ifindex;
} else if (m->ifindex > 0) {
- if (link_get(link->manager, m->ifindex, &l) < 0)
+ if (link_get_by_index(link->manager, m->ifindex, &l) < 0)
return false;
}
if (l && !link_is_ready_to_configure(l, true))
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
"rtnl: received multipath route with invalid ifindex, ignoring.");
- r = link_get(manager, m->ifindex, &link);
+ r = link_get_by_index(manager, m->ifindex, &link);
if (r < 0) {
log_warning_errno(r, "rtnl: received multipath route for link (%d) we do not know, ignoring: %m", m->ifindex);
return 0;
return 0;
}
- r = link_get(m, ifindex, &link);
+ r = link_get_by_index(m, ifindex, &link);
if (r < 0 || !link) {
/* when enumerating we might be out of sync, but we will
* get the route again, so just ignore it */
assert(m);
assert(rule);
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
RoutingPolicyRule *link_rule;
if (link == except)
if (r < 0)
return r;
- link = hashmap_get(manager->links, INT_TO_PTR(ifindex));
- if (!link)
- return -ENODEV;
+ r = link_get_by_index(manager, ifindex, &link);
+ if (r < 0)
+ return r;
link->stats_old = link->stats_new;
manager->speed_meter_usec_old = manager->speed_meter_usec_new;
manager->speed_meter_usec_new = usec_now;
- HASHMAP_FOREACH(link, manager->links)
+ HASHMAP_FOREACH(link, manager->links_by_index)
link->stats_updated = false;
r = sd_rtnl_message_new_link(manager->rtnl, &req, RTM_GETLINK, 0);
assert(m);
assert(m->state_file);
- HASHMAP_FOREACH(link, m->links) {
+ HASHMAP_FOREACH(link, m->links_by_index) {
const struct in_addr *addresses;
if (link->flags & IFF_LOOPBACK)