network: process address reply message
This commit is contained in:
parent
7ed5420ab2
commit
73854ba1a0
|
@ -460,8 +460,8 @@ static int dhcp4_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *
|
|||
link_enter_failed(link);
|
||||
return 1;
|
||||
}
|
||||
|
||||
manager_rtnl_process_address(rtnl, m, link->manager);
|
||||
if (r >= 0)
|
||||
manager_rtnl_process_address(rtnl, m, link->manager);
|
||||
|
||||
r = link_set_dhcp_routes(link);
|
||||
if (r < 0) {
|
||||
|
|
|
@ -408,8 +408,9 @@ static int dhcp6_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *
|
|||
log_link_error_errno(link, r, "Could not set DHCPv6 address: %m");
|
||||
|
||||
link_enter_failed(link);
|
||||
|
||||
} else if (r >= 0)
|
||||
return 1;
|
||||
}
|
||||
if (r >= 0)
|
||||
manager_rtnl_process_address(rtnl, m, link->manager);
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include "missing_network.h"
|
||||
#include "networkd-dhcp6.h"
|
||||
#include "networkd-manager.h"
|
||||
#include "networkd-ndisc.h"
|
||||
#include "networkd-route.h"
|
||||
#include "strv.h"
|
||||
|
@ -18,7 +19,7 @@
|
|||
#define NDISC_RDNSS_MAX 64U
|
||||
#define NDISC_PREFIX_LFT_MIN 7200U
|
||||
|
||||
static int ndisc_netlink_message_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||
static int ndisc_netlink_route_message_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
@ -38,6 +39,28 @@ static int ndisc_netlink_message_handler(sd_netlink *rtnl, sd_netlink_message *m
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int ndisc_netlink_address_message_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(link->ndisc_messages > 0);
|
||||
|
||||
link->ndisc_messages--;
|
||||
|
||||
r = sd_netlink_message_get_errno(m);
|
||||
if (r < 0 && r != -EEXIST)
|
||||
log_link_error_errno(link, r, "Could not set NDisc route or address: %m");
|
||||
else if (r >= 0)
|
||||
manager_rtnl_process_address(rtnl, m, link->manager);
|
||||
|
||||
if (link->ndisc_messages == 0) {
|
||||
link->ndisc_configured = true;
|
||||
link_check_ready(link);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int ndisc_router_process_default(Link *link, sd_ndisc_router *rt) {
|
||||
_cleanup_(route_freep) Route *route = NULL;
|
||||
union in_addr_union gateway;
|
||||
|
@ -116,7 +139,7 @@ static int ndisc_router_process_default(Link *link, sd_ndisc_router *rt) {
|
|||
route->lifetime = time_now + lifetime * USEC_PER_SEC;
|
||||
route->mtu = mtu;
|
||||
|
||||
r = route_configure(route, link, ndisc_netlink_message_handler);
|
||||
r = route_configure(route, link, ndisc_netlink_route_message_handler);
|
||||
if (r < 0) {
|
||||
log_link_warning_errno(link, r, "Could not set default route: %m");
|
||||
link_enter_failed(link);
|
||||
|
@ -204,7 +227,7 @@ static int ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *r
|
|||
if (address->cinfo.ifa_valid == 0)
|
||||
return 0;
|
||||
|
||||
r = address_configure(address, link, ndisc_netlink_message_handler, true);
|
||||
r = address_configure(address, link, ndisc_netlink_address_message_handler, true);
|
||||
if (r < 0) {
|
||||
log_link_warning_errno(link, r, "Could not set SLAAC address: %m");
|
||||
link_enter_failed(link);
|
||||
|
@ -254,7 +277,7 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) {
|
|||
if (r < 0)
|
||||
return log_link_error_errno(link, r, "Failed to get prefix address: %m");
|
||||
|
||||
r = route_configure(route, link, ndisc_netlink_message_handler);
|
||||
r = route_configure(route, link, ndisc_netlink_route_message_handler);
|
||||
if (r < 0) {
|
||||
log_link_warning_errno(link, r, "Could not set prefix route: %m");
|
||||
link_enter_failed(link);
|
||||
|
@ -315,7 +338,7 @@ static int ndisc_router_process_route(Link *link, sd_ndisc_router *rt) {
|
|||
if (r < 0)
|
||||
return log_link_error_errno(link, r, "Failed to get route address: %m");
|
||||
|
||||
r = route_configure(route, link, ndisc_netlink_message_handler);
|
||||
r = route_configure(route, link, ndisc_netlink_route_message_handler);
|
||||
if (r < 0) {
|
||||
log_link_warning_errno(link, r, "Could not set additional route: %m");
|
||||
link_enter_failed(link);
|
||||
|
|
Loading…
Reference in New Issue