From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH 5/5] kvm tools: Add guestfs network autoconfiguration Date: Tue, 6 Sep 2011 02:23:55 +0300 Message-ID: <1315265035-9496-5-git-send-email-levinsasha928@gmail.com> References: <1315265035-9496-1-git-send-email-levinsasha928@gmail.com> Cc: kvm@vger.kernel.org, mingo@elte.hu, gorcunov@gmail.com, asias.hejun@gmail.com, Sasha Levin To: penberg@kernel.org Return-path: Received: from mail-wy0-f174.google.com ([74.125.82.174]:37182 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752471Ab1IEXYh (ORCPT ); Mon, 5 Sep 2011 19:24:37 -0400 Received: by mail-wy0-f174.google.com with SMTP id 22so3972804wyh.19 for ; Mon, 05 Sep 2011 16:24:37 -0700 (PDT) In-Reply-To: <1315265035-9496-1-git-send-email-levinsasha928@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: Add a script to automatically configure networking in the guest. Signed-off-by: Sasha Levin --- 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