From 4c010b466d3b1b152b16ac1e980aeca6c867861b Mon Sep 17 00:00:00 2001
From: Jeremy <grossmj@gns3.net>
Date: Fri, 16 Jan 2015 10:43:44 -0700
Subject: [PATCH 1/3] Bump version to 1.2.3.dev1

---
 gns3server/version.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gns3server/version.py b/gns3server/version.py
index ee8422d4..0fc13cfe 100644
--- a/gns3server/version.py
+++ b/gns3server/version.py
@@ -23,5 +23,5 @@
 # or negative for a release candidate or beta (after the base version
 # number has been incremented)
 
-__version__ = "1.2.2"
-__version_info__ = (1, 2, 2, 0)
+__version__ = "1.2.3.dev1"
+__version_info__ = (1, 2, 3, 0)

From 379378973267d68ffa2533fc3241a418d0f5bd1e Mon Sep 17 00:00:00 2001
From: Jeremy <grossmj@gns3.net>
Date: Fri, 16 Jan 2015 17:44:07 -0700
Subject: [PATCH 2/3] Fixes broken -netdev + legacy virtio in Qemu support.

---
 gns3server/modules/qemu/qemu_vm.py | 61 ++++++++++++++++++------------
 1 file changed, 36 insertions(+), 25 deletions(-)

diff --git a/gns3server/modules/qemu/qemu_vm.py b/gns3server/modules/qemu/qemu_vm.py
index 5ae6fad7..1b271694 100644
--- a/gns3server/modules/qemu/qemu_vm.py
+++ b/gns3server/modules/qemu/qemu_vm.py
@@ -999,18 +999,18 @@ class QemuVM(object):
                 if self._legacy_networking:
                     self._control_vm("host_net_remove {} gns3-{}".format(adapter_id, adapter_id))
                     self._control_vm("host_net_add udp vlan={},name=gns3-{},sport={},dport={},daddr={}".format(adapter_id,
-                                                                                                              adapter_id,
-                                                                                                              nio.lport,
-                                                                                                              nio.rport,
-                                                                                                              nio.rhost))
+                                                                                                               adapter_id,
+                                                                                                               nio.lport,
+                                                                                                               nio.rport,
+                                                                                                               nio.rhost))
                 else:
-                    self._control_vm("host_net_remove {} gns3-{}".format(adapter_id, adapter_id))
-                    self._control_vm("host_net_add socket vlan={},name=gns3-{},udp={}:{},localaddr={}:{}".format(adapter_id,
-                                                                                                                adapter_id,
-                                                                                                                nio.rhost,
-                                                                                                                nio.rport,
-                                                                                                                self._host,
-                                                                                                                nio.lport))
+                    #FIXME: does it work? very undocumented feature...
+                    self._control_vm("netdev_del gns3-{}".format(adapter_id))
+                    self._control_vm("netdev_add socket,id=gns3-{},udp={}:{},localaddr={}:{}".format(adapter_id,
+                                                                                                     nio.rhost,
+                                                                                                     nio.rport,
+                                                                                                     self._host,
+                                                                                                     nio.lport))
 
         adapter.add_nio(0, nio)
         log.info("QEMU VM {name} [id={id}]: {nio} added to adapter {adapter_id}".format(name=self._name,
@@ -1035,8 +1035,13 @@ class QemuVM(object):
 
         if self.is_running():
             # dynamically disable the QEMU VM adapter
-            self._control_vm("host_net_remove {} gns3-{}".format(adapter_id, adapter_id))
-            self._control_vm("host_net_add user vlan={},name=gns3-{}".format(adapter_id, adapter_id))
+            if self._legacy_networking:
+                self._control_vm("host_net_remove {} gns3-{}".format(adapter_id, adapter_id))
+                self._control_vm("host_net_add user vlan={},name=gns3-{}".format(adapter_id, adapter_id))
+            else:
+                #FIXME: does it work? very undocumented feature...
+                self._control_vm("netdev_del gns3-{}".format(adapter_id))
+                self._control_vm("netdev_add user,id=gns3-{}".format(adapter_id))
 
         nio = adapter.get_nio(0)
         adapter.remove_nio(0)
@@ -1192,24 +1197,30 @@ class QemuVM(object):
         for adapter in self._ethernet_adapters:
             #TODO: let users specify a base mac address
             mac = "00:00:ab:%02x:%02x:%02d" % (random.randint(0x00, 0xff), random.randint(0x00, 0xff), adapter_id)
-            network_options.extend(["-net", "nic,vlan={},macaddr={},model={}".format(adapter_id, mac, self._adapter_type)])
+            if self._legacy_networking:
+                network_options.extend(["-net", "nic,vlan={},macaddr={},model={}".format(adapter_id, mac, self._adapter_type)])
+            else:
+                network_options.extend(["-device", "{},mac={},netdev=gns3-{}".format(self._adapter_type, mac, adapter_id)])
+
             nio = adapter.get_nio(0)
             if nio and isinstance(nio, NIO_UDP):
                 if self._legacy_networking:
                     network_options.extend(["-net", "udp,vlan={},name=gns3-{},sport={},dport={},daddr={}".format(adapter_id,
-                                                                                                                adapter_id,
-                                                                                                                nio.lport,
-                                                                                                                nio.rport,
-                                                                                                                nio.rhost)])
+                                                                                                                 adapter_id,
+                                                                                                                 nio.lport,
+                                                                                                                 nio.rport,
+                                                                                                                 nio.rhost)])
                 else:
-                    network_options.extend(["-net", "socket,vlan={},name=gns3-{},udp={}:{},localaddr={}:{}".format(adapter_id,
-                                                                                                                  adapter_id,
-                                                                                                                  nio.rhost,
-                                                                                                                  nio.rport,
-                                                                                                                  self._host,
-                                                                                                                  nio.lport)])
+                    network_options.extend(["-netdev", "socket,id=gns3-{},udp={}:{},localaddr={}:{}".format(adapter_id,
+                                                                                                            nio.rhost,
+                                                                                                            nio.rport,
+                                                                                                            self._host,
+                                                                                                            nio.lport)])
             else:
-                network_options.extend(["-net", "user,vlan={},name=gns3-{}".format(adapter_id, adapter_id)])
+                if self._legacy_networking:
+                    network_options.extend(["-net", "user,vlan={},name=gns3-{}".format(adapter_id, adapter_id)])
+                else:
+                    network_options.extend(["-netdev", "user,id=gns3-{}".format(adapter_id)])
             adapter_id += 1
 
         return network_options

From c47081f36307bbe066303850effadbfca2277804 Mon Sep 17 00:00:00 2001
From: Jeremy <grossmj@gns3.net>
Date: Fri, 16 Jan 2015 17:58:09 -0700
Subject: [PATCH 3/3] Bump version to 1.2.3

---
 gns3server/version.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gns3server/version.py b/gns3server/version.py
index 0fc13cfe..7c1b3d38 100644
--- a/gns3server/version.py
+++ b/gns3server/version.py
@@ -23,5 +23,5 @@
 # or negative for a release candidate or beta (after the base version
 # number has been incremented)
 
-__version__ = "1.2.3.dev1"
+__version__ = "1.2.3"
 __version_info__ = (1, 2, 3, 0)