[virt-tools-list] [PATCH 2/4] IPv6 support v2: update the create network wizard

Gene Czarcinski gene at czarc.net
Fri Mar 29 18:38:29 UTC 2013


With this patch, basic IPv6 support has been added to
the network creation wizard.  It includes changes to
both the glade-3 ui and the related python code.  There
have been some significant changes made to both files for
IPv6 support and some additional capabilities.

This update includes the fix so color will work in the
network creation wizard.

Besides basic IPv6 support, this includes optionally
specifying a DNS domain name and enabling IPv6 internal
routing if no IPv6 address is specified.
.
Signed-off-by: Gene Czarcinski <gene at czarc.net>
---
 ui/vmm-create-net.ui     | 2111 +++++++++++++++++++++++++++++++++-------------
 virtManager/createnet.py |  621 +++++++++++---
 2 files changed, 2019 insertions(+), 713 deletions(-)

diff --git a/ui/vmm-create-net.ui b/ui/vmm-create-net.ui
index 73aef00..ef9fcaa 100644
--- a/ui/vmm-create-net.ui
+++ b/ui/vmm-create-net.ui
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkWindow" id="vmm-create-net">
     <property name="can_focus">False</property>
     <property name="border_width">12</property>
@@ -79,146 +80,86 @@
                         <property name="can_focus">False</property>
                         <property name="left_padding">25</property>
                         <child>
-                          <object class="GtkTable" id="table12">
+                          <object class="GtkVBox" id="vbox4">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="n_rows">4</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">8</property>
-                            <property name="row_spacing">13</property>
-                            <child>
-                              <object class="GtkLabel" id="label164">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label"><small>●</small></property>
-                                <property name="use_markup">True</property>
-                              </object>
-                              <packing>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label163">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label"><small>●</small></property>
-                                <property name="use_markup">True</property>
-                              </object>
-                              <packing>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label162">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label"><small>●</small></property>
-                                <property name="use_markup">True</property>
-                              </object>
-                              <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
                             <child>
-                              <object class="GtkLabel" id="label161">
+                              <object class="GtkLabel" id="label1">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label"><small>●</small></property>
+                                <property name="xalign">0</property>
+                                <property name="ypad">6</property>
+                                <property name="label" translatable="yes"><small>●</small> A <b>name</b> for the new virtual network</property>
                                 <property name="use_markup">True</property>
                               </object>
                               <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label160">
+                              <object class="GtkLabel" id="label2">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
-                                <property name="xpad">6</property>
-                                <property name="label" translatable="yes">The IPv4 <b>address</b> and <b>netmask</b> to assign</property>
+                                <property name="yalign">0.47999998927116394</property>
+                                <property name="ypad">6</property>
+                                <property name="label" translatable="yes"><small>●</small> An <b>IPv4</b> and/or <b>IPv6</b> network address and prefix (netmask) to assign</property>
                                 <property name="use_markup">True</property>
                                 <property name="wrap">True</property>
-                                <property name="width_chars">40</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label157">
+                              <object class="GtkLabel" id="label15">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
-                                <property name="xpad">6</property>
-                                <property name="label" translatable="yes">Whether to <b>forward</b> traffic to the physical network</property>
+                                <property name="ypad">6</property>
+                                <property name="label" translatable="yes"><small>●</small> The network address range which the <b>DHCPv4</b> and/or <b>DHCPv6</b> server will assign addresses to virtual machines</property>
                                 <property name="use_markup">True</property>
                                 <property name="wrap">True</property>
-                                <property name="width_chars">40</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label156">
+                              <object class="GtkLabel" id="label16">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
-                                <property name="xpad">6</property>
-                                <property name="label" translatable="yes">The <b>address range</b> from which the <b>DHCP</b> server will allocate addresses for virtual machines</property>
+                                <property name="ypad">6</property>
+                                <property name="label" translatable="yes"><small>●</small> Whether to <b>forward</b> traffic to a physical network</property>
                                 <property name="use_markup">True</property>
-                                <property name="wrap">True</property>
-                                <property name="width_chars">40</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">3</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label154">
+                              <object class="GtkLabel" id="label17">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
-                                <property name="xpad">6</property>
-                                <property name="label" translatable="yes">A <b>name</b> for your new virtual network</property>
+                                <property name="ypad">6</property>
+                                <property name="label" translatable="yes"><small>●</small> Optionally to specify an <b>IPv4</b> and/or <b>IPv6</b> network address.  If neither is specified, this will be a valid definition for an isolated network with <b>no</b> DHCP or DNS support.</property>
                                 <property name="use_markup">True</property>
                                 <property name="wrap">True</property>
-                                <property name="width_chars">40</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">4</property>
                               </packing>
                             </child>
                           </object>
@@ -322,7 +263,11 @@
                               <object class="GtkEntry" id="net-name">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="max_length">50</property>
+                                <property name="max_length">12</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
                                 <child internal-child="accessible">
                                   <object class="AtkObject" id="net-name-atkobject">
                                     <property name="AtkObject::accessible-name" translatable="yes">Net Name Field</property>
@@ -333,6 +278,7 @@
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"/>
                               </packing>
                             </child>
@@ -411,11 +357,33 @@
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
+                        <property name="expand">False</property>
                         <property name="fill">True</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
+                    <child>
+                      <object class="GtkHSeparator" id="hseparator1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHSeparator" id="hseparator2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
                     <property name="expand">True</property>
@@ -460,7 +428,7 @@
                             <property name="yalign">0</property>
                             <property name="xpad">5</property>
                             <property name="ypad">6</property>
-                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Choosing an IPv4 address space</span></property>
+                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Defining IPv4 addresses</span></property>
                             <property name="use_markup">True</property>
                             <property name="justify">fill</property>
                           </object>
@@ -479,19 +447,72 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkLabel" id="label176">
+                      <object class="GtkVBox" id="vbox7">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">20</property>
-                        <property name="ypad">10</property>
-                        <property name="label" translatable="yes">You will need to choose an IPv4 address space for the virtual network:</property>
-                        <property name="use_markup">True</property>
-                        <property name="wrap">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label19">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">You will need to choose an <b>IPv4</b> address space for the virtual network.</property>
+                            <property name="use_markup">True</property>
+                            <property name="wrap">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator7">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment14">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">30</property>
+                            <child>
+                              <object class="GtkCheckButton" id="net-ipv4-enable">
+                                <property name="label" translatable="yes">Enable IPv4 network address space definition</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="on_net-ipv4-enable_toggled" swapped="no"/>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator8">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
-                        <property name="fill">False</property>
+                        <property name="fill">True</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
@@ -519,34 +540,30 @@
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="border_width">6</property>
-                                    <property name="n_rows">5</property>
+                                    <property name="n_rows">2</property>
                                     <property name="n_columns">2</property>
-                                    <property name="column_spacing">3</property>
+                                    <property name="column_spacing">6</property>
                                     <property name="row_spacing">3</property>
                                     <child>
-                                      <object class="GtkLabel" id="net-info-netmask">
+                                      <object class="GtkLabel" id="label25">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label">255.255.255.0</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Gateway:</property>
                                       </object>
                                       <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
                                         <property name="x_options">GTK_FILL</property>
                                         <property name="y_options"/>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkLabel" id="net-info-broadcast">
+                                      <object class="GtkLabel" id="label28">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label">192.168.1.255</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Network Type:</property>
                                       </object>
                                       <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
                                         <property name="top_attach">1</property>
                                         <property name="bottom_attach">2</property>
                                         <property name="x_options">GTK_FILL</property>
@@ -558,29 +575,11 @@
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="xalign">0</property>
-                                        <property name="label">192.168.1.1</property>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="net-info-size">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label">256</property>
+                                        <property name="label" translatable="yes">192.168.100.1</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
                                         <property name="right_attach">2</property>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
                                         <property name="x_options">GTK_FILL</property>
                                         <property name="y_options"/>
                                       </packing>
@@ -590,85 +589,17 @@
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Private</property>
+                                        <property name="label" translatable="yes">?</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
                                         <property name="right_attach">2</property>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label397">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Type:</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">4</property>
-                                        <property name="bottom_attach">5</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label396">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Size:</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">3</property>
-                                        <property name="bottom_attach">4</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label395">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Gateway:</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label394">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Broadcast:</property>
-                                      </object>
-                                      <packing>
                                         <property name="top_attach">1</property>
                                         <property name="bottom_attach">2</property>
                                         <property name="x_options">GTK_FILL</property>
                                         <property name="y_options"/>
                                       </packing>
                                     </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label393">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">1</property>
-                                        <property name="label" translatable="yes">Netmask:</property>
-                                      </object>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options"/>
-                                      </packing>
-                                    </child>
                                   </object>
                                 </child>
                               </object>
