return -ENODEV;
}
-static int set_link_name(sd_netlink **rtnl, int ifindex, const char *name) {
+static int set_link_name(sd_netlink *rtnl, int ifindex, const char *name) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
int r;
/* Assign the requested name. */
- if (!*rtnl) {
- r = sd_netlink_open(rtnl);
- if (r < 0)
- return r;
- }
-
- r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex);
+ r = sd_rtnl_message_new_link(rtnl, &message, RTM_SETLINK, ifindex);
if (r < 0)
return r;
if (r < 0)
return r;
- return sd_netlink_call(*rtnl, message, 0, NULL);
+ return sd_netlink_call(rtnl, message, 0, NULL);
}
int rtnl_rename_link(sd_netlink **rtnl, const char *orig_name, const char *new_name) {
if (ifindex < 0)
return ifindex;
- return set_link_name(rtnl, ifindex, new_name);
+ return set_link_name(*rtnl, ifindex, new_name);
}
int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name, char* const *alternative_names) {
bool altname_deleted = false;
int r;
- assert(rtnl);
assert(ifindex > 0);
if (isempty(name) && strv_isempty(alternative_names))
if (name && !ifname_valid(name))
return -EINVAL;
+ _cleanup_(sd_netlink_unrefp) sd_netlink *our_rtnl = NULL;
+ if (!rtnl)
+ rtnl = &our_rtnl;
+
/* If the requested name is already assigned as an alternative name, then first drop it. */
r = rtnl_get_link_alternative_names(rtnl, ifindex, &original_altnames);
if (r < 0)
altname_deleted = true;
}
- r = set_link_name(rtnl, ifindex, name);
+ r = set_link_name(*rtnl, ifindex, name);
if (r < 0)
goto fail;
}
uint32_t mtu,
uint32_t gso_max_size,
size_t gso_max_segments) {
- _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
+
int r;
- assert(rtnl);
assert(ifindex > 0);
if (!alias &&
gso_max_segments == 0)
return 0;
+ _cleanup_(sd_netlink_unrefp) sd_netlink *our_rtnl = NULL;
+ if (!rtnl)
+ rtnl = &our_rtnl;
if (!*rtnl) {
r = sd_netlink_open(rtnl);
if (r < 0)
return r;
}
+ _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex);
if (r < 0)
return r;
int ifindex,
char* const *alternative_names) {
- _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
int r;
- assert(rtnl);
assert(ifindex > 0);
assert(IN_SET(nlmsg_type, RTM_NEWLINKPROP, RTM_DELLINKPROP));
if (strv_isempty(alternative_names))
return 0;
+ _cleanup_(sd_netlink_unrefp) sd_netlink *our_rtnl = NULL;
+ if (!rtnl)
+ rtnl = &our_rtnl;
if (!*rtnl) {
r = sd_netlink_open(rtnl);
if (r < 0)
return r;
}
+ _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
r = sd_rtnl_message_new_link(*rtnl, &message, nlmsg_type, ifindex);
if (r < 0)
return r;
const char *ifname,
char* const *alternative_names) {
- _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
int r;
assert(rtnl);
if (strv_isempty(alternative_names))
return 0;
+ _cleanup_(sd_netlink_unrefp) sd_netlink *our_rtnl = NULL;
+ if (!rtnl)
+ rtnl = &our_rtnl;
if (!*rtnl) {
r = sd_netlink_open(rtnl);
if (r < 0)
return r;
}
+ _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
r = sd_rtnl_message_new_link(*rtnl, &message, RTM_NEWLINKPROP, 0);
if (r < 0)
return r;