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
[email protected]
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).
_______________________________________________
nix-dev mailing list
[email protected]
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to