@@ -682,74 +613,12 @@
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkHBox" id="hbox64">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkImage" id="image105">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xpad">3</property>
-                                    <property name="ypad">3</property>
-                                    <property name="stock">gtk-dialog-info</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label387">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes"><b>Hint:</b> The network should be chosen from one of the IPv4 private address ranges. eg 10.0.0.0/8,  172.16.0.0/12, or 192.168.0.0/16</property>
-                                    <property name="use_markup">True</property>
-                                    <property name="wrap">True</property>
-                                    <property name="width_chars">40</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="net-network">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="width_chars">20</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="net-network-atkobject">
-                                    <property name="AtkObject::accessible-name" translatable="yes">Network Range</property>
-                                  </object>
-                                </child>
-                                <signal name="changed" handler="on_net_network_changed" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
                               <object class="GtkLabel" id="label385">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">1</property>
                                 <property name="label" translatable="yes">_Network:</property>
                                 <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">net-network</property>
                               </object>
                               <packing>
                                 <property name="x_options">GTK_FILL</property>
@@ -767,7 +636,7 @@
                               <packing>
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
+                                <property name="x_options"/>
                                 <property name="y_options">GTK_FILL</property>
                               </packing>
                             </child>
@@ -782,124 +651,25 @@
                               <packing>
                                 <property name="top_attach">2</property>
                                 <property name="bottom_attach">3</property>
-                                <property name="x_options">GTK_FILL</property>
+                                <property name="x_options"/>
                                 <property name="y_options">GTK_FILL</property>
                               </packing>
                             </child>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label143">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">IPv4</property>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox28">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="border_width">1</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment53">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEventBox" id="page3-title">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="label185">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="yalign">0</property>
-                            <property name="xpad">5</property>
-                            <property name="ypad">6</property>
-                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Selecting the DHCP range</span></property>
-                            <property name="use_markup">True</property>
-                            <property name="justify">fill</property>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkVBox" id="vbox29">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkLabel" id="label186">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">20</property>
-                        <property name="ypad">10</property>
-                        <property name="label" translatable="yes">Please choose the range of addresses the DHCP server will allocate to virtual machines attached to the virtual network.</property>
-                        <property name="use_markup">True</property>
-                        <property name="wrap">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment145">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">24</property>
-                        <child>
-                          <object class="GtkTable" id="table33">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="border_width">6</property>
-                            <property name="n_rows">3</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">3</property>
-                            <property name="row_spacing">3</property>
                             <child>
-                              <object class="GtkHBox" id="hbox65">
+                              <object class="GtkHBox" id="hbox5">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <child>
-                                  <object class="GtkImage" id="image106">
+                                  <object class="GtkEntry" id="net-ipv4-network">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="yalign">0</property>
-                                    <property name="xpad">3</property>
-                                    <property name="ypad">3</property>
-                                    <property name="stock">gtk-dialog-info</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="max_length">20</property>
+                                    <property name="invisible_char">●</property>
+                                    <property name="primary_icon_activatable">False</property>
+                                    <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
+                                    <signal name="changed" handler="on_net-ipv4-network_changed" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -908,19 +678,16 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label391">
+                                  <object class="GtkAlignment" id="alignment22">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <property name="xalign">0</property>
-                                    <property name="yalign">0</property>
-                                    <property name="label" translatable="yes"><b>Tip:</b> Unless you wish to reserve some addresses to allow static network configuration in virtual machines, these parameters can be left with their default values.</property>
-                                    <property name="use_markup">True</property>
-                                    <property name="wrap">True</property>
-                                    <property name="width_chars">40</property>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
                                   </object>
                                   <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
@@ -928,100 +695,176 @@
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">4</property>
-                                <property name="bottom_attach">5</property>
-                                <property name="x_options">GTK_FILL</property>
                               </packing>
                             </child>
                             <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label72">
+                              <object class="GtkAlignment" id="alignment61">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Enable DHCP:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">net-dhcp-enable</property>
+                                <child>
+                                  <object class="GtkHBox" id="hbox64">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkImage" id="image105">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xpad">3</property>
+                                        <property name="ypad">3</property>
+                                        <property name="stock">gtk-dialog-info</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label387">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xpad">10</property>
+                                        <property name="label" translatable="yes"><b>Hint:</b> The network should be chosen from one of the IPv4 private address ranges. eg 10.0.0.0/8,  172.16.0.0/12, or 192.168.0.0/16</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="wrap">True</property>
+                                        <property name="width_chars">40</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkAlignment" id="alignment19">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <child>
+                                          <placeholder/>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
                               </object>
                               <packing>
-                                <property name="x_options">GTK_FILL</property>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
                                 <property name="y_options"/>
                               </packing>
                             </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox10">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator13">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkTable" id="table5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">5</property>
+                            <property name="column_spacing">4</property>
+                            <property name="row_spacing">3</property>
                             <child>
-                              <object class="GtkCheckButton" id="net-dhcp-enable">
+                              <object class="GtkLabel" id="label26">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0.5</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="toggled" handler="on_net_dhcp_enable_toggled" swapped="no"/>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="xpad">15</property>
+                                <property name="label" translatable="yes">Start:</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkEntry" id="net-dhcp-end">
+                              <object class="GtkLabel" id="label27">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="net-dhcp-end-atkobject">
-                                    <property name="AtkObject::accessible-name" translatable="yes">End Address</property>
-                                  </object>
-                                </child>
-                                <signal name="changed" handler="on_net_dhcp_end_changed" swapped="no"/>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="xpad">15</property>
+                                <property name="label" translatable="yes">End:</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
                                 <property name="top_attach">2</property>
                                 <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkEntry" id="net-dhcp-start">
+                              <object class="GtkEntry" id="net-dhcpv4-start">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="net-dhcp-start-atkobject">
-                                    <property name="AtkObject::accessible-name" translatable="yes">Start Address</property>
-                                  </object>
-                                </child>
-                                <signal name="changed" handler="on_net_dhcp_start_changed" swapped="no"/>
+                                <property name="max_length">15</property>
+                                <property name="invisible_char">●</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <signal name="changed" handler="on_net-dhcpv4-start_changed" swapped="no"/>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
+                                <property name="right_attach">5</property>
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label390">
+                              <object class="GtkEntry" id="net-dhcpv4-end">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label" translatable="yes">E_nd:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">net-dhcp-end</property>
+                                <property name="can_focus">True</property>
+                                <property name="max_length">15</property>
+                                <property name="invisible_char">●</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <signal name="changed" handler="on_net-dhcpv4-end_changed" swapped="no"/>
                               </object>
                               <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">5</property>
                                 <property name="top_attach">2</property>
                                 <property name="bottom_attach">3</property>
                                 <property name="x_options">GTK_FILL</property>
@@ -1029,28 +872,39 @@
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="label389">
+                              <object class="GtkAlignment" id="alignment17">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="xalign">1</property>
-                                <property name="label" translatable="yes">_Start:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">net-dhcp-start</property>
+                                <property name="left_padding">27</property>
+                                <child>
+                                  <object class="GtkCheckButton" id="net-dhcpv4-enable">
+                                    <property name="label" translatable="yes">Enable DHCPv4</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="on_net-dhcpv4-enable_toggled" swapped="no"/>
+                                  </object>
+                                </child>
                               </object>
                               <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
+                                <property name="right_attach">5</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"/>
                               </packing>
                             </child>
                           </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
+                        <property name="expand">True</property>
                         <property name="fill">True</property>
-                        <property name="position">1</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                   </object>
@@ -1062,42 +916,42 @@
                 </child>
               </object>
               <packing>
-                <property name="position">3</property>
+                <property name="position">2</property>
               </packing>
             </child>
             <child type="tab">
-              <object class="GtkLabel" id="label144">
+              <object class="GtkLabel" id="label143">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">DHCP</property>
+                <property name="label" translatable="yes">IPv4</property>
               </object>
               <packing>
-                <property name="position">3</property>
+                <property name="position">2</property>
                 <property name="tab_fill">False</property>
               </packing>
             </child>
             <child>
-              <object class="GtkVBox" id="vbox32">
+              <object class="GtkVBox" id="vbox2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="border_width">1</property>
                 <child>
-                  <object class="GtkAlignment" id="alignment69">
+                  <object class="GtkAlignment" id="alignment6">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkEventBox" id="page4-title">
+                      <object class="GtkEventBox" id="page3-title">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <child>
-                          <object class="GtkLabel" id="label203">
+                          <object class="GtkLabel" id="label176">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
                             <property name="yalign">0</property>
                             <property name="xpad">5</property>
                             <property name="ypad">6</property>
