Add DHCPv6 to trellis script

Change-Id: Idbebc1597c41eb942894d0c3b9a260e9dfa14bfc
diff --git a/trellis/trellislib.py b/trellis/trellislib.py
index 7242908..1a9d626 100644
--- a/trellis/trellislib.py
+++ b/trellis/trellislib.py
@@ -7,7 +7,7 @@
 import sys
 sys.path.append('..')
 from mininet.node import Host
-from routinglib import RoutedHost, Router
+from routinglib import RoutedHost, RoutedHost6, Router
 
 class TaggedRoutedHost(RoutedHost):
     """Host that can be configured with multiple IP addresses."""
@@ -38,11 +38,12 @@
     def __init__(self, name, *args, **kwargs):
         super(DhcpClient, self).__init__(name, **kwargs)
         self.pidFile = '/run/dhclient-%s.pid' % self.name
+        self.leaseFile = '/var/lib/dhcp/dhcpclient-%s.lease' % (self.name, )
 
     def config(self, **kwargs):
         super(DhcpClient, self).config(**kwargs)
         self.cmd('ip addr flush dev %s' % self.defaultIntf())
-        self.cmd('dhclient -q -4 -nw -pf %s %s' % (self.pidFile, self.defaultIntf()))
+        self.cmd('dhclient -q -4 -nw -pf %s -lf %s %s' % (self.pidFile, self.leaseFile, self.defaultIntf()))
 
     def terminate(self, **kwargs):
         self.cmd('kill -9 `cat %s`' % self.pidFile)
@@ -53,13 +54,14 @@
     def __init__(self, name, *args, **kwargs):
         super(Dhcp6Client, self).__init__(name, **kwargs)
         self.pidFile = '/run/dhclient-%s.pid' % self.name
+        self.leaseFile = '/var/lib/dhcp/dhcpclient6-%s.lease' % (self.name, )
 
     def config(self, **kwargs):
         super(Dhcp6Client, self).config(**kwargs)
         self.cmd('ip addr flush dev %s' % self.defaultIntf())
         linkLocalAddr = mac_to_ipv6_linklocal(kwargs['mac'])
         self.cmd('ip -6 addr add dev %s scope link %s' % (self.defaultIntf(), linkLocalAddr))
-        self.cmd('dhclient -q -6 -nw -pf %s %s' % (self.pidFile, self.defaultIntf()))
+        self.cmd('dhclient -q -6 -nw -pf %s -lf %s %s' % (self.pidFile, self.leaseFile, self.defaultIntf()))
 
     def terminate(self, **kwargs):
         self.cmd('kill -9 `cat %s`' % self.pidFile)
@@ -68,11 +70,13 @@
 
 class DhcpServer(RoutedHost):
     binFile = '/usr/sbin/dhcpd'
-    pidFile = '/run/dhcp-server/dhcpd.pid'
+    pidFile = '/run/dhcp-server-dhcpd.pid'
     configFile = './dhcpd.conf'
+    leasesFile = '/var/lib/dhcp/dhcpd.leases'
 
     def config(self, **kwargs):
         super(DhcpServer, self).config(**kwargs)
+        self.cmd('touch %s' % self.leasesFile)
         self.cmd('%s -q -4 -pf %s -cf %s %s' % (self.binFile, self.pidFile, self.configFile, self.defaultIntf()))
 
     def terminate(self, **kwargs):
@@ -80,9 +84,9 @@
         self.cmd('rm -rf %s' % self.pidFile)
         super(DhcpServer, self).terminate()
 
-class Dhcp6Server(RoutedHost):
+class Dhcp6Server(RoutedHost6):
     binFile = '/usr/sbin/dhcpd'
-    pidFile = '/run/dhcp-server/dhcpd6.pid'
+    pidFile = '/run/dhcp-server-dhcpd6.pid'
     configFile = './dhcpd6.conf'
     leasesFile = '/var/lib/dhcp/dhcpd6.leases'