@@ -64,6 +64,10 @@ def dhcp_change():
6464 for x in [ ip_field , gateway_field , subnet_field , dns_field ]:
6565 x .setFlags (FLAG_DISABLED , static_rb .selected ())
6666
67+ # Allow manual DNS for autoconf
68+ if autoconf_rb .selected ():
69+ dns_field .setFlags (FLAG_DISABLED , True )
70+
6771 ipv6 = iface_class == NetInterfaceV6
6872
6973 gf = GridFormHelp (tui .screen , 'Networking' , 'ifconfig' , 1 , 10 )
@@ -123,16 +127,19 @@ def dhcp_change():
123127 dns_text = Textbox (15 , 1 , "Nameserver:" )
124128 vlan_text = Textbox (15 , 1 , "VLAN (1-4094):" )
125129
126- entry_grid = Grid (2 , include_dns and 4 or 3 )
130+ entry_grid = Grid (2 , 3 )
127131 entry_grid .setField (ip_text , 0 , 0 )
128132 entry_grid .setField (ip_field , 1 , 0 )
129133 entry_grid .setField (subnet_text , 0 , 1 )
130134 entry_grid .setField (subnet_field , 1 , 1 )
131135 entry_grid .setField (gateway_text , 0 , 2 )
132136 entry_grid .setField (gateway_field , 1 , 2 )
137+
138+ dns_grid = None
133139 if include_dns :
134- entry_grid .setField (dns_text , 0 , 3 )
135- entry_grid .setField (dns_field , 1 , 3 )
140+ dns_grid = Grid (2 , 1 )
141+ dns_grid .setField (dns_text , 0 , 0 )
142+ dns_grid .setField (dns_field , 1 , 0 )
136143
137144 vlan_grid = Grid (2 , 1 )
138145 vlan_grid .setField (vlan_text , 0 , 0 )
@@ -144,9 +151,11 @@ def dhcp_change():
144151 gf .add (entry_grid , 0 , 4 , padding = (0 , 0 , 0 , 1 ))
145152 if ipv6 :
146153 gf .add (autoconf_rb , 0 , 5 , anchorLeft = True )
147- gf .add (vlan_cb , 0 , 6 , anchorLeft = True )
148- gf .add (vlan_grid , 0 , 7 , padding = (0 , 0 , 0 , 1 ))
149- gf .add (buttons , 0 , 8 , growx = 1 )
154+ if include_dns :
155+ gf .add (dns_grid , 0 , 6 , anchorLeft = True )
156+ gf .add (vlan_cb , 0 , 7 , anchorLeft = True )
157+ gf .add (vlan_grid , 0 , 8 , padding = (0 , 0 , 0 , 1 ))
158+ gf .add (buttons , 0 , 9 , growx = 1 )
150159
151160 loop = True
152161 ip_family = socket .AF_INET6 if ipv6 else socket .AF_INET
@@ -166,6 +175,9 @@ def dhcp_change():
166175 msg = 'Gateway'
167176 elif dns_field .value () != '' and not netutil .valid_ip_address_family (dns_field .value (), ip_family ):
168177 msg = 'Nameserver'
178+ elif autoconf_rb .selected ():
179+ if dns_field .value () != '' and not netutil .valid_ip_address_family (dns_field .value (), ip_family ):
180+ msg = 'Nameserver'
169181 if vlan_cb .selected ():
170182 if not netutil .valid_vlan (vlan_field .value ()):
171183 msg = 'VLAN'
@@ -184,7 +196,8 @@ def dhcp_change():
184196 if dhcp_rb .selected ():
185197 answers = iface_class (NetInterface .DHCP , nic .hwaddr , vlan = vlan_value )
186198 elif ipv6 and autoconf_rb .selected ():
187- answers = iface_class (NetInterface .Autoconf , nic .hwaddr , vlan = vlan_value )
199+ answers = iface_class (NetInterface .Autoconf , nic .hwaddr ,
200+ dns = dns_field .value (), vlan = vlan_value )
188201 else :
189202 answers = iface_class (NetInterface .Static , nic .hwaddr , ip_field .value (),
190203 subnet_field .value (), gateway_field .value (),
0 commit comments