diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-07-24 14:46:55 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-10-15 01:59:06 +0900 |
commit | 8d968fdd991d3471aa9b484eac58708786c48d85 (patch) | |
tree | 995c8ba42dab376d1d8c9ce1e7bae4989fe7cd6b /src/network/networkd-link.c | |
parent | ad932b156c159094148bfbb508641fb818f932f1 (diff) | |
download | systemd-8d968fdd991d3471aa9b484eac58708786c48d85.tar.gz |
network: support matching based on wifi SSID
Diffstat (limited to 'src/network/networkd-link.c')
-rw-r--r-- | src/network/networkd-link.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 328295e98a..7f00337f13 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -33,6 +33,7 @@ #include "networkd-neighbor.h" #include "networkd-radv.h" #include "networkd-routing-policy-rule.h" +#include "networkd-wifi.h" #include "set.h" #include "socket-util.h" #include "stdio-util.h" @@ -712,6 +713,7 @@ static Link *link_free(Link *link) { free(link->ifname); free(link->kind); + free(link->ssid); (void) unlink(link->state_file); free(link->state_file); @@ -2863,7 +2865,7 @@ int link_reconfigure(Link *link) { return 0; r = network_get(link->manager, link->sd_device, link->ifname, - &link->mac, &network); + &link->mac, link->ssid, &network); if (r == -ENOENT) { link_enter_unmanaged(link); return 0; @@ -2952,8 +2954,12 @@ static int link_initialized_and_synced(Link *link) { return r; if (!link->network) { + r = wifi_get_ssid(link); + if (r < 0) + return r; + r = network_get(link->manager, link->sd_device, link->ifname, - &link->mac, &network); + &link->mac, link->ssid, &network); if (r == -ENOENT) { link_enter_unmanaged(link); return 0; @@ -3327,6 +3333,15 @@ static int link_carrier_gained(Link *link) { assert(link); + r = wifi_get_ssid(link); + if (r < 0) + return r; + if (r > 0) { + r = link_reconfigure(link); + if (r < 0) + return r; + } + if (IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED)) { r = link_acquire_conf(link); if (r < 0) { |