Work around lack of "onlink" route flag for IPv6 routes
authorTom Hughes <tom@compton.nu>
Wed, 20 Mar 2019 19:03:50 +0000 (19:03 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 20 Mar 2019 19:03:50 +0000 (19:03 +0000)
cookbooks/networking/recipes/default.rb

index aa86de7eb3a44c2898d9051429c8253482e17673..f56689d46d4929c49c6256b806ef97a293c4be44 100644 (file)
@@ -108,6 +108,21 @@ node[:networking][:interfaces].each do |name, interface|
           "metric" => interface[:metric],
           "on-link" => true
         )
+
+        # This ordering relies on systemd-networkd adding routes
+        # in reverse order and will need moving before the previous
+        # route once that is fixed:
+        #
+        # https://github.com/systemd/systemd/issues/5430
+        # https://github.com/systemd/systemd/pull/10938
+        if interface[:family] == "inet6" &&
+           !interface[:network].include?(interface[:gateway]) &&
+           !IPAddr.new("fe80::/64").include?(interface[:gateway])
+          deviceplan["routes"].push(
+            "to" => interface[:gateway],
+            "scope" => "link"
+          )
+        end
       end
     end
   else