diff --git a/slapos/recipe/kvm/template/kvm_run.in b/slapos/recipe/kvm/template/kvm_run.in index e3c6ed694c4650ea1b69c9c0426712d89e3030fa..1bbb103e39d319236b798cbb63aace3520cea15a 100644 --- a/slapos/recipe/kvm/template/kvm_run.in +++ b/slapos/recipe/kvm/template/kvm_run.in @@ -102,12 +102,19 @@ if not os.path.exists(disk_path): # XXX: use_tap should be a boolean tap_network_parameter = [] nat_network_parameter = [] -if use_tap == 'True': - tap_network_parameter = ['-net', 'nic,macaddr=%%s' %% tap_mac_address, '-net', - 'tap,ifname=%%s,script=no,downscript=no' %% tap_interface] +number = -1 if use_nat == 'True': - rules = 'user,' + ','.join('hostfwd=tcp:%%s:%%s-:%%s' %% (listen_ip, int(port) + 10000, port) for port in nat_rules.split()) - nat_network_parameter = ['-net', 'nic,macaddr=%%s' %% mac_address, '-net', rules] + number += 1 + rules = 'user,id=lan%%s,' %% number + ','.join('hostfwd=tcp:%%s:%%s-:%%s' %% (listen_ip, + int(port) + 10000, port) for port in nat_rules.split()) + nat_network_parameter = ['-netdev', rules, + '-device', 'e1000,netdev=lan%%s,mac=%%s' %% (number, mac_address)] +if use_tap == 'True': + number += 1 + tap_network_parameter = ['-netdev', + 'tap,id=lan%%s,ifname=%%s,script=no,downscript=no' %% (number, + tap_interface), + '-device', 'e1000,netdev=lan%%s,mac=%%s' %% (number, tap_mac_address)] kvm_argument_list = [qemu_path, '-enable-kvm', '-smp', smp_count, @@ -121,7 +128,7 @@ kvm_argument_list = [qemu_path, if tap_network_parameter == [] and nat_network_parameter == []: print 'Warning : No network interface defined.' else: - kvm_argument_list += tap_network_parameter + nat_network_parameter + kvm_argument_list += nat_network_parameter + tap_network_parameter # Try to connect to NBD server (and second nbd if defined). # If not available, don't even specify it in qemu command line parameters.