_cleanup_link_unref_ Link *link = userdata;
int r;
- log_debug_link(link, "set link");
+ log_link_debug(link, "set link");
r = sd_rtnl_message_get_errno(m);
if (r < 0 && r != -EEXIST) {
- log_struct_link(LOG_ERR, link,
+ log_link_struct(link, LOG_ERR,
"MESSAGE=%-*s: could not join netdev: %s",
IFNAMSIZ,
link->ifname, strerror(-r),
r = sd_rtnl_message_new_link(link->manager->rtnl, &req,
RTM_SETLINK, link->ifindex);
if (r < 0) {
- log_error_link(link, "Could not allocate RTM_SETLINK message");
+ log_link_error(link, "Could not allocate RTM_SETLINK message");
return r;
}
r = sd_rtnl_message_link_set_family(req, PF_BRIDGE);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not set message family %s", strerror(-r));
return r;
}
r = sd_rtnl_message_open_container(req, IFLA_PROTINFO);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not append IFLA_PROTINFO attribute: %s",
strerror(-r));
return r;
if(link->network->cost != 0) {
r = sd_rtnl_message_append_u32(req, IFLA_BRPORT_COST, link->network->cost);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not append IFLA_BRPORT_COST attribute: %s",
strerror(-r));
return r;
r = sd_rtnl_message_close_container(req);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not append IFLA_LINKINFO attribute: %s",
strerror(-r));
return r;
r = sd_rtnl_call_async(link->manager->rtnl, req, link_set_handler, link, 0, NULL);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not send rtnetlink message: %s",
strerror(-r));
return r;
int r;
assert(link);
+ assert(link->network);
assert(link->manager);
assert(link->manager->rtnl);
return r;
}
+ if (link->network->mac) {
+ r = sd_rtnl_message_append_ether_addr(req, IFLA_ADDRESS, link->network->mac);
+ if (r < 0) {
+ log_link_error(link, "Could not set MAC address: %s", strerror(-r));
+ return r;
+ }
+ }
+
+ if (link->network->mtu) {
+ r = sd_rtnl_message_append_u32(req, IFLA_MTU, link->network->mtu);
+ if (r < 0) {
+ log_link_error(link, "Could not set MTU: %s", strerror(-r));
+ return r;
+ }
+ }
+
r = sd_rtnl_call_async(link->manager->rtnl, req, link_up_handler, link,
0, NULL);
if (r < 0) {
if(link->network->bridge) {
r = link_set_bridge(link);
if (r < 0) {
- log_error_link(link,
+ log_link_error(link,
"Could not set bridge message: %s",
strerror(-r));
}
} else {
r = link_get(m, ifindex, &link);
if (r < 0 || !link) {
- log_warning("rtnl: received address for a nonexistent link (%d), ignoring", ifindex);
+ log_warning("rtnl: received address for nonexistent link (%d), ignoring", ifindex);
return 0;
}
}