]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: move and rename network_get() -> link_get_network()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 12 May 2021 11:58:06 +0000 (20:58 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 14 May 2021 00:18:29 +0000 (09:18 +0900)
This also drops test_network_get(). But it tests almost nothing. So, it
should be ok to not re-implement something like test_link_get_network().

src/network/networkd-link.c
src/network/networkd-network.c
src/network/networkd-network.h
src/network/test-network.c

index 152ac05e7c75a407b5e7caae1e90f48658be3dbd..7c24138a4a5332e8f6e655cd8cadac5ea4f093ed 100644 (file)
@@ -2226,6 +2226,55 @@ static int link_configure_continue(Link *link) {
         return link_enter_join_netdev(link);
 }
 
+static int link_get_network(Link *link, Network **ret) {
+        Network *network;
+
+        assert(link);
+        assert(link->manager);
+        assert(ret);
+
+        ORDERED_HASHMAP_FOREACH(network, link->manager->networks) {
+                bool warn = false;
+
+                if (!net_match_config(
+                                &network->match,
+                                link->sd_device,
+                                &link->hw_addr.addr.ether,
+                                &link->permanent_mac,
+                                link->driver,
+                                link->iftype,
+                                link->ifname,
+                                link->alternative_names,
+                                link->wlan_iftype,
+                                link->ssid,
+                                &link->bssid))
+                        continue;
+
+                if (network->match.ifname && link->sd_device) {
+                        uint8_t name_assign_type = NET_NAME_UNKNOWN;
+                        const char *attr;
+
+                        if (sd_device_get_sysattr_value(link->sd_device, "name_assign_type", &attr) >= 0)
+                                (void) safe_atou8(attr, &name_assign_type);
+
+                        warn = name_assign_type == NET_NAME_ENUM;
+                }
+
+                log_link_full(link, warn ? LOG_WARNING : LOG_DEBUG,
+                              "found matching network '%s'%s.",
+                              network->filename,
+                              warn ? ", based on potentially unpredictable interface name" : "");
+
+                if (network->unmanaged)
+                        return -ENOENT;
+
+                *ret = network;
+                return 0;
+        }
+
+        return -ENOENT;
+}
+
 static int link_reconfigure_internal(Link *link, sd_netlink_message *m, bool force) {
         _cleanup_strv_free_ char **s = NULL;
         Network *network;
@@ -2243,17 +2292,12 @@ static int link_reconfigure_internal(Link *link, sd_netlink_message *m, bool for
 
         strv_free_and_replace(link->alternative_names, s);
 
-        r = network_get(link->manager, link->iftype, link->sd_device,
-                        link->ifname, link->alternative_names, link->driver,
-                        &link->hw_addr.addr.ether, &link->permanent_mac,
-                        link->wlan_iftype, link->ssid, &link->bssid, &network);
+        r = link_get_network(link, &network);
         if (r == -ENOENT) {
                 link_enter_unmanaged(link);
                 return 0;
-        } else if (r == 0 && network->unmanaged) {
-                link_enter_unmanaged(link);
-                return 0;
-        } else if (r < 0)
+        }
+        if (r < 0)
                 return r;
 
         if (link->network == network && !force)
@@ -2377,17 +2421,12 @@ static int link_initialized_and_synced(Link *link) {
                 if (r < 0)
                         return r;
 
-                r = network_get(link->manager, link->iftype, link->sd_device,
-                                link->ifname, link->alternative_names, link->driver,
-                                &link->hw_addr.addr.ether, &link->permanent_mac,
-                                link->wlan_iftype, link->ssid, &link->bssid, &network);
+                r = link_get_network(link, &network);
                 if (r == -ENOENT) {
                         link_enter_unmanaged(link);
                         return 0;
-                } else if (r == 0 && network->unmanaged) {
-                        link_enter_unmanaged(link);
-                        return 0;
-                } else if (r < 0)
+                }
+                if (r < 0)
                         return r;
 
                 if (link->flags & IFF_LOOPBACK) {
index 8b236342b50b2cc935021be26008682c0a442fc7..482c31064fc2d7ea7bd346f946bfeabeebc7c13a 100644 (file)
@@ -646,43 +646,6 @@ int network_get_by_name(Manager *manager, const char *name, Network **ret) {
         return 0;
 }
 
-int network_get(Manager *manager, unsigned short iftype, sd_device *device,
-                const char *ifname, char * const *alternative_names, const char *driver,
-                const struct ether_addr *mac, const struct ether_addr *permanent_mac,
-                enum nl80211_iftype wlan_iftype, const char *ssid, const struct ether_addr *bssid,
-                Network **ret) {
-        Network *network;
-
-        assert(manager);
-        assert(ret);
-
-        ORDERED_HASHMAP_FOREACH(network, manager->networks)
-                if (net_match_config(&network->match, device, mac, permanent_mac, driver, iftype,
-                                     ifname, alternative_names, wlan_iftype, ssid, bssid)) {
-                        if (network->match.ifname && device) {
-                                const char *attr;
-                                uint8_t name_assign_type = NET_NAME_UNKNOWN;
-
-                                if (sd_device_get_sysattr_value(device, "name_assign_type", &attr) >= 0)
-                                        (void) safe_atou8(attr, &name_assign_type);
-
-                                if (name_assign_type == NET_NAME_ENUM)
-                                        log_warning("%s: found matching network '%s', based on potentially unpredictable ifname",
-                                                    ifname, network->filename);
-                                else
-                                        log_debug("%s: found matching network '%s'", ifname, network->filename);
-                        } else
-                                log_debug("%s: found matching network '%s'", ifname, network->filename);
-
-                        *ret = network;
-                        return 0;
-                }
-
-        *ret = NULL;
-
-        return -ENOENT;
-}
-
 bool network_has_static_ipv6_configurations(Network *network) {
         Address *address;
         Route *route;
index c094065a8315c3ee04c99e7c06b2c7467c57a4e7..e27a27cd02dcaea38ffa165457722618c075cf16 100644 (file)
@@ -341,11 +341,6 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
 int network_verify(Network *network);
 
 int network_get_by_name(Manager *manager, const char *name, Network **ret);
-int network_get(Manager *manager, unsigned short iftype, sd_device *device,
-                const char *ifname, char * const *alternative_names, const char *driver,
-                const struct ether_addr *mac, const struct ether_addr *permanent_mac,
-                enum nl80211_iftype wlan_iftype, const char *ssid, const struct ether_addr *bssid,
-                Network **ret);
 void network_apply_anonymize_if_set(Network *network);
 
 bool network_has_static_ipv6_configurations(Network *network);
index 25ff3a33a897093eb044ccec8ff56211ccbda667..09e7b99d239943efccb701c5502eafe4bdc26074 100644 (file)
@@ -168,23 +168,6 @@ static int test_load_config(Manager *manager) {
         return 0;
 }
 
-static void test_network_get(Manager *manager, sd_device *loopback) {
-        Network *network;
-        const struct ether_addr mac = ETHER_ADDR_NULL;
-        int r;
-
-        /* Let's hope that the test machine does not have a .network file that applies to loopback deviceā€¦
-         * But it is still possible, so let's allow that case too. */
-        r = network_get(manager, 0, loopback, "lo", NULL, NULL, &mac, &mac, 0, NULL, NULL, &network);
-        if (r == -ENOENT)
-                /* The expected case */
-                assert_se(!network);
-        else if (r >= 0)
-                assert_se(network);
-        else
-                assert_not_reached("bad error!");
-}
-
 static void test_address_equality(void) {
         _cleanup_(address_freep) Address *a1 = NULL, *a2 = NULL;
 
@@ -277,8 +260,7 @@ static void test_dhcp_hostname_shorten_overlong(void) {
 
 int main(void) {
         _cleanup_(manager_freep) Manager *manager = NULL;
-        _cleanup_(sd_device_unrefp) sd_device *loopback = NULL;
-        int ifindex, r;
+        int r;
 
         test_setup_logging(LOG_INFO);
 
@@ -293,15 +275,9 @@ int main(void) {
 
         r = test_load_config(manager);
         if (r == -EPERM)
-                return log_tests_skipped("Cannot load configuration");
-        assert_se(r == 0);
-
-        assert_se(sd_device_new_from_syspath(&loopback, "/sys/class/net/lo") >= 0);
-        assert_se(loopback);
-        assert_se(sd_device_get_ifindex(loopback, &ifindex) >= 0);
-        assert_se(ifindex == 1);
-
-        test_network_get(manager, loopback);
+                log_debug("Cannot load configuration, ignoring.");
+        else
+                assert_se(r == 0);
 
         assert_se(manager_enumerate(manager) >= 0);
         return 0;