[PATCH 5/5] kvm tools: Add guestfs network autoconfiguration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add a script to automatically configure networking in the guest.

Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx>
---
 tools/kvm/builtin-setup.c |   14 ++++++++++++++
 tools/kvm/guest/init.c    |    4 ++++
 tools/kvm/guest/setnet.sh |   22 ++++++++++++++++++++++
 3 files changed, 40 insertions(+), 0 deletions(-)
 create mode 100755 tools/kvm/guest/setnet.sh

diff --git a/tools/kvm/builtin-setup.c b/tools/kvm/builtin-setup.c
index 7587476..f7588dd 100644
--- a/tools/kvm/builtin-setup.c
+++ b/tools/kvm/builtin-setup.c
@@ -129,6 +129,15 @@ static int copy_init(const char *guestfs_name)
 	return copy_file("guest/init", path);
 }
 
+static int copy_net(const char *guestfs_name)
+{
+	char path[PATH_MAX];
+
+	snprintf(path, PATH_MAX, "%s%s%s/virt/setnet.sh", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name);
+
+	return copy_file("guest/setnet.sh", path);
+}
+
 static int make_guestfs_symlink(const char *guestfs_name, const char *path)
 {
 	char target[PATH_MAX];
@@ -171,6 +180,7 @@ static void make_guestfs_dir(const char *guestfs_name, const char *dir)
 static int do_setup(const char *guestfs_name)
 {
 	unsigned int i;
+	int ret;
 
 	make_root_dir();
 
@@ -183,6 +193,10 @@ static int do_setup(const char *guestfs_name)
 		make_guestfs_symlink(guestfs_name, guestfs_symlinks[i]);
 	}
 
+	ret = copy_net(guestfs_name);
+	if (ret < 0)
+		return ret;
+
 	return copy_init(guestfs_name);
 }
 
diff --git a/tools/kvm/guest/init.c b/tools/kvm/guest/init.c
index 837acfb..7733026 100644
--- a/tools/kvm/guest/init.c
+++ b/tools/kvm/guest/init.c
@@ -30,6 +30,10 @@ int main(int argc, char *argv[])
 
 	do_mounts();
 
+	puts("Setting up network...");
+
+	system("/bin/sh virt/setnet.sh");
+
 	puts("Starting '/bin/sh'...");
 
 	run_process("/bin/sh");
diff --git a/tools/kvm/guest/setnet.sh b/tools/kvm/guest/setnet.sh
new file mode 100755
index 0000000..3da9c22
--- /dev/null
+++ b/tools/kvm/guest/setnet.sh
@@ -0,0 +1,22 @@
+for f in /sys/class/net/*; do
+	type=`cat $f/type`
+	if [ $type -eq 1 ]; then
+		f=${f#/sys/class/net/}
+
+		eval "dhcpcd -A $f 2> /dev/null"
+		if [ $? -eq 0 ]; then
+			exit
+		fi
+
+		eval "dhclient $f 2> /dev/null"
+		if [ $? -eq 0 ]; then
+			exit
+		fi
+
+		ifconfig $f 192.168.33.15
+		route add default 192.168.33.1
+		echo "nameserver 8.8.8.8" >> /etc/resolv.conf
+
+		exit
+	fi
+done
-- 
1.7.6.1

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux