From 7750b79695b32e8b5145f3548a0b8f40051c72c3 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 11 Mar 2019 14:30:45 +0900 Subject: [PATCH] network: update logs --- src/network/networkd-address.c | 62 +++++++++++++------------- src/network/networkd-route.c | 79 +++++++++++++++++----------------- 2 files changed, 73 insertions(+), 68 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index e057978400..7712fd6ae3 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -223,7 +223,7 @@ static int address_establish(Address *address, Link *link) { r = fw_add_masquerade(masq, AF_INET, 0, &masked, address->prefixlen, NULL, NULL, 0); if (r < 0) - log_link_warning_errno(link, r, "Could not enable IP masquerading: %m"); + return r; address->ip_masquerade_done = masq; } @@ -321,7 +321,7 @@ static int address_release(Address *address) { r = fw_add_masquerade(false, AF_INET, 0, &masked, address->prefixlen, NULL, NULL, 0); if (r < 0) - log_link_warning_errno(address->link, r, "Failed to disable IP masquerading: %m"); + return r; address->ip_masquerade_done = false; } @@ -371,13 +371,17 @@ int address_update( int address_drop(Address *address) { Link *link; bool ready; + int r; assert(address); ready = address_is_ready(address); link = address->link; - address_release(address); + r = address_release(address); + if (r < 0) + log_link_warning_errno(link, r, "Failed to disable IP masquerading, ignoring: %m"); + address_free(address); link_update_operstate(link, true); @@ -445,7 +449,6 @@ int address_remove( link_netlink_message_handler_t callback) { _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL; - _cleanup_free_ char *b = NULL; int r; assert(address); @@ -456,28 +459,30 @@ int address_remove( assert(link->manager->rtnl); if (DEBUG_LOGGING) { - if (in_addr_to_string(address->family, &address->in_addr, &b) >= 0) - log_link_debug(link, "Removing address %s", b); + _cleanup_free_ char *b = NULL; + + (void) in_addr_to_string(address->family, &address->in_addr, &b); + log_link_debug(link, "Removing address %s", strna(b)); } r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_DELADDR, link->ifindex, address->family); if (r < 0) - return log_error_errno(r, "Could not allocate RTM_DELADDR message: %m"); + return log_link_error_errno(link, r, "Could not allocate RTM_DELADDR message: %m"); r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen); if (r < 0) - return log_error_errno(r, "Could not set prefixlen: %m"); + return log_link_error_errno(link, r, "Could not set prefixlen: %m"); r = netlink_message_append_in_addr_union(req, IFA_LOCAL, address->family, &address->in_addr); if (r < 0) - return log_error_errno(r, "Could not append IFA_LOCAL attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_LOCAL attribute: %m"); r = netlink_call_async(link->manager->rtnl, NULL, req, callback ?: address_remove_handler, link_netlink_destroy_callback, link); if (r < 0) - return log_error_errno(r, "Could not send rtnetlink message: %m"); + return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); link_ref(link); @@ -503,11 +508,9 @@ static int address_acquire(Link *link, Address *original, Address **ret) { * Then let's acquire something more useful from the pool. */ r = manager_address_pool_acquire(link->manager, original->family, original->prefixlen, &in_addr); if (r < 0) - return log_link_error_errno(link, r, "Failed to acquire address from pool: %m"); - if (r == 0) { - log_link_error(link, "Couldn't find free address for interface, all taken."); + return r; + if (r == 0) return -EBUSY; - } if (original->family == AF_INET) { /* Pick first address in range for ourselves ... */ @@ -566,11 +569,12 @@ int address_configure( /* If this is a new address, then refuse adding more than the limit */ if (address_get(link, address->family, &address->in_addr, address->prefixlen, NULL) <= 0 && set_size(link->addresses) >= ADDRESSES_PER_LINK_MAX) - return -E2BIG; + return log_link_error_errno(link, SYNTHETIC_ERRNO(E2BIG), + "Too many addresses are configured, refusing: %m"); r = address_acquire(link, address, &address); if (r < 0) - return r; + return log_link_error_errno(link, r, "Failed to acquire an address from pool: %m"); if (update) r = sd_rtnl_message_new_addr_update(link->manager->rtnl, &req, @@ -579,11 +583,11 @@ int address_configure( r = sd_rtnl_message_new_addr(link->manager->rtnl, &req, RTM_NEWADDR, link->ifindex, address->family); if (r < 0) - return log_error_errno(r, "Could not allocate RTM_NEWADDR message: %m"); + return log_link_error_errno(link, r, "Could not allocate RTM_NEWADDR message: %m"); r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen); if (r < 0) - return log_error_errno(r, "Could not set prefixlen: %m"); + return log_link_error_errno(link, r, "Could not set prefixlen: %m"); address->flags |= IFA_F_PERMANENT; @@ -604,50 +608,50 @@ int address_configure( r = sd_rtnl_message_addr_set_flags(req, (address->flags & 0xff)); if (r < 0) - return log_error_errno(r, "Could not set flags: %m"); + return log_link_error_errno(link, r, "Could not set flags: %m"); if (address->flags & ~0xff) { r = sd_netlink_message_append_u32(req, IFA_FLAGS, address->flags); if (r < 0) - return log_error_errno(r, "Could not set extended flags: %m"); + return log_link_error_errno(link, r, "Could not set extended flags: %m"); } r = sd_rtnl_message_addr_set_scope(req, address->scope); if (r < 0) - return log_error_errno(r, "Could not set scope: %m"); + return log_link_error_errno(link, r, "Could not set scope: %m"); r = netlink_message_append_in_addr_union(req, IFA_LOCAL, address->family, &address->in_addr); if (r < 0) - return log_error_errno(r, "Could not append IFA_LOCAL attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_LOCAL attribute: %m"); if (in_addr_is_null(address->family, &address->in_addr_peer) == 0) { r = netlink_message_append_in_addr_union(req, IFA_ADDRESS, address->family, &address->in_addr_peer); if (r < 0) - return log_error_errno(r, "Could not append IFA_ADDRESS attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_ADDRESS attribute: %m"); } else if (address->family == AF_INET && address->prefixlen <= 30) { r = sd_netlink_message_append_in_addr(req, IFA_BROADCAST, &address->broadcast); if (r < 0) - return log_error_errno(r, "Could not append IFA_BROADCAST attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_BROADCAST attribute: %m"); } if (address->label) { r = sd_netlink_message_append_string(req, IFA_LABEL, address->label); if (r < 0) - return log_error_errno(r, "Could not append IFA_LABEL attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_LABEL attribute: %m"); } r = sd_netlink_message_append_cache_info(req, IFA_CACHEINFO, &address->cinfo); if (r < 0) - return log_error_errno(r, "Could not append IFA_CACHEINFO attribute: %m"); + return log_link_error_errno(link, r, "Could not append IFA_CACHEINFO attribute: %m"); r = address_establish(address, link); if (r < 0) - return r; + log_link_warning_errno(link, r, "Could not enable IP masquerading, ignoring: %m"); r = netlink_call_async(link->manager->rtnl, NULL, req, callback, link_netlink_destroy_callback, link); if (r < 0) { address_release(address); - return log_error_errno(r, "Could not send rtnetlink message: %m"); + return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); } link_ref(link); @@ -658,7 +662,7 @@ int address_configure( r = address_add(link, address->family, &address->in_addr, address->prefixlen, NULL); if (r < 0) { address_release(address); - return log_error_errno(r, "Could not add address: %m"); + return log_link_error_errno(link, r, "Could not add address: %m"); } return 0; diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 5594ba1224..2074698780 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -407,59 +407,59 @@ int route_remove(Route *route, Link *link, RTM_DELROUTE, route->family, route->protocol); if (r < 0) - return log_error_errno(r, "Could not create RTM_DELROUTE message: %m"); + return log_link_error_errno(link, r, "Could not create RTM_DELROUTE message: %m"); if (in_addr_is_null(route->family, &route->gw) == 0) { r = netlink_message_append_in_addr_union(req, RTA_GATEWAY, route->family, &route->gw); if (r < 0) - return log_error_errno(r, "Could not append RTA_GATEWAY attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_GATEWAY attribute: %m"); } if (route->dst_prefixlen) { r = netlink_message_append_in_addr_union(req, RTA_DST, route->family, &route->dst); if (r < 0) - return log_error_errno(r, "Could not append RTA_DST attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_DST attribute: %m"); r = sd_rtnl_message_route_set_dst_prefixlen(req, route->dst_prefixlen); if (r < 0) - return log_error_errno(r, "Could not set destination prefix length: %m"); + return log_link_error_errno(link, r, "Could not set destination prefix length: %m"); } if (route->src_prefixlen) { r = netlink_message_append_in_addr_union(req, RTA_SRC, route->family, &route->src); if (r < 0) - return log_error_errno(r, "Could not append RTA_SRC attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_SRC attribute: %m"); r = sd_rtnl_message_route_set_src_prefixlen(req, route->src_prefixlen); if (r < 0) - return log_error_errno(r, "Could not set source prefix length: %m"); + return log_link_error_errno(link, r, "Could not set source prefix length: %m"); } if (in_addr_is_null(route->family, &route->prefsrc) == 0) { r = netlink_message_append_in_addr_union(req, RTA_PREFSRC, route->family, &route->prefsrc); if (r < 0) - return log_error_errno(r, "Could not append RTA_PREFSRC attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_PREFSRC attribute: %m"); } r = sd_rtnl_message_route_set_scope(req, route->scope); if (r < 0) - return log_error_errno(r, "Could not set scope: %m"); + return log_link_error_errno(link, r, "Could not set scope: %m"); r = sd_netlink_message_append_u32(req, RTA_PRIORITY, route->priority); if (r < 0) - return log_error_errno(r, "Could not append RTA_PRIORITY attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_PRIORITY attribute: %m"); if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE, RTN_THROW)) { r = sd_netlink_message_append_u32(req, RTA_OIF, link->ifindex); if (r < 0) - return log_error_errno(r, "Could not append RTA_OIF attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_OIF attribute: %m"); } r = netlink_call_async(link->manager->rtnl, NULL, req, callback ?: route_remove_handler, link_netlink_destroy_callback, link); if (r < 0) - return log_error_errno(r, "Could not send rtnetlink message: %m"); + return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); link_ref(link); @@ -500,7 +500,8 @@ int route_configure( if (route_get(link, route->family, &route->dst, route->dst_prefixlen, route->tos, route->priority, route->table, NULL) <= 0 && set_size(link->routes) >= routes_max()) - return -E2BIG; + return log_link_error_errno(link, SYNTHETIC_ERRNO(E2BIG), + "Too many routes are configured, refusing: %m"); if (DEBUG_LOGGING) { _cleanup_free_ char *dst = NULL, *dst_prefixlen = NULL, *src = NULL, *gw = NULL, *prefsrc = NULL; @@ -524,133 +525,133 @@ int route_configure( RTM_NEWROUTE, route->family, route->protocol); if (r < 0) - return log_error_errno(r, "Could not create RTM_NEWROUTE message: %m"); + return log_link_error_errno(link, r, "Could not create RTM_NEWROUTE message: %m"); if (in_addr_is_null(route->family, &route->gw) == 0) { r = netlink_message_append_in_addr_union(req, RTA_GATEWAY, route->family, &route->gw); if (r < 0) - return log_error_errno(r, "Could not append RTA_GATEWAY attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_GATEWAY attribute: %m"); r = sd_rtnl_message_route_set_family(req, route->family); if (r < 0) - return log_error_errno(r, "Could not set route family: %m"); + return log_link_error_errno(link, r, "Could not set route family: %m"); } if (route->dst_prefixlen) { r = netlink_message_append_in_addr_union(req, RTA_DST, route->family, &route->dst); if (r < 0) - return log_error_errno(r, "Could not append RTA_DST attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_DST attribute: %m"); r = sd_rtnl_message_route_set_dst_prefixlen(req, route->dst_prefixlen); if (r < 0) - return log_error_errno(r, "Could not set destination prefix length: %m"); + return log_link_error_errno(link, r, "Could not set destination prefix length: %m"); } if (route->src_prefixlen) { r = netlink_message_append_in_addr_union(req, RTA_SRC, route->family, &route->src); if (r < 0) - return log_error_errno(r, "Could not append RTA_SRC attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_SRC attribute: %m"); r = sd_rtnl_message_route_set_src_prefixlen(req, route->src_prefixlen); if (r < 0) - return log_error_errno(r, "Could not set source prefix length: %m"); + return log_link_error_errno(link, r, "Could not set source prefix length: %m"); } if (in_addr_is_null(route->family, &route->prefsrc) == 0) { r = netlink_message_append_in_addr_union(req, RTA_PREFSRC, route->family, &route->prefsrc); if (r < 0) - return log_error_errno(r, "Could not append RTA_PREFSRC attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_PREFSRC attribute: %m"); } r = sd_rtnl_message_route_set_scope(req, route->scope); if (r < 0) - return log_error_errno(r, "Could not set scope: %m"); + return log_link_error_errno(link, r, "Could not set scope: %m"); if (route->gateway_onlink >= 0) SET_FLAG(route->flags, RTNH_F_ONLINK, route->gateway_onlink); r = sd_rtnl_message_route_set_flags(req, route->flags); if (r < 0) - return log_error_errno(r, "Could not set flags: %m"); + return log_link_error_errno(link, r, "Could not set flags: %m"); if (route->table != RT_TABLE_MAIN) { if (route->table < 256) { r = sd_rtnl_message_route_set_table(req, route->table); if (r < 0) - return log_error_errno(r, "Could not set route table: %m"); + return log_link_error_errno(link, r, "Could not set route table: %m"); } else { r = sd_rtnl_message_route_set_table(req, RT_TABLE_UNSPEC); if (r < 0) - return log_error_errno(r, "Could not set route table: %m"); + return log_link_error_errno(link, r, "Could not set route table: %m"); /* Table attribute to allow more than 256. */ r = sd_netlink_message_append_data(req, RTA_TABLE, &route->table, sizeof(route->table)); if (r < 0) - return log_error_errno(r, "Could not append RTA_TABLE attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_TABLE attribute: %m"); } } r = sd_netlink_message_append_u32(req, RTA_PRIORITY, route->priority); if (r < 0) - return log_error_errno(r, "Could not append RTA_PRIORITY attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_PRIORITY attribute: %m"); r = sd_netlink_message_append_u8(req, RTA_PREF, route->pref); if (r < 0) - return log_error_errno(r, "Could not append RTA_PREF attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_PREF attribute: %m"); if (route->lifetime != USEC_INFINITY && kernel_route_expiration_supported()) { r = sd_netlink_message_append_u32(req, RTA_EXPIRES, DIV_ROUND_UP(usec_sub_unsigned(route->lifetime, now(clock_boottime_or_monotonic())), USEC_PER_SEC)); if (r < 0) - return log_error_errno(r, "Could not append RTA_EXPIRES attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_EXPIRES attribute: %m"); } r = sd_rtnl_message_route_set_type(req, route->type); if (r < 0) - return log_error_errno(r, "Could not set route type: %m"); + return log_link_error_errno(link, r, "Could not set route type: %m"); if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE, RTN_THROW)) { r = sd_netlink_message_append_u32(req, RTA_OIF, link->ifindex); if (r < 0) - return log_error_errno(r, "Could not append RTA_OIF attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_OIF attribute: %m"); } r = sd_netlink_message_open_container(req, RTA_METRICS); if (r < 0) - return log_error_errno(r, "Could not append RTA_METRICS attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_METRICS attribute: %m"); if (route->mtu > 0) { r = sd_netlink_message_append_u32(req, RTAX_MTU, route->mtu); if (r < 0) - return log_error_errno(r, "Could not append RTAX_MTU attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTAX_MTU attribute: %m"); } if (route->initcwnd > 0) { r = sd_netlink_message_append_u32(req, RTAX_INITCWND, route->initcwnd); if (r < 0) - return log_error_errno(r, "Could not append RTAX_INITCWND attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTAX_INITCWND attribute: %m"); } if (route->initrwnd > 0) { r = sd_netlink_message_append_u32(req, RTAX_INITRWND, route->initrwnd); if (r < 0) - return log_error_errno(r, "Could not append RTAX_INITRWND attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTAX_INITRWND attribute: %m"); } if (route->quickack != -1) { r = sd_netlink_message_append_u32(req, RTAX_QUICKACK, route->quickack); if (r < 0) - return log_error_errno(r, "Could not append RTAX_QUICKACK attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTAX_QUICKACK attribute: %m"); } r = sd_netlink_message_close_container(req); if (r < 0) - return log_error_errno(r, "Could not append RTA_METRICS attribute: %m"); + return log_link_error_errno(link, r, "Could not append RTA_METRICS attribute: %m"); r = netlink_call_async(link->manager->rtnl, NULL, req, callback, link_netlink_destroy_callback, link); if (r < 0) - return log_error_errno(r, "Could not send rtnetlink message: %m"); + return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); link_ref(link); @@ -658,7 +659,7 @@ int route_configure( r = route_add(link, route->family, &route->dst, route->dst_prefixlen, route->tos, route->priority, route->table, &route); if (r < 0) - return log_error_errno(r, "Could not add route: %m"); + return log_link_error_errno(link, r, "Could not add route: %m"); /* TODO: drop expiration handling once it can be pushed into the kernel */ route->lifetime = lifetime; @@ -667,7 +668,7 @@ int route_configure( r = sd_event_add_time(link->manager->event, &expire, clock_boottime_or_monotonic(), route->lifetime, 0, route_expire_handler, route); if (r < 0) - return log_error_errno(r, "Could not arm expiration timer: %m"); + return log_link_error_errno(link, r, "Could not arm expiration timer: %m"); } sd_event_source_unref(route->expire);