---
 www/manager/lxc/Network.js | 115 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 112 insertions(+), 3 deletions(-)

diff --git a/www/manager/lxc/Network.js b/www/manager/lxc/Network.js
index 5fe798c..7d152cc 100644
--- a/www/manager/lxc/Network.js
+++ b/www/manager/lxc/Network.js
@@ -33,7 +33,11 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
        }
 
        var newdata = {};
-       
+
+       if (values['ipv6mode'] !== 'static')
+           values['ip6'] = values['ipv6mode'];
+       if (values['ipv4mode'] !== 'static')
+           values['ip'] = values['ipv4mode']
        newdata[id] = PVE.Parser.printLxcNetwork(values);
        return newdata;
     },
@@ -145,13 +149,64 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                checked: cdata.firewall,
            }
        ];
+
+       var dhcp4 = (cdata.ip === 'dhcp');
+       if (dhcp4) {
+           cdata.ip = '';
+           cdata.gw = '';
+       }
+
+       var auto6 = (cdata.ip6 === 'auto');
+       var dhcp6 = (cdata.ip6 === 'dhcp');
+       if (auto6 || dhcp6) {
+           cdata.ip6 = '';
+           cdata.gw6 = '';
+       }
        
        me.column2 = [
            {
+               layout: {
+                   type: 'hbox',
+                   align: 'middle'
+               },
+               border: false,
+               margin: '0 0 5 0',
+               height: 22, // hack: set same height as text fields
+               items: [
+                   {
+                       xtype: 'label',
+                       text: gettext('IPv4') + ':',
+                   },
+                   {
+                       xtype: 'radiofield',
+                       boxLabel: gettext('Static'),
+                       name: 'ipv4mode',
+                       inputValue: 'static',
+                       checked: !dhcp4,
+                       margin: '0 0 0 10',
+                       listeners: {
+                           change: function(cb, value) {
+                               me.down('field[name=ip]').setDisabled(!value);
+                               me.down('field[name=gw]').setDisabled(!value);
+                           }
+                       }
+                   },
+                   {
+                       xtype: 'radiofield',
+                       boxLabel: gettext('DHCP'),
+                       name: 'ipv4mode',
+                       inputValue: 'dhcp',
+                       checked: dhcp4,
+                       margin: '0 0 0 10'
+                   }
+               ]
+           },
+           {
                xtype: 'textfield',
                name: 'ip',
                vtype: 'IPCIDRAddress',
                value: cdata.ip,
+               disabled: dhcp4,
                fieldLabel: gettext('IPv4/CIDR')
            },
            {
@@ -159,13 +214,66 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                name: 'gw',
                value: cdata.gw,
                vtype: 'IPAddress',
-               fieldLabel: gettext('Gateway') + ' (' + gettext('IPv4') +')'
+               disabled: dhcp4,
+               fieldLabel: gettext('Gateway') + ' (' + gettext('IPv4') +')',
+               margin: '0 0 3 0' // override bottom margin to account for the 
menuseparator
+           },
+           {
+               xtype: 'menuseparator',
+               height: '3',
+               margin: '0'
+           },
+           {
+               layout: {
+                   type: 'hbox',
+                   align: 'middle'
+               },
+               border: false,
+               margin: '0 0 5 0',
+               height: 22, // hack: set same height as text fields
+               items: [
+                   {
+                       xtype: 'label',
+                       text: gettext('IPv6') + ':',
+                   },
+                   {
+                       xtype: 'radiofield',
+                       boxLabel: gettext('Static'),
+                       name: 'ipv6mode',
+                       inputValue: 'static',
+                       checked: !(auto6 || dhcp6),
+                       margin: '0 0 0 10',
+                       listeners: {
+                           change: function(cb, value) {
+                               me.down('field[name=ip6]').setDisabled(!value);
+                               me.down('field[name=gw6]').setDisabled(!value);
+                           }
+                       }
+                   },
+                   {
+                       xtype: 'radiofield',
+                       boxLabel: gettext('DHCP'),
+                       name: 'ipv6mode',
+                       inputValue: 'dhcp',
+                       checked: dhcp6,
+                       margin: '0 0 0 10'
+                   },
+                   {
+                       xtype: 'radiofield',
+                       boxLabel: gettext('SLAAC'),
+                       name: 'ipv6mode',
+                       inputValue: 'auto',
+                       checked: auto6,
+                       margin: '0 0 0 10'
+                   }
+               ]
            },
            {
                xtype: 'textfield',
                name: 'ip6',
                value: cdata.ip6,
                vtype: 'IP6CIDRAddress',
+               disabled: (dhcp6 || auto6),
                fieldLabel: gettext('IPv6/CIDR')
            },
            {
@@ -173,8 +281,9 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                name: 'gw6',
                vtype: 'IP6Address',
                value: cdata.gw6,
+               disabled: (dhcp6 || auto6),
                fieldLabel: gettext('Gateway') + ' (' + gettext('IPv6') +')'
-           }   
+           }
        ];
 
        me.callParent();
-- 
2.1.4


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to