mirror of
https://github.com/systemd/systemd.git
synced 2026-08-06 16:10:59 +00:00
network: make log_link_message_full_errno() take format string
This commit is contained in:
@@ -1472,17 +1472,18 @@ int link_drop_static_addresses(Link *link) {
|
||||
return r;
|
||||
}
|
||||
|
||||
int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg) {
|
||||
int address_configure_handler_internal(sd_netlink_message *m, Link *link, Address *address) {
|
||||
int r;
|
||||
|
||||
assert(rtnl);
|
||||
assert(m);
|
||||
assert(link);
|
||||
assert(error_msg);
|
||||
assert(address);
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0 && r != -EEXIST) {
|
||||
log_link_message_warning_errno(link, m, r, error_msg);
|
||||
log_link_message_warning_errno(link, m, r, "Failed to set %s address %s",
|
||||
network_config_source_to_string(address->source),
|
||||
IN_ADDR_TO_STRING(address->family, &address->in_addr));
|
||||
link_enter_failed(link);
|
||||
return 0;
|
||||
}
|
||||
@@ -1725,8 +1726,9 @@ static int static_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reque
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Failed to set static address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ int address_new(Address **ret);
|
||||
int address_new_static(Network *network, const char *filename, unsigned section_line, Address **ret);
|
||||
int address_get(Link *link, const Address *in, Address **ret);
|
||||
int address_get_harder(Link *link, const Address *in, Address **ret);
|
||||
int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg);
|
||||
int address_configure_handler_internal(sd_netlink_message *m, Link *link, Address *address);
|
||||
int address_remove(Address *address, Link *link);
|
||||
int address_remove_and_cancel(Address *address, Link *link);
|
||||
int address_dup(const Address *src, Address **ret);
|
||||
|
||||
@@ -271,8 +271,9 @@ static int dhcp_pd_route_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques
|
||||
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Failed to add prefix route for DHCP delegated subnet prefix");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -328,8 +329,9 @@ static int dhcp_pd_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Requ
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Could not set DHCP-PD address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -698,8 +700,9 @@ static int dhcp4_unreachable_route_handler(sd_netlink *rtnl, sd_netlink_message
|
||||
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Failed to set unreachable route for DHCPv4 delegated prefix");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -715,8 +718,9 @@ static int dhcp6_unreachable_route_handler(sd_netlink *rtnl, sd_netlink_message
|
||||
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Failed to set unreachable route for DHCPv6 delegated prefix");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -341,11 +341,11 @@ int dhcp4_check_ready(Link *link) {
|
||||
static int dhcp4_route_handler(sd_netlink *rtnl, sd_netlink_message *m, Request *req, Link *link, Route *route) {
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Could not set DHCPv4 route");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -897,8 +897,9 @@ static int dhcp4_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Could not set DHCPv4 address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -134,8 +134,9 @@ static int dhcp6_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Could not set DHCPv6 address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -80,8 +80,9 @@ static int ipv4ll_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reque
|
||||
|
||||
assert(link);
|
||||
assert(!link->ipv4ll_address_configured);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Could not set ipv4ll address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -2914,7 +2914,7 @@ int link_getlink_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0) {
|
||||
log_link_message_warning_errno(link, m, r, error_msg);
|
||||
log_link_message_warning_errno(link, m, r, "%s", error_msg);
|
||||
link_enter_failed(link);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -370,8 +370,9 @@ static int ndisc_nexthop_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(nexthop);
|
||||
|
||||
r = nexthop_configure_handler_internal(m, link, "Could not set NDisc route");
|
||||
r = nexthop_configure_handler_internal(m, link, nexthop);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -441,8 +442,9 @@ static int ndisc_route_handler(sd_netlink *rtnl, sd_netlink_message *m, Request
|
||||
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Could not set NDisc route");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
@@ -670,8 +672,9 @@ static int ndisc_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reques
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(address);
|
||||
|
||||
r = address_configure_handler_internal(rtnl, m, link, "Could not set NDisc address");
|
||||
r = address_configure_handler_internal(m, link, address);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -687,16 +687,19 @@ static int nexthop_configure(NextHop *nexthop, Link *link, Request *req) {
|
||||
return request_call_netlink_async(link->manager->rtnl, m, req);
|
||||
}
|
||||
|
||||
int nexthop_configure_handler_internal(sd_netlink_message *m, Link *link, const char *error_msg) {
|
||||
int nexthop_configure_handler_internal(sd_netlink_message *m, Link *link, NextHop *nexthop) {
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(link);
|
||||
assert(error_msg);
|
||||
assert(nexthop);
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0 && r != -EEXIST) {
|
||||
log_link_message_warning_errno(link, m, r, error_msg);
|
||||
_cleanup_free_ char *str = NULL;
|
||||
(void) nexthop_to_string(nexthop, link->manager, &str);
|
||||
log_link_message_warning_errno(link, m, r, "Failed to set %s nexthop (%s)",
|
||||
network_config_source_to_string(nexthop->source), strna(str));
|
||||
link_enter_failed(link);
|
||||
return 0;
|
||||
}
|
||||
@@ -709,7 +712,7 @@ static int static_nexthop_handler(sd_netlink *rtnl, sd_netlink_message *m, Reque
|
||||
|
||||
assert(link);
|
||||
|
||||
r = nexthop_configure_handler_internal(m, link, "Failed to set static nexthop");
|
||||
r = nexthop_configure_handler_internal(m, link, nexthop);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ static inline int link_drop_static_nexthops(Link *link) {
|
||||
}
|
||||
void link_forget_nexthops(Link *link);
|
||||
|
||||
int nexthop_configure_handler_internal(sd_netlink_message *m, Link *link, const char *error_msg);
|
||||
int nexthop_configure_handler_internal(sd_netlink_message *m, Link *link, NextHop *nexthop);
|
||||
int link_request_nexthop(
|
||||
Link *link,
|
||||
const NextHop *nexthop,
|
||||
|
||||
@@ -783,12 +783,12 @@ static int route_update_on_existing(Request *req) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Request *req, const char *error_msg) {
|
||||
int route_configure_handler_internal(sd_netlink_message *m, Request *req, Route *route) {
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(req);
|
||||
assert(error_msg);
|
||||
assert(route);
|
||||
|
||||
Link *link = ASSERT_PTR(req->link);
|
||||
|
||||
@@ -806,7 +806,10 @@ int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Re
|
||||
return 1;
|
||||
}
|
||||
if (r < 0) {
|
||||
log_link_message_warning_errno(link, m, r, error_msg);
|
||||
_cleanup_free_ char *str = NULL;
|
||||
(void) route_to_string(route, link->manager, &str);
|
||||
log_link_message_warning_errno(link, m, r, "Failed to configure %s route (%s)",
|
||||
network_config_source_to_string(route->source), strna(str));
|
||||
link_enter_failed(link);
|
||||
return 0;
|
||||
}
|
||||
@@ -1030,9 +1033,11 @@ int link_request_route(
|
||||
static int static_route_handler(sd_netlink *rtnl, sd_netlink_message *m, Request *req, Link *link, Route *route) {
|
||||
int r;
|
||||
|
||||
assert(req);
|
||||
assert(link);
|
||||
assert(route);
|
||||
|
||||
r = route_configure_handler_internal(rtnl, m, req, "Could not set static route");
|
||||
r = route_configure_handler_internal(m, req, route);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ int route_new(Route **ret);
|
||||
int route_new_static(Network *network, const char *filename, unsigned section_line, Route **ret);
|
||||
int route_dup(const Route *src, const RouteNextHop *nh, Route **ret);
|
||||
|
||||
int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Request *req, const char *error_msg);
|
||||
int route_configure_handler_internal(sd_netlink_message *m, Request *req, Route *route);
|
||||
int route_remove(Route *route, Manager *manager);
|
||||
int route_remove_and_cancel(Route *route, Manager *manager);
|
||||
|
||||
|
||||
@@ -56,10 +56,9 @@ static int set_link_handler_internal(
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0) {
|
||||
const char *error_msg;
|
||||
|
||||
error_msg = strjoina("Failed to set ", request_type_to_string(req->type), ignore ? ", ignoring" : "");
|
||||
log_link_message_warning_errno(link, m, r, error_msg);
|
||||
log_link_message_warning_errno(link, m, r, "Failed to set %s%s",
|
||||
request_type_to_string(req->type),
|
||||
ignore ? ", ignoring" : "");
|
||||
|
||||
if (!ignore)
|
||||
link_enter_failed(link);
|
||||
@@ -1073,9 +1072,7 @@ static int link_up_or_down_handler(sd_netlink *rtnl, sd_netlink_message *m, Requ
|
||||
if (r == -ENETDOWN && up && link_up_dsa_slave(link) > 0)
|
||||
log_link_message_debug_errno(link, m, r, "Could not bring up dsa slave, retrying again after dsa master becomes up");
|
||||
else if (r < 0)
|
||||
log_link_message_warning_errno(link, m, r, up ?
|
||||
"Could not bring up interface, ignoring" :
|
||||
"Could not bring down interface, ignoring");
|
||||
log_link_message_warning_errno(link, m, r, "Could not bring %s interface, ignoring", up ? "up" : "down");
|
||||
|
||||
r = link_call_getlink(link, get_link_update_flag_handler);
|
||||
if (r < 0) {
|
||||
@@ -1277,7 +1274,7 @@ int link_request_to_bring_up_or_down(Link *link, bool up) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int link_up_or_down_now_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *msg) {
|
||||
static int link_up_or_down_now_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link, bool up) {
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
@@ -1291,7 +1288,7 @@ static int link_up_or_down_now_handler(sd_netlink *rtnl, sd_netlink_message *m,
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0)
|
||||
log_link_message_warning_errno(link, m, r, msg);
|
||||
log_link_message_warning_errno(link, m, r, "Could not bring %s interface, ignoring", up ? "up" : "down");
|
||||
|
||||
r = link_call_getlink(link, get_link_update_flag_handler);
|
||||
if (r < 0) {
|
||||
@@ -1304,11 +1301,11 @@ static int link_up_or_down_now_handler(sd_netlink *rtnl, sd_netlink_message *m,
|
||||
}
|
||||
|
||||
static int link_up_now_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||
return link_up_or_down_now_handler(rtnl, m, link, "Could not bring up interface, ignoring");
|
||||
return link_up_or_down_now_handler(rtnl, m, link, /* up = */ true);
|
||||
}
|
||||
|
||||
static int link_down_now_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||
return link_up_or_down_now_handler(rtnl, m, link, "Could not bring down interface, ignoring");
|
||||
return link_up_or_down_now_handler(rtnl, m, link, /* up = */ false);
|
||||
}
|
||||
|
||||
int link_up_or_down_now(Link *link, bool up) {
|
||||
|
||||
@@ -233,17 +233,3 @@ int config_parse_mud_url(
|
||||
|
||||
return free_and_replace(*url, unescaped);
|
||||
}
|
||||
|
||||
int log_link_message_full_errno(Link *link, sd_netlink_message *m, int level, int err, const char *msg) {
|
||||
const char *err_msg = NULL;
|
||||
|
||||
/* link may be NULL. */
|
||||
|
||||
(void) sd_netlink_message_read_string(m, NLMSGERR_ATTR_MSG, &err_msg);
|
||||
return log_link_full_errno(link, level, err,
|
||||
"%s: %s%s%s%m",
|
||||
msg,
|
||||
strempty(err_msg),
|
||||
err_msg && !endswith(err_msg, ".") ? "." : "",
|
||||
err_msg ? " " : "");
|
||||
}
|
||||
|
||||
@@ -153,15 +153,34 @@ sd_dhcp_lease_server_type_t dhcp_lease_server_type_from_string(const char *s) _p
|
||||
|
||||
bool link_should_mark_config(Link *link, bool only_static, NetworkConfigSource source, uint8_t protocol);
|
||||
|
||||
int log_link_message_full_errno(Link *link, sd_netlink_message *m, int level, int err, const char *msg);
|
||||
#define log_link_message_error_errno(link, m, err, msg) log_link_message_full_errno(link, m, LOG_ERR, err, msg)
|
||||
#define log_link_message_warning_errno(link, m, err, msg) log_link_message_full_errno(link, m, LOG_WARNING, err, msg)
|
||||
#define log_link_message_notice_errno(link, m, err, msg) log_link_message_full_errno(link, m, LOG_NOTICE, err, msg)
|
||||
#define log_link_message_info_errno(link, m, err, msg) log_link_message_full_errno(link, m, LOG_INFO, err, msg)
|
||||
#define log_link_message_debug_errno(link, m, err, msg) log_link_message_full_errno(link, m, LOG_DEBUG, err, msg)
|
||||
#define log_message_full_errno(m, level, err, msg) log_link_message_full_errno(NULL, m, level, err, msg)
|
||||
#define log_message_error_errno(m, err, msg) log_message_full_errno(m, LOG_ERR, err, msg)
|
||||
#define log_message_warning_errno(m, err, msg) log_message_full_errno(m, LOG_WARNING, err, msg)
|
||||
#define log_message_notice_errno(m, err, msg) log_message_full_errno(m, LOG_NOTICE, err, msg)
|
||||
#define log_message_info_errno(m, err, msg) log_message_full_errno(m, LOG_INFO, err, msg)
|
||||
#define log_message_debug_errno(m, err, msg) log_message_full_errno(m, LOG_DEBUG, err, msg)
|
||||
#define _log_link_message_full_errno(link, link_u, message, error_msg, level, level_u, error, error_u, format, ...) \
|
||||
({ \
|
||||
Link *link_u = (link); \
|
||||
int level_u = (level); \
|
||||
int error_u = (error); \
|
||||
\
|
||||
const char *error_msg = NULL; \
|
||||
if (message) \
|
||||
(void) sd_netlink_message_read_string(message, NLMSGERR_ATTR_MSG, &error_msg); \
|
||||
\
|
||||
error_msg ? \
|
||||
log_link_full_errno(link_u, level_u, error_u, format ": %s%s %m", ##__VA_ARGS__, \
|
||||
error_msg, endswith(error_msg, ".") ? "" : ".") : \
|
||||
log_link_full_errno(link_u, level_u, error_u, format ": %m", ##__VA_ARGS__); \
|
||||
})
|
||||
|
||||
|
||||
#define log_link_message_full_errno(link, message, level, error, format, ...) \
|
||||
_log_link_message_full_errno(link, UNIQ_T(lnk, UNIQ), message, UNIQ_T(emsg, UNIQ), level, UNIQ_T(lvl, UNIQ), error, UNIQ_T(err, UNIQ), format, ##__VA_ARGS__)
|
||||
|
||||
#define log_link_message_error_errno(link, m, err, fmt, ...) log_link_message_full_errno(link, m, LOG_ERR, err, fmt, ##__VA_ARGS__)
|
||||
#define log_link_message_warning_errno(link, m, err, fmt, ...) log_link_message_full_errno(link, m, LOG_WARNING, err, fmt, ##__VA_ARGS__)
|
||||
#define log_link_message_notice_errno(link, m, err, fmt, ...) log_link_message_full_errno(link, m, LOG_NOTICE, err, fmt, ##__VA_ARGS__)
|
||||
#define log_link_message_info_errno(link, m, err, fmt, ...) log_link_message_full_errno(link, m, LOG_INFO, err, fmt, ##__VA_ARGS__)
|
||||
#define log_link_message_debug_errno(link, m, err, fmt, ...) log_link_message_full_errno(link, m, LOG_DEBUG, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_full_errno(m, level, err, fmt, ...) log_link_message_full_errno(NULL, m, level, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_error_errno(m, err, fmt, ...) log_message_full_errno(m, LOG_ERR, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_warning_errno(m, err, fmt, ...) log_message_full_errno(m, LOG_WARNING, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_notice_errno(m, err, fmt, ...) log_message_full_errno(m, LOG_NOTICE, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_info_errno(m, err, fmt, ...) log_message_full_errno(m, LOG_INFO, err, fmt, ##__VA_ARGS__)
|
||||
#define log_message_debug_errno(m, err, fmt, ...) log_message_full_errno(m, LOG_DEBUG, err, fmt, ##__VA_ARGS__)
|
||||
|
||||
Reference in New Issue
Block a user