diff -ur network-scripts.orig/scripts/rc.inet1 network-scripts/scripts/rc.inet1
--- network-scripts.orig/scripts/rc.inet1	2012-12-05 23:18:37.851660262 +1100
+++ network-scripts/scripts/rc.inet1	2012-12-12 20:38:41.749360737 +1100
@@ -95,6 +95,41 @@
   /sbin/brctl delbr ${IFNAME[$1]}
 }
 
+dhcp_start() {
+        # Clear DHCP_OPTIONS before adding new options to it:
+        unset DHCP_OPTIONS
+        # Set DHCP_OPTIONS for this interface:
+        [ ${DHCP_HOSTNAME[$i]} ] && DHCP_OPTIONS="-h ${DHCP_HOSTNAME[$i]}"
+        [ "${DHCP_KEEPRESOLV[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C resolv.conf"
+        [ "${DHCP_KEEPNTP[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C ntp.conf"
+        [ "${DHCP_KEEPGW[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -G"
+        [ "${DHCP_DEBUG[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -d"
+        [ "${DHCP_NOIPV4LL[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -L"
+        [ ${DHCP_IPADDR[$i]} ] && DHCP_OPTIONS="$DHCP_OPTIONS -r ${DHCP_IPADDR[$i]}"
+        echo "Polling for DHCP server on interface ${1}:"
+        # If you set a timeout, you get one, even if the kernel doesn't think that
+        # your device is connected, in case /sys isn't right (which it usually isn't
+        # except right after the device is loaded, when it usually is):
+        #### (start commented out)
+        # This is deactivated for now since the kernel has been returning incorrect
+        # results concerning whether the interface carrier is detected.
+        #if [ "${DHCP_TIMEOUT[$i]}" = "" ]; then
+        #  ifconfig ${1} up && sleep 1
+        #  CONNSTATUS="$(cat /sys/class/net/${1}/carrier 2> /dev/null)"
+        #  ifconfig ${1} down
+        #  if [ "$CONNSTATUS" = "0" ]; then
+        #    # The kernel has just told us the cable isn't even plugged in, but we will
+        #    # give any DHCP server a short chance to reply anyway:
+        #    echo "No carrier detected on ${1}.  Reducing DHCP timeout to 10 seconds."
+        #    DHCP_TIMEOUT[$i]=10
+        #  fi
+        #fi
+        #### (end commented out)
+        # 10 seconds should be a reasonable default DHCP timeout.  30 was too much.
+        echo "/etc/rc.d/rc.inet1:  /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}" | $LOGGER
+        /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}
+}
+
 # Function to bring up a network interface.  If the interface is
 # already up or does not yet exist (perhaps because the kernel driver
 # is not loaded yet), do nothing.
@@ -130,38 +165,7 @@
         . /etc/rc.d/rc.wireless ${1} start # Initialize any wireless parameters
       fi
       if [ "${USE_DHCP[$i]}" = "yes" ]; then # use DHCP to bring interface up
-        # Clear DHCP_OPTIONS before adding new options to it:
-        unset DHCP_OPTIONS
-        # Set DHCP_OPTIONS for this interface:
-        [ ${DHCP_HOSTNAME[$i]} ] && DHCP_OPTIONS="-h ${DHCP_HOSTNAME[$i]}"
-        [ "${DHCP_KEEPRESOLV[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C resolv.conf"
-        [ "${DHCP_KEEPNTP[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -C ntp.conf"
-        [ "${DHCP_KEEPGW[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -G"
-        [ "${DHCP_DEBUG[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -d"
-        [ "${DHCP_NOIPV4LL[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -L"
-        [ ${DHCP_IPADDR[$i]} ] && DHCP_OPTIONS="$DHCP_OPTIONS -r ${DHCP_IPADDR[$i]}"
-        echo "Polling for DHCP server on interface ${1}:"
-        # If you set a timeout, you get one, even if the kernel doesn't think that
-        # your device is connected, in case /sys isn't right (which it usually isn't
-        # except right after the device is loaded, when it usually is):
-        #### (start commented out)
-        # This is deactivated for now since the kernel has been returning incorrect
-        # results concerning whether the interface carrier is detected.
-        #if [ "${DHCP_TIMEOUT[$i]}" = "" ]; then
-        #  ifconfig ${1} up && sleep 1
-        #  CONNSTATUS="$(cat /sys/class/net/${1}/carrier 2> /dev/null)"
-        #  ifconfig ${1} down
-        #  if [ "$CONNSTATUS" = "0" ]; then
-        #    # The kernel has just told us the cable isn't even plugged in, but we will
-        #    # give any DHCP server a short chance to reply anyway:
-        #    echo "No carrier detected on ${1}.  Reducing DHCP timeout to 10 seconds."
-        #    DHCP_TIMEOUT[$i]=10
-        #  fi
-        #fi
-        #### (end commented out)
-        # 10 seconds should be a reasonable default DHCP timeout.  30 was too much.
-        echo "/etc/rc.d/rc.inet1:  /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}" | $LOGGER
-        /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}
+        dhcp_start
       else # bring up interface using a static IP address
         if [ ! "${IPADDR[$i]}" = "" ]; then # skip unconfigured interfaces
           # Determine broadcast address from the IP address and netmask:
@@ -175,6 +179,20 @@
           fi
         fi
       fi
+      if [ "${USE_DHCPv6[$i]}" = "yes" ]; then # use DHCP to bring interface up
+        if [ ! "${USE_DHCP[$i]}" = "yes" ]; then # Check DHCP not started above
+          dhcp_start
+        fi
+      else # bring up interface using a static IPv6 address
+        if [ ! "${IPv6ADDR[$i]}" = "" ]; then # skip unconfigured interfaces
+          echo "/etc/rc.d/rc.inet1:  /sbin/ifconfig ${1} add ${IPv6ADDR[$i]}" | $LOGGER
+          /sbin/ifconfig ${1} add ${IPv6ADDR[$i]}
+        else
+          if [ "$DEBUG_ETH_UP" = "yes" ]; then
+            echo "/etc/rc.d/rc.inet1:  ${1} interface is not configured for IPv6 in /etc/rc.d/rc.inet1.conf" | $LOGGER
+          fi
+        fi
+      fi
     else
       if [ "$DEBUG_ETH_UP" = "yes" ]; then
         echo "/etc/rc.d/rc.inet1:  ${1} is already up, skipping" | $LOGGER
diff -ur network-scripts.orig/scripts/rc.inet1.conf network-scripts/scripts/rc.inet1.conf
--- network-scripts.orig/scripts/rc.inet1.conf	2012-12-05 23:18:37.899660241 +1100
+++ network-scripts/scripts/rc.inet1.conf	2012-12-12 20:41:53.804930526 +1100
@@ -18,24 +18,32 @@
 NETMASK[0]=""
 USE_DHCP[0]=""
 DHCP_HOSTNAME[0]=""
+IPv6ADDR[0]=""
+USE_DHCPv6[0]=""
 
 # Config information for eth1:
 IPADDR[1]=""
 NETMASK[1]=""
 USE_DHCP[1]=""
 DHCP_HOSTNAME[1]=""
+IPv6ADDR[1]=""
+USE_DHCPv6[1]=""
 
 # Config information for eth2:
 IPADDR[2]=""
 NETMASK[2]=""
 USE_DHCP[2]=""
 DHCP_HOSTNAME[2]=""
+IPv6ADDR[2]=""
+USE_DHCPv6[2]=""
 
 # Config information for eth3:
 IPADDR[3]=""
 NETMASK[3]=""
 USE_DHCP[3]=""
 DHCP_HOSTNAME[3]=""
+IPv6ADDR[3]=""
+USE_DHCPv6[3]=""
 
 # Default gateway IP address:
 GATEWAY=""
@@ -61,6 +69,8 @@
 #IPADDR[4]=""
 #NETMASK[4]=""
 #USE_DHCP[4]="yes"
+#IPv6ADDR[4]=""
+#USE_DHCPv6[4]=""
 #DHCP_HOSTNAME[4]="icculus-wireless"
 #DHCP_KEEPRESOLV[4]="yes"
 #DHCP_KEEPNTP[4]="yes"