-                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Connecting to physical network</span></property>
+                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Defining IPv6 addresses</span></property>
                             <property name="use_markup">True</property>
                             <property name="justify">fill</property>
                           </object>
@@ -1112,49 +966,573 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkVBox" id="vbox33">
+                  <object class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkLabel" id="label205">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">20</property>
-                        <property name="ypad">10</property>
-                        <property name="label" translatable="yes">Please indicate whether this virtual network should be connected to the physical network.</property>
-                        <property name="use_markup">True</property>
-                        <property name="wrap">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment71">
+                      <object class="GtkVBox" id="vbox6">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="left_padding">25</property>
-                        <property name="right_padding">15</property>
                         <child>
-                          <object class="GtkTable" id="table34">
+                          <object class="GtkLabel" id="label5">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="n_rows">4</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">6</property>
-                            <property name="row_spacing">3</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment146">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="left_padding">24</property>
-                                <child>
-                                  <object class="GtkEventBox" id="eventbox1">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">You will need to choose an <b>IPv6</b> address space for the virtual network:</property>
+                            <property name="use_markup">True</property>
+                            <property name="wrap">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment13">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">30</property>
+                            <child>
+                              <object class="GtkCheckButton" id="net-ipv6-enable">
+                                <property name="label" translatable="yes">Enable IPv6 network address space definition</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="on_net-ipv6-enable_toggled" swapped="no"/>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment7">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">25</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="border_width">3</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">3</property>
+                            <property name="row_spacing">3</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment8">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">60</property>
+                                <child>
+                                  <object class="GtkTable" id="table2">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="border_width">6</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">6</property>
+                                    <property name="row_spacing">3</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label6">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Gateway:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label7">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Network Type:</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="net-info-gateway-ip6">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">fd00:100::1</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="net-info-type-ip6">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">?</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label12">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">_Network:</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment9">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment10">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options"/>
+                                <property name="y_options">GTK_FILL</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="hbox4">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkEntry" id="net-ipv6-network">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="max_length">45</property>
+                                    <property name="invisible_char">●</property>
+                                    <property name="primary_icon_activatable">False</property>
+                                    <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
+                                    <signal name="changed" handler="on_net-ipv6-network_changed" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment21">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment60">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <child>
+                                  <object class="GtkHBox" id="hbox3">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkImage" id="image1">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xpad">3</property>
+                                        <property name="ypad">3</property>
+                                        <property name="stock">gtk-dialog-info</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label11">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xpad">10</property>
+                                        <property name="label" translatable="yes"><b>Note:</b> The network could be chosen from one of the IPv6 private address ranges. eg FC00::/7.  In any case. the prefix must  <b>be 64</b>.
+A typical IPv6 network address will look something like:  fd00:dead:beef:55::/64</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="wrap">True</property>
+                                        <property name="width_chars">40</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkAlignment" id="alignment18">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <child>
+                                          <placeholder/>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"/>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox9">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator12">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkTable" id="table6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">5</property>
+                            <property name="column_spacing">4</property>
+                            <property name="row_spacing">3</property>
+                            <child>
+                              <object class="GtkLabel" id="label29">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="xpad">15</property>
+                                <property name="label" translatable="yes">Start:</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label38">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="xpad">15</property>
+                                <property name="label" translatable="yes">End:</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="net-dhcpv6-start">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="max_length">45</property>
+                                <property name="invisible_char">●</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <signal name="changed" handler="on_net-dhcpv6-start_changed" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">5</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="net-dhcpv6-end">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="max_length">45</property>
+                                <property name="invisible_char">●</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <signal name="changed" handler="on_net-dhcpv6-end_changed" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">5</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment16">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">27</property>
+                                <child>
+                                  <object class="GtkCheckButton" id="net-dhcpv6-enable">
+                                    <property name="label" translatable="yes">Enable DHCPv6</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="on_net-dhcpv6-enable_toggled" swapped="no"/>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="right_attach">5</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">IPv6</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox32">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">1</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment69">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEventBox" id="page4-title">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" id="label203">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="ypad">6</property>
+                            <property name="label" translatable="yes"><span weight="heavy" size="xx-large" foreground="#FFF">Miscellaneous Settings</span></property>
+                            <property name="use_markup">True</property>
+                            <property name="justify">fill</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox33">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkLabel" id="label205">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">20</property>
+                        <property name="ypad">10</property>
+                        <property name="label" translatable="yes">Please indicate whether this virtual network should be connected to the <b>physical network</b>.</property>
+                        <property name="use_markup">True</property>
+                        <property name="wrap">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment71">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">25</property>
+                        <property name="right_padding">15</property>
+                        <child>
+                          <object class="GtkTable" id="table34">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">4</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">6</property>
+                            <property name="row_spacing">3</property>
+                            <child>
+                              <object class="GtkAlignment" id="alignment146">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">24</property>
+                                <child>
+                                  <object class="GtkEventBox" id="eventbox1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
                                     <child>
                                       <object class="GtkLabel" id="label392">
                                         <property name="visible">True</property>
@@ -1182,7 +1560,6 @@
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="xalign">0.5</property>
                                 <property name="draw_indicator">True</property>
                                 <property name="group">net-forward-dev</property>
                                 <signal name="toggled" handler="on_net_forward_toggled" swapped="no"/>
@@ -1200,7 +1577,6 @@
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="xalign">0.5</property>
                                 <property name="draw_indicator">True</property>
                                 <signal name="toggled" handler="on_net_forward_toggled" swapped="no"/>
                               </object>
@@ -1286,7 +1662,99 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkAlignment" id="alignment2">
+                                  <object class="GtkAlignment" id="alignment2">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment11">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">24</property>
+                            <child>
+                              <object class="GtkCheckButton" id="net-enable-ipv6-networking">
+                                <property name="label" translatable="yes">Enable IPv6 internal routing/networking</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment12">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">50</property>
+                            <child>
+                              <object class="GtkHBox" id="hbox7">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" id="label13">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">If an IPv6 network address is <b>not</b> specified, this will enable IPv6 internal routing between virtual machines.  By default, IPv4 internal routing is enabled.</property>
+                                    <property name="use_markup">True</property>
+                                    <property name="wrap">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment23">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <child>
@@ -1300,12 +1768,136 @@
                                   </packing>
                                 </child>
                               </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox8">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">4</property>
+                            <child>
+                              <object class="GtkLabel" id="label4">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="xpad">25</property>
+                                <property name="label" translatable="yes">Domain Name:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="net-domain-name">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="max_length">20</property>
+                                <property name="invisible_char">●</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment15">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
                               <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
-                                <property name="y_options"/>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkAlignment" id="alignment20">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">50</property>
+                        <child>
+                          <object class="GtkHBox" id="hbox8">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkLabel" id="label8">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Optionally, specify the DNS <b>Domain Name</b> to be used for the networks on this network interface.</property>
+                                <property name="use_markup">True</property>
+                                <property name="wrap">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment24">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -1314,7 +1906,18 @@
                       <packing>
                         <property name="expand">False</property>
                         <property name="fill">True</property>
-                        <property name="position">1</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHSeparator" id="hseparator9">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">5</property>
                       </packing>
                     </child>
                   </object>
@@ -1333,7 +1936,7 @@
               <object class="GtkLabel" id="step3a">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Forwarding</property>
+                <property name="label" translatable="yes">Misc</property>
               </object>
               <packing>
                 <property name="position">4</property>
@@ -1391,34 +1994,197 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="border_width">6</property>
-                        <property name="n_rows">11</property>
+                        <property name="n_rows">14</property>
                         <property name="n_columns">3</property>
                         <property name="column_spacing">3</property>
                         <property name="row_spacing">3</property>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="label379">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label">	</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label376">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes"><b>IPv4 network</b></property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label-ip4-gateway">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Gateway:</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">4</property>
+                            <property name="bottom_attach">5</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label310">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Domain Name:</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="summary-dhcp-end">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label">192.168.10.254</property>
+                            <property name="ellipsize">middle</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">7</property>
+                            <property name="bottom_attach">8</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="summary-ip4-gateway">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label">192.168.10.1</property>
+                            <property name="ellipsize">middle</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">4</property>
+                            <property name="bottom_attach">5</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="summary-ip4-network">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label">192.168.10.0/24</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="summary-domain">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label">demonet</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="summary-dhcp-start">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">192.168.10.128</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">6</property>
+                            <property name="bottom_attach">7</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="label21">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes"><b>IPv6 network</b></property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">8</property>
+                            <property name="bottom_attach">9</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkLabel" id="summary-ip6-network">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">FD00:100::/64</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">9</property>
+                            <property name="bottom_attach">10</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-forwarding">
+                          <object class="GtkLabel" id="summary-ip6-gateway">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="label" translatable="yes">NAT to any physical device</property>
+                            <property name="label">FD00:100::1</property>
+                            <property name="ellipsize">middle</property>
                           </object>
                           <packing>
                             <property name="left_attach">2</property>
