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