anchor.diff:        let
           defined = x: x != "_mkMergedOptionModule";
         in [
  +        (mkChangedOptionModule [ "preferTempAddress" ] [ "tempAddress" ]
  +         (config:
  +          let bool = getAttrFromPath [ "preferTempAddress" ] config;
  +          in if bool then "default" else "enabled"
  +        ))
           (mkRenamedOptionModule [ "ip4" ] [ "ipv4" "addresses"])
           (mkRenamedOptionModule [ "ip6" ] [ "ipv6" "addresses"])
           (mkRemovedOptionModule [ "subnetMask" ] ''
  
positive.code:           The networking.interfaces."${i.name}" must not have any defined ips when it is a slave.
          '';
        })) ++ (forEach interfaces (i: {
          assertion = i.preferTempAddress -> cfg.enableIPv6;
          message = ''
            Temporary addresses are only needed when IPv6 is enabled.
          '';
  
negative.code:       "net.ipv6.conf.all.forwarding" = mkDefault (any (i: i.proxyARP) interfaces);
      } // listToAttrs (flip concatMap (filter (i: i.proxyARP) interfaces)
          (i: forEach [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${replaceChars ["."] ["/"] i.name}.proxy_arp" true)))
        // listToAttrs (forEach interfaces
          (i: let
            opt = i.tempAddress;
            val = { disabled = 0; enabled = 1; default = 2; }.${opt};
           in nameValuePair "net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr" val));
  
      # Capabilities won't work unless we have at-least a 4.3 Linux
      # kernel because we need the ambient capability
  