@@ -1430,110 +2196,112 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label380">
+                          <object class="GtkLabel" id="label-dhcpv6-end">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Connectivity:</property>
+                            <property name="label" translatable="yes">DHCPv6 End Address:</property>
                             <property name="use_markup">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">10</property>
-                            <property name="bottom_attach">11</property>
+                            <property name="top_attach">13</property>
+                            <property name="bottom_attach">14</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label379">
+                          <object class="GtkLabel" id="label-dhcpv6-start">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label">	</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">DHCPv6 Start Address:</property>
+                            <property name="use_markup">True</property>
                           </object>
                           <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">12</property>
+                            <property name="bottom_attach">13</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label376">
+                          <object class="GtkLabel" id="summary-dhcpv6-start">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="ypad">5</property>
-                            <property name="label" translatable="yes"><b>IPv4 network</b></property>
-                            <property name="use_markup">True</property>
+                            <property name="label" translatable="yes">FD00:100::100</property>
+                            <property name="use_underline">True</property>
                           </object>
                           <packing>
+                            <property name="left_attach">2</property>
                             <property name="right_attach">3</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
+                            <property name="top_attach">12</property>
+                            <property name="bottom_attach">13</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label377">
+                          <object class="GtkLabel" id="summary-dhcpv6-end">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="ypad">5</property>
-                            <property name="label" translatable="yes"><b>DHCP</b></property>
-                            <property name="use_markup">True</property>
+                            <property name="label" translatable="yes">FD00:100::1FF</property>
+                            <property name="use_underline">True</property>
                           </object>
                           <packing>
+                            <property name="left_attach">2</property>
                             <property name="right_attach">3</property>
-                            <property name="top_attach">6</property>
-                            <property name="bottom_attach">7</property>
-                            <property name="x_options">GTK_FILL</property>
+                            <property name="top_attach">13</property>
+                            <property name="bottom_attach">14</property>
+                            <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label378">
+                          <object class="GtkLabel" id="label-ip4-network">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="ypad">5</property>
-                            <property name="label" translatable="yes"><b>Forwarding</b></property>
-                            <property name="use_markup">True</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Network:</property>
                           </object>
                           <packing>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">9</property>
-                            <property name="bottom_attach">10</property>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label-dhcp-end">
+                          <object class="GtkLabel" id="label-dhcp-start">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
-                            <property name="label" translatable="yes">End address:</property>
+                            <property name="label" translatable="yes">DHCPv4 Start Address:</property>
                             <property name="use_markup">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">8</property>
-                            <property name="bottom_attach">9</property>
+                            <property name="top_attach">6</property>
+                            <property name="bottom_attach">7</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label-dhcp-start">
+                          <object class="GtkLabel" id="label-dhcp-end">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Start address:</property>
+                            <property name="label" translatable="yes">DHCPv4 End  Address:</property>
                             <property name="use_markup">True</property>
                           </object>
                           <packing>
@@ -1546,101 +2314,89 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label313">
+                          <object class="GtkLabel" id="label-ip6-network">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Netmask:</property>
-                            <property name="use_markup">True</property>
+                            <property name="label" translatable="yes">Network:</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">5</property>
-                            <property name="bottom_attach">6</property>
+                            <property name="top_attach">9</property>
+                            <property name="bottom_attach">10</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label312">
+                          <object class="GtkLabel" id="label-ip6-gateway">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
                             <property name="label" translatable="yes">Gateway:</property>
-                            <property name="use_markup">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">4</property>
-                            <property name="bottom_attach">5</property>
+                            <property name="top_attach">10</property>
+                            <property name="bottom_attach">11</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-os-label">
+                          <object class="GtkLabel" id="label375">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Network:</property>
+                            <property name="xalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes"><b>Summary</b></property>
                             <property name="use_markup">True</property>
                           </object>
                           <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">3</property>
-                            <property name="bottom_attach">4</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label310">
+                          <object class="GtkLabel" id="label18">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">1</property>
-                            <property name="label" translatable="yes">Network name:</property>
-                            <property name="use_markup">True</property>
+                            <property name="label" translatable="yes">Network Name:</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-dhcp-start">
+                          <object class="GtkLabel" id="summary-name">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="label">/xen/demo.img</property>
-                            <property name="ellipsize">middle</property>
+                            <property name="label" translatable="yes">demo</property>
                           </object>
                           <packing>
                             <property name="left_attach">2</property>
                             <property name="right_attach">3</property>
-                            <property name="top_attach">7</property>
-                            <property name="bottom_attach">8</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-ip4-netmask">
+                          <object class="GtkLabel" id="label9">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label">255.255.255.0</property>
-                            <property name="ellipsize">middle</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Forwarding/Connectivity:</property>
                           </object>
                           <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
                             <property name="top_attach">5</property>
                             <property name="bottom_attach">6</property>
                             <property name="x_options">GTK_FILL</property>
@@ -1648,82 +2404,229 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-ip4-gateway">
+                          <object class="GtkLabel" id="summary-ipv4-forwarding">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="label">192.168.10.254</property>
-                            <property name="ellipsize">middle</property>
+                            <property name="label" translatable="yes">NAT</property>
                           </object>
                           <packing>
                             <property name="left_attach">2</property>
                             <property name="right_attach">3</property>
-                            <property name="top_attach">4</property>
-                            <property name="bottom_attach">5</property>
+                            <property name="top_attach">5</property>
+                            <property name="bottom_attach">6</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-dhcp-end">
+                          <object class="GtkLabel" id="label10">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label">5 GB</property>
+                            <property name="xalign">1</property>
+                            <property name="label" translatable="yes">Forwarding/Connectivity:</property>
                           </object>
                           <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">8</property>
-                            <property name="bottom_attach">9</property>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">11</property>
+                            <property name="bottom_attach">12</property>
+                            <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-ip4-network">
+                          <object class="GtkLabel" id="summary-ipv6-forwarding">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="xalign">0</property>
-                            <property name="label">192.168.10.0/24</property>
+                            <property name="label" translatable="yes">Routed</property>
                           </object>
                           <packing>
                             <property name="left_attach">2</property>
                             <property name="right_attach">3</property>
+                            <property name="top_attach">11</property>
+                            <property name="bottom_attach">12</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment43">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
                             <property name="top_attach">3</property>
                             <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="summary-name">
+                          <object class="GtkAlignment" id="alignment44">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label">demo</property>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </object>
                           <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
+                            <property name="top_attach">4</property>
+                            <property name="bottom_attach">5</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment51">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">5</property>
+                            <property name="bottom_attach">6</property>
+                            <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkLabel" id="label375">
+                          <object class="GtkAlignment" id="alignment52">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="ypad">5</property>
-                            <property name="label" translatable="yes"><b>Summary</b></property>
-                            <property name="use_markup">True</property>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </object>
                           <packing>
-                            <property name="right_attach">3</property>
+                            <property name="top_attach">6</property>
+                            <property name="bottom_attach">7</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment53">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">7</property>
+                            <property name="bottom_attach">8</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment54">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">9</property>
+                            <property name="bottom_attach">10</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment55">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">10</property>
+                            <property name="bottom_attach">11</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment56">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">11</property>
+                            <property name="bottom_attach">12</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment57">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">12</property>
+                            <property name="bottom_attach">13</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="alignment58">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="top_attach">13</property>
+                            <property name="bottom_attach">14</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"/>
                           </packing>
                         </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator10">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHSeparator" id="hseparator11">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">8</property>
+                            <property name="bottom_attach">9</property>
+                            <property name="x_options">GTK_FILL</property>
+                          </packing>
+                        </child>
                       </object>
                     </child>
                   </object>
diff --git a/virtManager/createnet.py b/virtManager/createnet.py
index 846cfbf..f6b70c9 100644
--- a/virtManager/createnet.py
+++ b/virtManager/createnet.py
@@ -32,8 +32,8 @@ from virtManager.baseclass import vmmGObjectUI
 PAGE_INTRO = 0
 PAGE_NAME = 1
 PAGE_IPV4 = 2
-PAGE_DHCP = 3
-PAGE_FORWARDING = 4
+PAGE_IPV6 = 3
+PAGE_MISC = 4
 PAGE_SUMMARY = 5
 
 
