[Nix-dev] Re: [Nix-commits] SVN commit: nix - r26279 - in nixos/trunk: lib modules/tasks

Shea Levy shea at shealevy.com
Fri Mar 11 16:00:50 CET 2011


On 3/11/11 9:50 AM, Eelco Dolstra wrote:
> Author: eelco
> Date: Fri Mar 11 14:50:11 2011
> New Revision: 26279
> URL: https://svn.nixos.org/websvn/nix/?rev=26279&sc=1
>
> Log:
> * Use "ip" instead of "ifconfig" for setting up network interfaces,
>    since the latter is rather deprecated and has been unmaintained
>    since 2001.  Note that "ip" doesn't know about classful addressing,
>    so you can no longer get away with not specifying the subnet mask
>    for explicitly configured interfaces.  So if you had
>
>      networking.interfaces =
>        [ { name = "eth0"; ipAddress = "192.168.1.1"; } ];
>
>    this should be changed to
>
>      networking.interfaces =
>        [ { name = "eth0";
>            ipAddress = "192.168.1.1";
>            subnetMask = "255.255.255.0";
>          }
>       ];
>
>    otherwise you end up with a subnet mask of 255.255.255.255.
>
> Modified:
>     nixos/trunk/lib/build-vms.nix
>     nixos/trunk/modules/tasks/network-interfaces.nix
>
> Modified: nixos/trunk/lib/build-vms.nix
> ==============================================================================
> --- nixos/trunk/lib/build-vms.nix	Fri Mar 11 13:59:01 2011	(r26278)
> +++ nixos/trunk/lib/build-vms.nix	Fri Mar 11 14:50:11 2011	(r26279)
> @@ -51,6 +51,7 @@
>                   lib.flip map interfacesNumbered ({ first, second }:
>                     { name = "eth${toString second}";
>                       ipAddress = "192.168.${toString first}.${toString m.second}";
> +                    subnetMask = "255.255.255.0";
>                     }
>                   );
>               in
>
> Modified: nixos/trunk/modules/tasks/network-interfaces.nix
> ==============================================================================
> --- nixos/trunk/modules/tasks/network-interfaces.nix	Fri Mar 11 13:59:01 2011	(r26278)
> +++ nixos/trunk/modules/tasks/network-interfaces.nix	Fri Mar 11 14:50:11 2011	(r26279)
> @@ -4,12 +4,8 @@
>
>   let
>
> -  inherit (pkgs) nettools;
> -
>     cfg = config.networking;
>
> -  ifconfig = "${nettools}/sbin/ifconfig";
> -
>   in
>
>   {
> @@ -166,33 +162,28 @@
>
>           preStart =
>             ''
> -            ${pkgs.lib.concatMapStrings (i:
> -              if i.macAddress != "" then
> -                ''
> -                  echo "Configuring interface ${i.name}..."
> -                  ${ifconfig} "${i.name}" down || true
> -                  ${ifconfig} "${i.name}" hw ether "${i.macAddress}" || true
> +            ${flip concatMapStrings cfg.interfaces (i:
> +              optionalString (i.macAddress != "")
>                   ''
> -              else "") cfg.interfaces
> +                  echo "Setting MAC address of ${i.name} to ${i.macAddress}..."
> +                  ip link set "${i.name}" address "${i.macAddress}" || true
> +                '')
>               }
>
>               for i in $(cd /sys/class/net&&  ls -d *); do
>                   echo "Bringing up network device $i..."
> -                ${ifconfig} $i up || true
> +                ip link set "$i" up || true
>               done
>
>               # Configure the manually specified interfaces.
> -            ${pkgs.lib.concatMapStrings (i:
> -              if i.ipAddress != "" then
> +            ${flip concatMapStrings cfg.interfaces (i:
> +              optionalString (i.ipAddress != "")
>                   ''
>                     echo "Configuring interface ${i.name}..."
> -                  extraFlags=
> -                  if test -n "${i.subnetMask}"; then
> -                      extraFlags="$extraFlags netmask ${i.subnetMask}"
> -                  fi
> -                  ${ifconfig} "${i.name}" "${i.ipAddress}" $extraFlags || true
> -                ''
> -              else "") cfg.interfaces}
> +                  ip addr add "${i.ipAddress}""${optionalString (i.subnetMask != "") ("/" + i.subnetMask)}" \
> +                    dev "${i.name}" || true
> +                '')
> +            }
>
>               # Set the nameservers.
>               if test -n "${toString cfg.nameservers}"; then
> @@ -206,9 +197,9 @@
>               fi
>
>               # Set the default gateway.
> -            if test -n "${cfg.defaultGateway}"; then
> -                ${nettools}/sbin/route add default gw "${cfg.defaultGateway}" || true
> -            fi
> +            ${optionalString (cfg.defaultGateway != "") ''
> +                ip route add default via "${cfg.defaultGateway}" || true
> +            ''}
>
>               # Run any user-specified commands.
>               ${pkgs.stdenv.shell} ${pkgs.writeText "local-net-cmds" cfg.localCommands} || true
> @@ -218,14 +209,6 @@
>                 initctl emit -n ip-up
>               ''}
>             '';
> -
> -        postStop =
> -          ''
> -            #for i in $(cd /sys/class/net&&  ls -d *); do
> -            #    echo "Taking down network device $i..."
> -            #    ${ifconfig} $i down || true
> -            #done
> -          '';
>         };
>
>       # Set the host name in the activation script.  Don't clear it if
> _______________________________________________
> nix-commits mailing list
> nix-commits at cs.uu.nl
> http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Have you checked if wicid works with this change? It was a while back, 
but I remember having trouble running wicid on a system that used 
iproute2 instead of net-tools (something to do with hard-wired calls to 
ifconfig IIRC).



More information about the nix-dev mailing list