<listitem>
<para>Link groups are similar to port ranges found in managed switches. When network interfaces
are added to a numbered group, operations on all the interfaces from that group can be
- performed at once. Takes an unsigned integer in the range 0…4294967295. Defaults to unset.
+ performed at once. Takes an unsigned integer in the range 0…2147483647. Defaults to unset.
</para>
</listitem>
</varlistentry>
Network *network = userdata;
int r;
+ int32_t group;
assert(filename);
assert(lvalue);
assert(network);
if (isempty(rvalue)) {
- network->group = 0;
- network->group_set = false;
+ network->group = -1;
return 0;
}
- r = safe_atou32(rvalue, &network->group);
+ r = safe_atoi32(rvalue, &group);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r,
"Failed to parse Group=, ignoring assignment: %s", rvalue);
return 0;
}
- network->group_set = true;
+ if (group < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, r,
+ "Value of Group= must be in the range 0…2147483647, ignoring assignment: %s", rvalue);
+ return 0;
+ }
+
+ network->group = group;
return 0;
}
break;
}
case SET_LINK_GROUP:
- r = sd_netlink_message_append_u32(req, IFLA_GROUP, link->network->group);
+ r = sd_netlink_message_append_u32(req, IFLA_GROUP, (uint32_t) link->network->group);
if (r < 0)
return log_link_debug_errno(link, r, "Could not append IFLA_GROUP attribute: %m");
break;
assert(link);
assert(link->network);
- if (!link->network->group_set)
+ if (link->network->group < 0)
return 0;
return link_request_set_link(link, SET_LINK_GROUP, link_set_group_handler, NULL);