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;
'25-route-section.network', '25-route-type.network', '25-route-tcp-window-settings.network',
'25-route-gateway.network', '25-route-gateway-on-link.network',
'25-address-link-section.network', '25-ipv6-address-label-section.network', '25-link-section-unmanaged.network',
- '25-sysctl.network']
+ '25-sysctl.network', '25-route-reverse-order.network']
def setUp(self):
self.link_remove(self.links)
self.assertRegex(output, 'static')
self.assertRegex(output, '192.168.0.0/24')
+ def test_ip_route_reverse(self):
+ self.copy_unit_to_networkd_unit_path('25-route-reverse-order.network', '12-dummy.netdev')
+ self.start_networkd()
+
+ self.assertTrue(self.link_exits('dummy98'))
+
+ output = subprocess.check_output(['ip', '-6', 'route', 'show', 'dev', 'dummy98']).rstrip().decode('utf-8')
+ print(output)
+ self.assertRegex(output, '2001:1234:5:8fff:ff:ff:ff:ff')
+ self.assertRegex(output, '2001:1234:5:8f63::1')
+
def test_ip_route_blackhole_unreachable_prohibit(self):
self.copy_unit_to_networkd_unit_path('25-route-type.network', '12-dummy.netdev')
self.start_networkd()