If an ifindex is specified, we are modifying the existing interface.
Hence, these flags should not be set. Otherwise, the request will be
refused with -EEXIST.
if (r < 0)
return r;
- if (nlmsg_type == RTM_NEWLINK)
+ if (nlmsg_type == RTM_NEWLINK && ifindex == 0)
(*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL;
else if (nlmsg_type == RTM_NEWLINKPROP)
(*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL | NLM_F_APPEND;
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not allocate netlink message: %m");
- r = sd_netlink_message_set_flags(req, NLM_F_REQUEST | NLM_F_ACK);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not set netlink message flags: %m");
-
r = netdev_bridge_post_create_message(netdev, req);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not create netlink message: %m");
assert(link->network);
assert(m);
- r = sd_netlink_message_set_flags(m, NLM_F_REQUEST | NLM_F_ACK);
- if (r < 0)
- return r;
-
r = sd_netlink_message_open_container(m, IFLA_LINKINFO);
if (r < 0)
return r;
assert(link->network);
assert(m);
- r = sd_netlink_message_set_flags(m, NLM_F_REQUEST | NLM_F_ACK);
- if (r < 0)
- return r;
-
r = sd_netlink_message_open_container(m, IFLA_LINKINFO);
if (r < 0)
return r;
return r;
break;
case REQUEST_TYPE_SET_LINK_BOND:
- r = sd_netlink_message_set_flags(req, NLM_F_REQUEST | NLM_F_ACK);
- if (r < 0)
- return r;
-
r = sd_netlink_message_open_container(req, IFLA_LINKINFO);
if (r < 0)
return r;