@@ -52,10 +52,16 @@ class vmmCreateNetwork(vmmGObjectUI):
 
             "on_net_name_activate": self.forward,
             "on_net_forward_toggled" : self.change_forward_type,
-            "on_net_network_changed": self.change_network,
-            "on_net_dhcp_enable_toggled": self.change_dhcp_enable,
-            "on_net_dhcp_start_changed": self.change_dhcp_start,
-            "on_net_dhcp_end_changed": self.change_dhcp_end,
+            "on_net-ipv4-enable_toggled" : self.change_ipv4_enable,
+            "on_net-ipv4-network_changed": self.change_network,
+            "on_net-dhcpv4-enable_toggled": self.change_dhcpv4_enable,
+            "on_net-dhcpv4-start_changed": self.change_dhcpv4_start,
+            "on_net-dhcpv4-end_changed": self.change_dhcpv4_end,
+            "on_net-ipv6-enable_toggled" : self.change_ipv6_enable,
+            "on_net-ipv6-network_changed": self.change_ipv6_network,
+            "on_net-dhcpv6-enable_toggled": self.change_dhcpv6_enable,
+            "on_net-dhcpv6-start_changed": self.change_dhcpv6_start,
+            "on_net-dhcpv6-end_changed": self.change_dhcpv6_end,
         })
         self.bind_escape_key_close()
 
@@ -86,7 +92,7 @@ class vmmCreateNetwork(vmmGObjectUI):
         notebook = self.widget("create-pages")
         notebook.set_show_tabs(False)
 
-        black = Gdk.Color.parse("#000")[1]
+        black  = Gdk.Color.parse("#000")[1]
         for num in range(PAGE_SUMMARY + 1):
             name = "page" + str(num) + "-title"
             self.widget(name).modify_bg(Gtk.StateType.NORMAL, black)
@@ -123,14 +129,28 @@ class vmmCreateNetwork(vmmGObjectUI):
         self.page_changed(None, None, 0)
 
         self.widget("net-name").set_text("")
-        self.widget("net-network").set_text("192.168.100.0/24")
-        self.widget("net-dhcp-enable").set_active(True)
-        self.widget("net-dhcp-start").set_text("")
-        self.widget("net-dhcp-end").set_text("")
+        self.widget("net-name").set_sensitive(True)
+        self.widget("net-domain-name").set_text("")
+        self.widget("net-domain-name").set_sensitive(True)
+        self.widget("net-ipv4-enable").set_active(True)
+        self.widget("net-ipv4-network").set_text("192.168.100.0/24")
+        self.widget("net-ipv4-network").set_sensitive(True)
+        self.widget("net-dhcpv4-enable").set_active(True)
+        self.widget("net-dhcpv4-start").set_text("192.168.100.128")
+        self.widget("net-dhcpv4-end").set_text("192.168.100.254")
+        self.widget("net-dhcpv4-start").set_sensitive(True)
+        self.widget("net-dhcpv4-end").set_sensitive(True)
+        self.widget("net-ipv6-enable").set_active(False)
+        self.widget("net-ipv6-network").set_text("")
+        self.widget("net-ipv6-network").set_sensitive(True)
+        self.widget("net-dhcpv6-enable").set_active(False)
+        self.widget("net-dhcpv6-start").set_text("")
+        self.widget("net-dhcpv6-end").set_text("")
         self.widget("net-forward-none").set_active(True)
 
         self.widget("net-forward").set_active(0)
         self.widget("net-forward-mode").set_active(0)
+        self.widget("net-enable-ipv6-networking").set_active(False)
 
 
     def forward(self, ignore=None):
@@ -145,6 +165,52 @@ class vmmCreateNetwork(vmmGObjectUI):
         notebook = self.widget("create-pages")
         notebook.prev_page()
 
+    def change_ipv4_enable(self, src):
+        white = Gdk.Color.parse("#f0f0f0")[1]
+        net4 = self.widget("net-ipv4-network")
+        start4 = self.widget("net-dhcpv4-start")
+        end4 = self.widget("net-dhcpv4-end")
+        if self.get_config_ipv4_enable():
+            net4.set_sensitive(True)
+            net4.set_text("")
+            net4.modify_bg(Gtk.StateType.NORMAL, white)
+            if self.get_config_dhcpv4_enable():
+                start4.set_sensitive(True)
+                end4.set_sensitive(True)
+        else:
+            net4.set_text("")
+            start4.set_text("")
+            end4.set_text("")
+            net4.set_sensitive(False)
+            start4.set_sensitive(False)
+            end4.set_sensitive(False)
+            net4.modify_bg(Gtk.StateType.NORMAL, white)
+            start4.modify_bg(Gtk.StateType.NORMAL, white)
+            end4.modify_bg(Gtk.StateType.NORMAL, white)
+
+    def change_ipv6_enable(self, src):
+        white = Gdk.Color.parse("#f0f0f0")[1]
+        net6 = self.widget("net-ipv6-network")
+        start6 = self.widget("net-dhcpv6-start")
+        end6 = self.widget("net-dhcpv6-end")
+        if self.get_config_ipv6_enable():
+            net6.set_sensitive(True)
+            net6.set_text("")
+            net6.modify_bg(Gtk.StateType.NORMAL, white)
+            if self.get_config_dhcpv6_enable():
+                start6.set_sensitive(True)
+                end6.set_sensitive(True)
+        else:
+            net6.set_text("")
+            start6.set_text("")
+            end6.set_text("")
+            net6.set_sensitive(False)
+            start6.set_sensitive(False)
+            end6.set_sensitive(False)
+            net6.modify_bg(Gtk.StateType.NORMAL, white)
+            start6.modify_bg(Gtk.StateType.NORMAL, white)
+            end6.modify_bg(Gtk.StateType.NORMAL, white)
+
     def change_network(self, src):
         ip = self.get_config_ip4()
         green = Gdk.Color.parse("#c0ffc0")[1]
@@ -154,61 +220,182 @@ class vmmCreateNetwork(vmmGObjectUI):
 
         # No IP specified or invalid IP
         if ip is None or ip.version != 4:
-            src.modify_base(Gtk.StateType.NORMAL, red)
-            self.widget("net-info-netmask").set_text("")
-            self.widget("net-info-broadcast").set_text("")
+            src.modify_bg(Gtk.StateType.NORMAL, red)
             self.widget("net-info-gateway").set_text("")
-            self.widget("net-info-size").set_text("")
             self.widget("net-info-type").set_text("")
+            self.widget("net-dhcpv4-start").set_text("")
+            self.widget("net-dhcpv4-end").set_text("")
             return
 
-        # FIXME: handle other networks and not just private?
         # We've got a valid IP
         if ip.numhosts < 16 or not ip.is_private:
-            src.modify_base(gtk.STATE_NORMAL, red)
+            src.modify_bg(Gtk.StateType.NORMAL, red)
         else:
-            src.modify_base(Gtk.StateType.NORMAL, green)
-        self.widget("net-info-netmask").set_text(str(ip.netmask))
-        self.widget("net-info-broadcast").set_text(str(ip.broadcast))
+            src.modify_bg(Gtk.StateType.NORMAL, green)
 
         if ip.prefixlen == 32:
             self.widget("net-info-gateway").set_text("")
         else:
             self.widget("net-info-gateway").set_text(str(ip.network + 1))
-        self.widget("net-info-size").set_text(_("%d addresses") %
-                                                         (ip.numhosts))
 
         if ip.is_private:
             self.widget("net-info-type").set_text(_("Private"))
+        else:
+            self.widget("net-info-type").set_text(_("Other/Public"))
+
+        if self.get_config_dhcpv4_enable():
+            self.widget("net-dhcpv4-start").set_sensitive(True)
+            self.widget("net-dhcpv4-end").set_sensitive(True)
+            start = int(ip.numhosts / 2)
+            end   = int(ip.numhosts - 2)
+            self.widget("net-dhcpv4-start").set_text(str(ip.network + start))
+            self.widget("net-dhcpv4-end").set_text(str(ip.network + end))
+        else:
+            self.widget("net-dhcpv4-start").set_sensitive(False)
+            self.widget("net-dhcpv4-end").set_sensitive(False)
+
+    def change_ipv6_network(self, src):
+        ip = self.get_config_ip6()
+        green = Gdk.Color.parse("#c0ffc0")[1]
+        red = Gdk.Color.parse("#ffc0c0")[1]
+        black = Gdk.Color.parse("#000000")[1]
+        src.modify_text(Gtk.StateType.NORMAL, black)
+
+        # No IP specified or invalid IP
+        if ip is None or ip.version != 6:
+            src.modify_bg(Gtk.StateType.NORMAL, red)
+            self.widget("net-info-gateway-ip6").set_text("")
+            self.widget("net-info-type-ip6").set_text("")
+            self.widget("net-dhcpv6-start").set_text("")
+            self.widget("net-dhcpv6-end").set_text("")
+            return
+
+        if ip.prefixlen != 64 or not ip.is_private:
+            src.modify_bg(Gtk.StateType.NORMAL, red)
+        else:
+            src.modify_bg(Gtk.StateType.NORMAL, green)
+
+        if ip.prefixlen != 64:
+            self.widget("net-info-gateway-ip6").set_text("")
+        else:
+            self.widget("net-info-gateway-ip6").set_text(str(ip.network + 1))
+
+        if ip.is_private:
+            self.widget("net-info-type-ip6").set_text(_("Private"))
         elif ip.is_reserved:
