]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/network/networkd-link.c
Merge pull request #10948 from ssahani/iprule-port-proto
[thirdparty/systemd.git] / src / network / networkd-link.c
index 02b102a47f6c6ef2ca826555506bcb8aec2bb96d..c6ad712a0249fc1492970be3bdba36f0caa88a3f 100644 (file)
@@ -861,16 +861,30 @@ static int link_enter_set_routes(Link *link) {
 
         link_set_state(link, LINK_STATE_SETTING_ROUTES);
 
-        LIST_FOREACH(routes, rt, link->network->static_routes) {
-                r = route_configure(rt, link, route_handler);
-                if (r < 0) {
-                        log_link_warning_errno(link, r, "Could not set routes: %m");
-                        link_enter_failed(link);
-                        return r;
+        /* First add the default route i.e. Gateway.*/
+        LIST_FOREACH(routes, rt, link->network->static_routes)
+                if (in_addr_is_null(rt->family, &rt->gw)) {
+                        r = route_configure(rt, link, route_handler);
+                        if (r < 0) {
+                                log_link_warning_errno(link, r, "Could not set routes: %m");
+                                link_enter_failed(link);
+                                return r;
+                        }
+
+                        link->route_messages++;
                 }
 
-                link->route_messages++;
-        }
+        LIST_FOREACH(routes, rt, link->network->static_routes)
+                if (!in_addr_is_null(rt->family, &rt->gw)) {
+                        r = route_configure(rt, link, route_handler);
+                        if (r < 0) {
+                                log_link_warning_errno(link, r, "Could not set routes: %m");
+                                link_enter_failed(link);
+                                return r;
+                        }
+
+                        link->route_messages++;
+                }
 
         if (link->route_messages == 0) {
                 link->static_routes_configured = true;