Merge remote branch 'cros/upstream' into tempbranch

BUG=
TEST=

Review URL: http://codereview.chromium.org/4823005

Change-Id: I5d56f1c10d0fce7f9d7dc3ad727ea52dcb9b2d6c
diff --git a/client/tests/kvm/scripts/join_mcast.py b/client/tests/kvm/scripts/join_mcast.py
new file mode 100644
index 0000000..350cd5f
--- /dev/null
+++ b/client/tests/kvm/scripts/join_mcast.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+import socket, struct, os, signal, sys
+# -*- coding: utf-8 -*-
+
+"""
+Script used to join machine into multicast groups.
+
+@author Amos Kong <akong@redhat.com>
+"""
+
+if __name__ == "__main__":
+    if len(sys.argv) < 4:
+        print """%s [mgroup_count] [prefix] [suffix]
+        mgroup_count: count of multicast addresses
+        prefix: multicast address prefix
+        suffix: multicast address suffix""" % sys.argv[0]
+        sys.exit()
+
+    mgroup_count = int(sys.argv[1])
+    prefix = sys.argv[2]
+    suffix = int(sys.argv[3])
+
+    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    for i in range(mgroup_count):
+        mcast = prefix + "." + str(suffix + i)
+        try:
+            mreq = struct.pack("4sl", socket.inet_aton(mcast),
+                               socket.INADDR_ANY)
+            s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
+        except:
+            s.close()
+            print "Could not join multicast: %s" % mcast
+            raise
+
+    print "join_mcast_pid:%s" % os.getpid()
+    os.kill(os.getpid(), signal.SIGSTOP)
+    s.close()
diff --git a/client/tests/kvm/scripts/qemu-ifup b/client/tests/kvm/scripts/qemu-ifup
index 413d492..c4debf5 100755
--- a/client/tests/kvm/scripts/qemu-ifup
+++ b/client/tests/kvm/scripts/qemu-ifup
@@ -4,6 +4,7 @@
 # Modify it to suit your needs.
 switch=$(/usr/sbin/brctl show | awk 'NR==2 { print $1 }')
 
+/bin/echo 1 > /proc/sys/net/ipv6/conf/${switch}/disable_ipv6
 /sbin/ifconfig $1 0.0.0.0 up
 /usr/sbin/brctl addif ${switch} $1
 /usr/sbin/brctl setfd ${switch} 0
diff --git a/client/tests/kvm/scripts/qemu-ifup-ipv6 b/client/tests/kvm/scripts/qemu-ifup-ipv6
new file mode 100644
index 0000000..d4b0592
--- /dev/null
+++ b/client/tests/kvm/scripts/qemu-ifup-ipv6
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# The following expression selects the first bridge listed by 'brctl show'.
+# Modify it to suit your needs.
+switch=$(/usr/sbin/brctl show | awk 'NR==2 { print $1 }')
+
+/bin/echo 0 > /proc/sys/net/ipv6/conf/${switch}/disable_ipv6 
+/sbin/ifconfig $1 0.0.0.0 up
+/usr/sbin/brctl addif ${switch} $1
+/usr/sbin/brctl setfd ${switch} 0
+/usr/sbin/brctl stp ${switch} off
diff --git a/client/tests/kvm/scripts/unattended.py b/client/tests/kvm/scripts/unattended.py
index ba7d80b..1029d1e 100755
--- a/client/tests/kvm/scripts/unattended.py
+++ b/client/tests/kvm/scripts/unattended.py
@@ -276,14 +276,16 @@
             if not os.path.isdir(self.tftp):
                 os.makedirs(self.tftp)
 
-        self.cdrom_cd1 = os.path.join(KVM_TEST_DIR, self.cdrom_cd1)
+        if self.cdrom_cd1:
+            self.cdrom_cd1 = os.path.join(KVM_TEST_DIR, self.cdrom_cd1)
         self.cdrom_cd1_mount = tempfile.mkdtemp(prefix='cdrom_cd1_', dir='/tmp')
         if self.medium == 'nfs':
             self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir='/tmp')
 
-        self.floppy = os.path.join(KVM_TEST_DIR, self.floppy)
-        if not os.path.isdir(os.path.dirname(self.floppy)):
-            os.makedirs(os.path.dirname(self.floppy))
+        if self.floppy:
+            self.floppy = os.path.join(KVM_TEST_DIR, self.floppy)
+            if not os.path.isdir(os.path.dirname(self.floppy)):
+                os.makedirs(os.path.dirname(self.floppy))
 
         self.image_path = KVM_TEST_DIR
         self.kernel_path = os.path.join(self.image_path, self.kernel)