-            self.widget("net-info-type").set_text(_("Reserved"))
+            self.widget("net-info-type-ip6").set_text(_("Reserved"))
+        elif ip.is_unspecified:
+            self.widget("net-info-type-ip6").set_text(_("Unspecified"))
+        else:
+            self.widget("net-info-type-ip6").set_text(_("Other/Public"))
+
+        if self.get_config_dhcpv6_enable():
+            self.widget("net-dhcpv6-start").set_sensitive(True)
+            self.widget("net-dhcpv6-end").set_sensitive(True)
+            start = 256
+            end   = 512 - 1
+            self.widget("net-dhcpv6-start").set_text(str(ip.network + start))
+            self.widget("net-dhcpv6-end").set_text(str(ip.network + end))
+        else:
+            self.widget("net-dhcpv6-start").set_sensitive(False)
+            self.widget("net-dhcpv6-end").set_sensitive(False)
+
+
+    def change_dhcpv4_enable(self, src):
+        white = Gdk.Color.parse("#f0f0f0")[1]
+        start4 = self.widget("net-dhcpv4-start")
+        end4 = self.widget("net-dhcpv4-end")
+        start4.modify_bg(Gtk.StateType.NORMAL, white)
+        end4.modify_bg(Gtk.StateType.NORMAL, white)
+        start4.set_text("")
+        end4.set_text("")
+
+        if not self.get_config_dhcpv4_enable():
+            start4.set_sensitive(False)
+            end4.set_sensitive(False)
         else:
-            self.widget("net-info-type").set_text(_("Other"))
+            start4.set_sensitive(True)
+            end4.set_sensitive(True)
 
-    def change_dhcp_enable(self, src):
-        val = src.get_active()
-        self.widget("net-dhcp-start").set_sensitive(val)
-        self.widget("net-dhcp-end").set_sensitive(val)
+            ip = self.get_config_ip4()
+            if ip:
+                start = int(ip.numhosts / 2)
+                end   = int(ip.numhosts - 2)
+                start4.set_text(str(ip.network + start))
+                end4.set_text(str(ip.network + end))
 
-    def change_dhcp_start(self, src):
-        start = self.get_config_dhcp_start()
-        self.change_dhcp(src, start)
+    def change_dhcpv4_start(self, src):
+        start = self.get_config_dhcpv4_start()
+        self.change_dhcpv4(src, start)
 
-    def change_dhcp_end(self, src):
-        end = self.get_config_dhcp_end()
-        self.change_dhcp(src, end)
+    def change_dhcpv4_end(self, src):
+        end = self.get_config_dhcpv4_end()
+        self.change_dhcpv4(src, end)
 
-    def change_dhcp(self, src, addr):
+    def change_dhcpv4(self, src, addr):
         ip = self.get_config_ip4()
         black = Gdk.Color.parse("#000000")[1]
         src.modify_text(Gtk.StateType.NORMAL, black)
+        if not ip:
+            return
 
-        if addr is None or not ip.overlaps(addr):
+        if addr is None:
+            white = Gdk.Color.parse("#f0f0f0")[1]
+            src.modify_bg(Gtk.StateType.NORMAL, white)
+        elif not ip.overlaps(addr):
             red = Gdk.Color.parse("#ffc0c0")[1]
-            src.modify_base(Gtk.StateType.NORMAL, red)
+            src.modify_bg(Gtk.StateType.NORMAL, red)
         else:
             green = Gdk.Color.parse("#c0ffc0")[1]
-            src.modify_base(Gtk.StateType.NORMAL, green)
+            src.modify_bg(Gtk.StateType.NORMAL, green)
+
+    def change_dhcpv6_enable(self, src):
+        white = Gdk.Color.parse("#f0f0f0")[1]
+        start6 = self.widget("net-dhcpv6-start")
+        end6 = self.widget("net-dhcpv6-end")
+        start6.modify_bg(Gtk.StateType.NORMAL, white)
+        end6.modify_bg(Gtk.StateType.NORMAL, white)
+        start6.set_text("")
+        end6.set_text("")
+        if not self.get_config_dhcpv6_enable():
+            start6.set_sensitive(False)
+            end6.set_sensitive(False)
+
+        else:
+            start6.set_sensitive(True)
+            end6.set_sensitive(True)
+
+            ip = self.get_config_ip6()
+            if ip:
+                start = 256
+                end   = 512 - 1
+                start6.set_text(str(ip.network + start))
+                end6.set_text(str(ip.network + end))
+
+    def change_dhcpv6_start(self, src):
+        start = self.get_config_dhcpv6_start()
+        self.change_dhcpv6(src, start)
+
+    def change_dhcpv6_end(self, src):
+        end = self.get_config_dhcpv6_end()
+        self.change_dhcpv6(src, end)
+
+    def change_dhcpv6(self,src,addr):
+        ip = self.get_config_ip6()
+        black = Gdk.Color.parse("#000000")[1]
+        src.modify_text(Gtk.StateType.NORMAL, black)
+        if not ip:
+            return
+
+        if addr is None:
+            white = Gdk.Color.parse("#f0f0f0")[1]
+            src.modify_bg(Gtk.StateType.NORMAL, white)
+        elif not ip.overlaps(addr):
+            red = Gdk.Color.parse("#ffc0c0")[1]
+            src.modify_bg(Gtk.StateType.NORMAL, red)
+        else:
+            green = Gdk.Color.parse("#c0ffc0")[1]
+            src.modify_bg(Gtk.StateType.NORMAL, green)
 
     def change_forward_type(self, src_ignore):
         skip_fwd = self.widget("net-forward-none").get_active()
@@ -219,20 +406,44 @@ class vmmCreateNetwork(vmmGObjectUI):
     def get_config_name(self):
         return self.widget("net-name").get_text()
 
+    def get_config_domain_name(self):
+        return self.widget("net-domain-name").get_text()
+
     def get_config_ip4(self):
+        if not self.get_config_ipv4_enable():
+            return None
+        try:
+            return ipaddr.IPNetwork(self.widget("net-ipv4-network").get_text())
+        except:
+            return None
+
+    def get_config_dhcpv4_start(self):
+        try:
+            return ipaddr.IPNetwork(self.widget("net-dhcpv4-start").get_text())
+        except:
+            return None
+    def get_config_dhcpv4_end(self):
+        try:
+            return ipaddr.IPNetwork(self.widget("net-dhcpv4-end").get_text())
+        except:
+            return None
+
+    def get_config_ip6(self):
+        if not self.get_config_ipv6_enable():
+            return None
         try:
-            return ipaddr.IPNetwork(self.widget("net-network").get_text())
+            return ipaddr.IPNetwork(self.widget("net-ipv6-network").get_text())
         except:
             return None
 
-    def get_config_dhcp_start(self):
+    def get_config_dhcpv6_start(self):
         try:
-            return ipaddr.IPNetwork(self.widget("net-dhcp-start").get_text())
+            return ipaddr.IPNetwork(self.widget("net-dhcpv6-start").get_text())
         except:
             return None
-    def get_config_dhcp_end(self):
+    def get_config_dhcpv6_end(self):
         try:
-            return ipaddr.IPNetwork(self.widget("net-dhcp-end").get_text())
+            return ipaddr.IPNetwork(self.widget("net-dhcpv6-end").get_text())
         except:
             return None
 
@@ -250,53 +461,167 @@ class vmmCreateNetwork(vmmGObjectUI):
             mode = mode_w.get_model()[mode_w.get_active()][1]
             return [name, mode]
 
-    def get_config_dhcp_enable(self):
-        return self.widget("net-dhcp-enable").get_active()
+    def get_config_ipv4_enable(self):
+        return self.widget("net-ipv4-enable").get_active()
+
+    def get_config_ipv6_enable(self):
+        return self.widget("net-ipv6-enable").get_active()
+
+    def get_config_dhcpv4_enable(self):
+        return self.widget("net-dhcpv4-enable").get_active()
+
+    def get_config_dhcpv6_enable(self):
+        return self.widget("net-dhcpv6-enable").get_active()
 
     def populate_summary(self):
