return r;
}
- bool up = link && FLAGS_SET(link->flags, IFF_UP);
+ bool up = link && link_is_up(link);
bool has_slaves = link && !set_isempty(link->slaves);
if (b->mode != _NETDEV_BOND_MODE_INVALID && !up && !has_slaves) {
int link_handle_bound_to_list(Link *link) {
bool required_up = false;
- bool link_is_up = false;
Link *l;
assert(link);
if (hashmap_isempty(link->bound_to_links))
return 0;
- if (link->flags & IFF_UP)
- link_is_up = true;
-
HASHMAP_FOREACH(l, link->bound_to_links)
if (link_has_carrier(l)) {
required_up = true;
break;
}
- if (!required_up && link_is_up)
+ if (!required_up && link_is_up(link))
return link_request_to_bring_up_or_down(link, /* up= */ false);
- if (required_up && !link_is_up)
+ if (required_up && !link_is_up(link))
return link_request_to_bring_up_or_down(link, /* up= */ true);
return 0;
carrier_state = LINK_CARRIER_STATE_ENSLAVED;
else
carrier_state = LINK_CARRIER_STATE_CARRIER;
- } else if (link->flags & IFF_UP)
+ } else if (link_is_up(link))
carrier_state = LINK_CARRIER_STATE_NO_CARRIER;
else
carrier_state = LINK_CARRIER_STATE_OFF;
return netif_has_carrier(link->kernel_operstate, link->flags);
}
+bool link_is_up(Link *link) {
+ assert(link);
+ return FLAGS_SET(link->flags, IFF_UP);
+}
+
bool link_multicast_enabled(Link *link) {
assert(link);
log_link_debug(link, "Unknown link flags lost, ignoring: %#.5x", unknown_flags_removed);
}
- link_was_admin_up = link->flags & IFF_UP;
+ link_was_admin_up = link_is_up(link);
had_carrier = link_has_carrier(link);
link->flags = flags;
r = 0;
- if (!link_was_admin_up && (link->flags & IFF_UP))
+ if (!link_was_admin_up && link_is_up(link))
r = link_admin_state_up(link);
- else if (link_was_admin_up && !(link->flags & IFF_UP))
+ else if (link_was_admin_up && !link_is_up(link))
r = link_admin_state_down(link);
if (r < 0)
return r;
void link_update_operstate(Link *link, bool also_update_master);
bool link_has_carrier(Link *link);
+bool link_is_up(Link *link);
bool link_multicast_enabled(Link *link);
bool link_ipv6_enabled(Link *link);
* kernel. */
if (link->set_flags_messages > 0)
return false;
- if (!FLAGS_SET(link->flags, IFF_UP))
+ if (!link_is_up(link))
return false;
}
assert(link);
assert(link->manager);
assert(link->ifindex > 0);
- assert(!FLAGS_SET(link->flags, IFF_UP));
+ assert(!link_is_up(link));
/* See comments in link_forget_routes(). */
void link_forget_routes(Link *link) {
assert(link);
assert(link->ifindex > 0);
- assert(!FLAGS_SET(link->flags, IFF_UP));
+ assert(!link_is_up(link));
/* When an interface went down, IPv4 non-local routes bound to the interface are silently removed by
* the kernel, without any notifications. Let's forget them in that case. Otherwise, when the link
case REQUEST_TYPE_SET_LINK_CAN:
/* Do not check link->set_flags_messages here, as it is ok even if link->flags
* is outdated, and checking the counter causes a deadlock. */
- if (FLAGS_SET(link->flags, IFF_UP)) {
+ if (link_is_up(link)) {
/* The CAN interface must be down to configure bitrate, etc... */
r = link_down_now(link);
if (r < 0)
/* Do not check link->set_flags_messages here, as it is ok even if link->flags is outdated,
* and checking the counter causes a deadlock. */
- if (link->network->bond && FLAGS_SET(link->flags, IFF_UP)) {
+ if (link->network->bond && link_is_up(link)) {
/* link must be down when joining to bond master. */
r = link_down_now(link);
if (r < 0)
return r;
}
- if (link->network->bridge && !FLAGS_SET(link->flags, IFF_UP) && link->dev) {
+ if (link->network->bridge && !link_is_up(link) && link->dev) {
/* Some devices require the port to be up before joining the bridge.
*
* E.g. Texas Instruments SoC Ethernet running in switch mode:
* link goes down. Hence, we need to reset the interface. However, setting the mode by sysctl
* does not need that. Let's use the sysctl interface when the link is already up.
* See also issue #22424. */
- if (mode != IPV6_LINK_LOCAL_ADDRESSS_GEN_MODE_NONE &&
- FLAGS_SET(link->flags, IFF_UP)) {
+ if (mode != IPV6_LINK_LOCAL_ADDRESSS_GEN_MODE_NONE && link_is_up(link)) {
r = link_set_ipv6ll_addrgen_mode(link, mode);
if (r < 0)
log_link_warning_errno(link, r, "Cannot set IPv6 address generation mode, ignoring: %m");
if (link_get_by_index(link->manager, link->dsa_master_ifindex, &master) < 0)
return false;
- if (!FLAGS_SET(master->flags, IFF_UP))
+ if (!link_is_up(master))
return false;
}