return -ENOMEM;
address->family = AF_UNSPEC;
+ address->scope = RT_SCOPE_UNIVERSE;
address->network = network;
return -ENOMEM;
address->family = AF_UNSPEC;
+ address->scope = RT_SCOPE_UNIVERSE;
*ret = address;
address = NULL;
assert(link->manager);
assert(link->manager->rtnl);
- r = sd_rtnl_message_new_addr(RTM_DELADDR, link->ifindex, address->family, &req);
+ r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_DELADDR,
+ link->ifindex, address->family);
if (r < 0) {
log_error("Could not allocate RTM_DELADDR message: %s",
strerror(-r));
assert(link->manager);
assert(link->manager->rtnl);
- r = sd_rtnl_message_new_addr(RTM_NEWADDR, link->ifindex,
- address->family, &req);
+ r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_NEWADDR,
+ link->ifindex, address->family);
if (r < 0) {
log_error("Could not allocate RTM_NEWADDR message: %s",
strerror(-r));
return r;
}
- r = sd_rtnl_message_addr_set_scope(req, RT_SCOPE_UNIVERSE);
+ r = sd_rtnl_message_addr_set_scope(req, address->scope);
if (r < 0) {
log_error("Could not set scope: %s", strerror(-r));
return r;
if (r < 0)
return r;
+ if (n->family == AF_INET6) {
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+ "Broadcast is not valid for IPv6 addresses, "
+ "ignoring assignment: %s", address);
+ return 0;
+ }
+
r = net_parse_inaddr(address, &n->family, &n->broadcast);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, EINVAL,