-        dodhcp = self.get_config_dhcp_enable()
         self.widget("summary-name").set_text(self.get_config_name())
+        self.widget("summary-domain").set_text(self.get_config_domain_name())
+        self.widget("summary-ip4-network").set_text("");
+        self.widget("summary-ip4-gateway").set_text("");
+        self.widget("summary-ip6-network").set_text("");
+        self.widget("summary-ip6-gateway").set_text("");
 
         ip = self.get_config_ip4()
-        self.widget("summary-ip4-network").set_text(str(ip))
-        self.widget("summary-ip4-gateway").set_text(str(ip.network + 1))
-        self.widget("summary-ip4-netmask").set_text(str(ip.netmask))
-
-        self.widget("label-dhcp-end").set_property("visible", dodhcp)
-        self.widget("summary-dhcp-end").set_property("visible", dodhcp)
-        if dodhcp:
-            start = self.get_config_dhcp_start()
-            end = self.get_config_dhcp_end()
-            self.widget("summary-dhcp-start").set_text(str(start.network))
-            self.widget("summary-dhcp-end").set_text(str(end.network))
-            self.widget("label-dhcp-start").set_text(_("Start address:"))
+        if ip:
+            self.widget("label-ip4-gateway").show()
+            self.widget("summary-ip4-gateway").show()
+            self.widget("label-ip4-network").set_text(_("Network:"))
+            self.widget("summary-ip4-network").set_text(str(ip))
+            self.widget("summary-ip4-gateway").set_text(str(ip.network + 1))
+        else:
+            self.widget("label-ip4-gateway").hide()
+            self.widget("summary-ip4-gateway").hide()
+            self.widget("label-ip4-network").set_text("IPv4 Network:")
+            self.widget("summary-ip4-network").set_text("Not Defined")
+
+        if ip and self.get_config_dhcpv4_enable():
             self.widget("label-dhcp-end").show()
             self.widget("summary-dhcp-end").show()
+            start = self.get_config_dhcpv4_start()
+            end = self.get_config_dhcpv4_end()
+            self.widget("label-dhcp-start").set_text("Start Address:")
+            if start and end:
+                self.widget("summary-dhcp-start").set_text(str(start.network))
+                self.widget("summary-dhcp-end").set_text(str(end.network))
+            else:
+                self.widget("summary-dhcp-start").set_text("?")
+                self.widget("summary-dhcp-end").set_text("?")
         else:
-            self.widget("label-dhcp-start").set_text(_("Status:"))
+            self.widget("label-dhcp-end").hide()
+            self.widget("summary-dhcp-end").hide()
+            self.widget("label-dhcp-start").set_text(_("DHCPv4 Status:"))
             self.widget("summary-dhcp-start").set_text(_("Disabled"))
 
         forward_txt = ""
         dev, mode = self.get_config_forwarding()
         forward_txt = vmmNetwork.pretty_desc(mode, dev)
-        self.widget("summary-forwarding").set_text(forward_txt)
+        self.widget("summary-ipv4-forwarding").set_text(forward_txt)
+
+        ip = self.get_config_ip6()
+        if ip:
+            self.widget("label-ip6-gateway").show()
+            self.widget("summary-ip6-gateway").show()
+            self.widget("label-ip6-network").set_text(_("Network:"))
+            self.widget("summary-ip6-network").set_text(str(ip))
+            self.widget("summary-ip6-gateway").set_text(str(ip.network + 1))
+        else:
+            self.widget("label-ip6-gateway").hide()
+            self.widget("summary-ip6-gateway").hide()
+            self.widget("label-ip6-network").set_text(_("IPV6 Network:"))
+            self.widget("summary-ip6-network").set_text(_("Not Defined"))
+
+
+        if ip and self.get_config_dhcpv6_enable():
+            self.widget("label-dhcpv6-end").show()
+            self.widget("summary-dhcpv6-end").show()
+            start = self.get_config_dhcpv6_start()
+            end = self.get_config_dhcpv6_end()
+            self.widget("label-dhcpv6-start").set_text("Start Address:")
+            if start and end:
+                self.widget("summary-dhcpv6-start").set_text(str(start.network))
+                self.widget("summary-dhcpv6-end").set_text(str(end.network))
+            else:
+                self.widget("summary-dhcpv6-start").set_text("?")
+                self.widget("summary-dhcpv6-end").set_text("?")
+        else:
+            self.widget("label-dhcpv6-end").hide()
+            self.widget("summary-dhcpv6-end").hide()
+            self.widget("label-dhcpv6-start").set_text(_("DHCPv6 Status:"))
+            self.widget("summary-dhcpv6-start").set_text(_("Disabled"))
+        if ip:
+            self.widget("summary-ipv6-forwarding").set_text("Routed network")
+        else:
+            if self.widget("net-enable-ipv6-networking").get_active():
+                self.widget("summary-ipv6-forwarding").set_text("Isolated network, internal routing only")
+            else:
+                self.widget("summary-ipv6-forwarding").set_text("Isolated network")
+
+    def populate_ipv4(self):
+        if not self.get_config_ipv4_enable():
+            self.widget("net-ipv4-network").set_text("")
+            self.widget("net-dhcpv4-end").set_text("")
+            self.widget("net-dhcpv4-start").set_text("")
+            self.widget("net-ipv4-network").set_sensitive(False)
+            self.widget("net-dhcpv4-start").set_sensitive(False)
+            self.widget("net-dhcpv4-end").set_sensitive(False)
+            return
+        self.widget("net-ipv4-network").set_sensitive(True)
 
-    def populate_dhcp(self):
-        ip = self.get_config_ip4()
-        start = int(ip.numhosts / 2)
-        end   = int(ip.numhosts - 2)
+        if not self.get_config_dhcpv4_enable():
+            self.widget("net-dhcpv4-end").set_text("")
+            self.widget("net-dhcpv4-start").set_text("")
+            self.widget("net-dhcpv4-start").set_sensitive(False)
+            self.widget("net-dhcpv4-end").set_sensitive(False)
+            return
+        else:
+            ip = self.get_config_ip4()
+            if ip:
+                start = int(ip.numhosts / 2)
+                end   = int(ip.numhosts - 2)
+                if self.widget("net-dhcpv4-start").get_text() == "":
+                    self.widget("net-dhcpv4-start").set_text(str(ip.network + start))
+                    self.widget("net-dhcpv4-end").set_text(str(ip.network + end))
+            self.widget("net-dhcpv4-start").set_sensitive(True)
+            self.widget("net-dhcpv4-end").set_sensitive(True)
+
+
+    def populate_ipv6(self):
+        if not self.get_config_ipv6_enable():
+            self.widget("net-ipv6-network").set_text("")
+            self.widget("net-dhcpv6-end").set_text("")
+            self.widget("net-dhcpv6-start").set_text("")
+            self.widget("net-ipv6-network").set_sensitive(False)
+            self.widget("net-dhcpv6-start").set_sensitive(False)
+            self.widget("net-dhcpv6-end").set_sensitive(False)
+            return
+        self.widget("net-ipv6-network").set_sensitive(True)
 
-        if self.widget("net-dhcp-start").get_text() == "":
-            self.widget("net-dhcp-start").set_text(str(ip.network + start))
-        if self.widget("net-dhcp-end").get_text() == "":
-            self.widget("net-dhcp-end").set_text(str(ip.network + end))
+        if not self.get_config_dhcpv6_enable():
+            self.widget("net-dhcpv6-end").set_text("")
+            self.widget("net-dhcpv6-start").set_text("")
+            self.widget("net-dhcpv6-start").set_sensitive(False)
+            self.widget("net-dhcpv6-end").set_sensitive(False)
+            return
+        else:
+            ip = self.get_config_ip6()
+            if ip:
+                start = 256
+                end   = 512 - 1
+                if self.widget("net-dhcpv6-start").get_text() == "":
+                    self.widget("net-dhcpv6-start").set_text(str(ip.network + start))
+                    self.widget("net-dhcpv6-end").set_text(str(ip.network + end))
+            self.widget("net-dhcpv6-start").set_sensitive(True)
+            self.widget("net-dhcpv6-end").set_sensitive(True)
 
     def page_changed(self, ignore1, ignore2, page_number):
         if page_number == PAGE_NAME:
             name_widget = self.widget("net-name")
+            name_widget.set_sensitive(True)
             name_widget.grab_focus()
-        elif page_number == PAGE_DHCP:
-            self.populate_dhcp()
+        elif page_number == PAGE_IPV4:
+            self.populate_ipv4()
+        elif page_number == PAGE_IPV6:
+            self.populate_ipv6()
         elif page_number == PAGE_SUMMARY:
             self.populate_summary()
 
