components/openstack/neutron/files/agent/solaris/net_lib.py
changeset 4975 6445e44cfccd
parent 3998 5bd484384122
child 5405 66fd59fecd68
--- a/components/openstack/neutron/files/agent/solaris/net_lib.py	Tue Oct 13 09:20:24 2015 -0700
+++ b/components/openstack/neutron/files/agent/solaris/net_lib.py	Fri Oct 16 15:53:02 2015 -0700
@@ -82,8 +82,7 @@
             if temp:
                 cmd.append('-t')
             self.execute_with_pfexec(cmd)
-
-        if self.ipaddr_exists(self._ifname, ipaddr):
+        elif self.ipaddr_exists(self._ifname, ipaddr):
             return
 
         # If an address is IPv6, then to create a static IPv6 address
@@ -111,6 +110,25 @@
 
         self.execute_with_pfexec(cmd)
 
+    def create_addrconf(self, temp=True):
+        if not self.ifname_exists(self._ifname):
+            # create ip interface
+            cmd = ['/usr/sbin/ipadm', 'create-ip', self._ifname]
+            if temp:
+                cmd.append('-t')
+            self.execute_with_pfexec(cmd)
+        else:
+            cmd = ['/usr/sbin/ipadm', 'show-addr', '-po', 'type', self._ifname]
+            stdout = self.execute(cmd)
+            if 'addrconf' in stdout:
+                return
+
+        cmd = ['/usr/sbin/ipadm', 'create-addr', '-T', 'addrconf',
+               self._ifname]
+        if temp:
+            cmd.append('-t')
+        self.execute_with_pfexec(cmd)
+
     def delete_address(self, ipaddr):
         if not self.ipaddr_exists(self._ifname, ipaddr):
             return