anchor.diff:        "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 (filter (i: i.preferTempAddress) interfaces)
  -        (i: nameValuePair "net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr" 2));
  +      // 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
  
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:       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" ] ''
  