@@ -316,30 +641,53 @@ class vmmCreateNetwork(vmmGObjectUI):
 
     def finish(self, ignore=None):
         name = self.get_config_name()
-        ip = self.get_config_ip4()
-        start = self.get_config_dhcp_start()
-        end = self.get_config_dhcp_end()
         dev, mode = self.get_config_forwarding()
 
-        xml = "<network>\n"
+        if self.widget("net-enable-ipv6-networking").get_active():
+            xml = "<network ipv6='yes'>\n"
+        else:
+            xml = "<network>\n"
+
         xml += "  <name>%s</name>\n" % name
 
+        domain_name = self.get_config_domain_name()
+        if len(domain_name) != 0:
+            xml += "  <domain name='%s' />\n" % domain_name
+
         if mode:
             if dev is not None:
                 xml += "  <forward mode='%s' dev='%s'/>\n" % (mode, dev)
             else:
                 xml += "  <forward mode='%s'/>\n" % mode
 
-        xml += "  <ip address='%s' netmask='%s'>\n" % (str(ip.network + 1),
+        if self.get_config_ipv4_enable():
+            ip = self.get_config_ip4()
+            xml += "  <ip address='%s' netmask='%s'>\n" % (str(ip.network + 1),
                                                        str(ip.netmask))
 
-        if self.get_config_dhcp_enable():
-            xml += "    <dhcp>\n"
-            xml += "      <range start='%s' end='%s'/>\n" % (str(start.network),
-                                                             str(end.network))
-            xml += "    </dhcp>\n"
+            if self.get_config_dhcpv4_enable():
+                start = self.get_config_dhcpv4_start()
+                end = self.get_config_dhcpv4_end()
+                xml += "    <dhcp>\n"
+                xml += "      <range start='%s' end='%s'/>\n" % (str(start.network),
+                                                       str(end.network))
+                xml += "    </dhcp>\n"
+            xml += "  </ip>\n"
+
+        if self.get_config_ipv6_enable():
+            ip = self.get_config_ip6()
+            xml += "  <ip family='ipv6' address='%s' prefix='%s'>\n" % (str(ip.network + 1),
+                                                       str(ip.prefixlen))
+
+            if self.get_config_dhcpv6_enable():
+                start = self.get_config_dhcpv6_start()
+                end = self.get_config_dhcpv6_end()
+                xml += "    <dhcp>\n"
+                xml += "      <range start='%s' end='%s'/>\n" % (str(start.network),
+                                                                str(end.network))
+                xml += "    </dhcp>\n"
+            xml += "  </ip>\n"
 
-        xml += "  </ip>\n"
         xml += "</network>\n"
 
         logging.debug("Generated network XML:\n" + xml)
@@ -354,11 +702,14 @@ class vmmCreateNetwork(vmmGObjectUI):
         self.close()
 
     def validate_name(self):
-        name = self.widget("net-name").get_text()
+        name_widget = self.widget("net-name")
+        name = name_widget.get_text()
         if len(name) > 50 or len(name) == 0:
-            return self.err.val_err(_("Invalid Network Name"),
+            retcode = self.err.val_err(_("Invalid Network Name"),
                         _("Network name must be non-blank and less than "
                           "50 characters"))
+            name_widget.grab_focus()
+            return retcode
         if re.match("^[a-zA-Z0-9_]*$", name) is None:
             return self.err.val_err(_("Invalid Network Name"),
                         _("Network name may contain alphanumeric and '_' "
@@ -366,6 +717,8 @@ class vmmCreateNetwork(vmmGObjectUI):
         return True
 
     def validate_ipv4(self):
+        if not self.get_config_ipv4_enable():
+            return True
         ip = self.get_config_ip4()
         if ip is None:
             return self.err.val_err(_("Invalid Network Address"),
@@ -386,32 +739,82 @@ class vmmCreateNetwork(vmmGObjectUI):
             if not res:
                 return False
 
+        enabled = self.get_config_dhcpv4_enable()
+        if enabled:
+            start = self.get_config_dhcpv4_start()
+            end = self.get_config_dhcpv4_end()
+            if enabled and start is None:
+                return self.err.val_err(_("Invalid DHCP Address"),
+                            _("The DHCP start address could not be understood"))
+            if enabled and end is None:
+                return self.err.val_err(_("Invalid DHCP Address"),
+                            _("The DHCP end address could not be understood"))
+            if enabled and not ip.overlaps(start):
+                return self.err.val_err(_("Invalid DHCP Address"),
+                        (_("The DHCP start address is not with the network %s") %
+                         (str(ip))))
+            if enabled and not ip.overlaps(end):
+                return self.err.val_err(_("Invalid DHCP Address"),
+                        (_("The DHCP end address is not with the network %s") %
+                         (str(ip))))
+
         return True
 
-    def validate_dhcp(self):
-        ip = self.get_config_ip4()
-        start = self.get_config_dhcp_start()
-        end = self.get_config_dhcp_end()
-        enabled = self.widget("net-dhcp-enable").get_active()
-
-        if enabled and start is None:
-            return self.err.val_err(_("Invalid DHCP Address"),
-                        _("The DHCP start address could not be understood"))
-        if enabled and end is None:
-            return self.err.val_err(_("Invalid DHCP Address"),
-                        _("The DHCP end address could not be understood"))
-
-        if enabled and not ip.overlaps(start):
-            return self.err.val_err(_("Invalid DHCP Address"),
-                    (_("The DHCP start address is not with the network %s") %
-                     (str(ip))))
-        if enabled and not ip.overlaps(end):
-            return self.err.val_err(_("Invalid DHCP Address"),
-                    (_("The DHCP end address is not with the network %s") %
-                     (str(ip))))
+    def validate_ipv6(self):
+        if not self.get_config_ipv6_enable():
+            return True
+        ip = self.get_config_ip6()
+        if ip is None:
+            return self.err.val_err(_("Invalid Network Address"),
+                    _("The network address could not be understood"))
+
+        if ip.version != 6:
+            return self.err.val_err(_("Invalid Network Address"),
+                    _("The network must be an IPv6 address"))
+
+        if ip.prefixlen != 64:
+            return self.err.val_err(_("Invalid Network Address"),
+                    _("For libvirt, the IPv6 network prefix must be 64"))
+
+        if not ip.is_private:
+            res = self.err.yes_no(_("Check Network Address"),
+                    _("The network should normally use a private IPv4 "
+                      "address. Use this non-private address anyway?"))
+            if not res:
+                return False
+
+        enabled = self.get_config_dhcpv6_enable()
+        if enabled:
+            start = self.get_config_dhcpv6_start()
+            end = self.get_config_dhcpv6_end()
+            if start is None:
+                return self.err.val_err(_("Invalid DHCPv6 Address"),
+                            _("The DHCPv6 start address could not be understood"))
+            if end is None:
+                return self.err.val_err(_("Invalid DHCPv6 Address"),
+                            _("The DHCPv6 end address could not be understood"))
+            if not ip.overlaps(start):
+                return self.err.val_err(_("Invalid DHCPv6 Address"),
+                        (_("The DHCPv6 start address is not with the network %s") %
+                         (str(ip))))
+            if not ip.overlaps(end):
+                return self.err.val_err(_("Invalid DHCPv6 Address"),
+                        (_("The DHCPv6 end address is not with the network %s") %
+                         (str(ip))))
+
         return True
 
-    def validate_forwarding(self):
+    def validate_miscellaneous(self):
+        domain_name = self.widget("net-domain-name").get_text()
+        if len(domain_name) > 0:
+            if len(domain_name) > 16:
+                return self.err.val_err(_("Invalid Domain Name"),
+                            _("Domain name must be less than 17 characters"))
+            if re.match("^[a-zA-Z0-9_]*$", domain_name) is None:
+                return self.err.val_err(_("Invalid Domain Name"),
+                            _("Domain name may contain alphanumeric and '_' "
+                              "characters only"))
+
         if not self.widget("net-forward-dev").get_active():
             return True
 
@@ -426,8 +829,8 @@ class vmmCreateNetwork(vmmGObjectUI):
             return self.validate_name()
         elif page_num == PAGE_IPV4:
             return self.validate_ipv4()
-        elif page_num == PAGE_DHCP:
-            return self.validate_dhcp()
-        elif page_num == PAGE_FORWARDING:
-            return self.validate_forwarding()
+        elif page_num == PAGE_IPV6:
+            return self.validate_ipv6()
+        elif page_num == PAGE_MISC:
+            return self.validate_miscellaneous()
         return True
-- 
1.8.1.4




More information about the virt-tools-list mailing list