summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2007-09-12 21:20:43 +0000
committerDavid Cantrell <dcantrell@redhat.com>2007-09-12 21:20:43 +0000
commit6a7bfde9c209fb11c2777aefa33e98fce9a1d694 (patch)
treeba683e26c9e0fe7fb2682f05f26c966c32b267af
parent3371730c1192755bc3e0940ef9252706c3f9c5c3 (diff)
downloadanaconda-6a7bfde9c209fb11c2777aefa33e98fce9a1d694.tar.gz
anaconda-6a7bfde9c209fb11c2777aefa33e98fce9a1d694.tar.xz
anaconda-6a7bfde9c209fb11c2777aefa33e98fce9a1d694.zip
* network.py (hasActiveNetDev): Return True when isys.getLinkStatus
is True for dev (#235824). * isys/nl.c (netlink_interfaces_ip2str): Reset interfaces cache before looking up interface (#235824). * isys/nl.c (netlink_interfaces_mac2str): Likewise. * iw/netconfig_dialog.py: Do not require a gateway or nameserver. Allow users to enter a CIDR prefix or network (#235824).
-rw-r--r--ChangeLog12
-rw-r--r--isys/nl.c19
-rw-r--r--iw/netconfig_dialog.py58
-rw-r--r--network.py3
4 files changed, 59 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog
index 7581bb3e0..2b90f71d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2007-09-12 David Cantrell <dcantrell@redhat.com>
+ * network.py (hasActiveNetDev): Return True when isys.getLinkStatus
+ is True for dev (#235824).
+
+ * isys/nl.c (netlink_interfaces_ip2str): Reset interfaces cache before
+ looking up interface (#235824).
+ * isys/nl.c (netlink_interfaces_mac2str): Likewise.
+
+ * iw/netconfig_dialog.py: Do not require a gateway or nameserver.
+ Allow users to enter a CIDR prefix or network (#235824).
+
+2007-09-12 David Cantrell <dcantrell@redhat.com>
+
* anaconda.spec: Bump version.
2007-09-12 David Cantrell <dcantrell@redhat.com>
diff --git a/isys/nl.c b/isys/nl.c
index f34ea47c1..809160d28 100644
--- a/isys/nl.c
+++ b/isys/nl.c
@@ -434,13 +434,9 @@ char *netlink_interfaces_ip2str(char *ifname) {
if (ifname == NULL)
return NULL;
- /* init the interfaces list if it's empty or if nothing is found */
- e = g_slist_find_custom(interfaces,ifname,&_netlink_interfaces_elem_find);
- if (interfaces == NULL || e == NULL) {
- if (netlink_init_interfaces_list() == -1) {
- perror("netlink_init_interfaces_list in netlink_interface_ip2str");
- return NULL;
- }
+ if (netlink_init_interfaces_list() == -1) {
+ perror("netlink_init_interfaces_list in netlink_interface_ip2str");
+ return NULL;
}
/* search */
@@ -483,12 +479,9 @@ char *netlink_interfaces_mac2str(char *ifname) {
if (ifname == NULL)
return NULL;
- /* init the interfaces list if it's empty */
- if (interfaces == NULL) {
- if (netlink_init_interfaces_list() == -1) {
- perror("netlink_init_interfaces_list in netlink_interface_mac2str");
- return NULL;
- }
+ if (netlink_init_interfaces_list() == -1) {
+ perror("netlink_init_interfaces_list in netlink_interface_mac2str");
+ return NULL;
}
e = g_slist_find_custom(interfaces,ifname,&_netlink_interfaces_elem_find);
diff --git a/iw/netconfig_dialog.py b/iw/netconfig_dialog.py
index b2c2897b6..7c029e620 100644
--- a/iw/netconfig_dialog.py
+++ b/iw/netconfig_dialog.py
@@ -121,7 +121,7 @@ class NetworkConfigurator:
store[i] = (desc, dev)
if dev == self.network.firstnetdevice:
combo.set_active_iter(i)
-
+
def run(self):
gui.addFrame(self.window)
self.window.show()
@@ -172,35 +172,58 @@ class NetworkConfigurator:
try:
network.sanityCheckIPString(ipv4addr)
- except network.IPError, msg:
- self._handleIPError(_("IP Address"), msg)
+ except network.IPMissing, msg:
+ self._handleIPMissing(_("IP Address"))
return
-
- try:
- network.sanityCheckIPString(ipv4nm)
except network.IPError, msg:
- self._handleIPError(_("Netmask"), msg)
+ self._handleIPError(_("IP Address"), msg)
return
- if gateway:
+ if ipv4nm.find('.') == -1:
+ # user provided a CIDR prefix
try:
- network.sanityCheckIPString(gateway)
- except network.IPError, msg:
- self._handleIPError(_("Gateway"), msg)
+ if int(ipv4nm) > 32 or int(ipv4nm) < 0:
+ msg = _("IPv4 CIDR prefix must be between 0 and 32.")
+ self._handleIPError(_("IPv4 Network Mask"), msg)
+ return
+ else:
+ ipv4nm = isys.prefix2netmask(int(ipv4nm))
+ netdev.set(('netmask', ipv4nm))
+ except:
+ self._handleIPMissing(_("IPv4 Network Mask"))
return
-
- if ns:
+ else:
+ # user provided a dotted-quad netmask
try:
- network.sanityCheckIPString(ns)
+ network.sanityCheckIPString(ipv4nm)
+ netdev.set(('netmask', ipv4nm))
+ except network.IPMissing, msg:
+ self._handleIPMissing(_("IPv4 Network Mask"))
+ return
except network.IPError, msg:
- self._handleIPError(_("Nameserver"), msg)
+ self._handleIPError(_("IPv4 Network Mask"), msg)
return
try:
+ if gateway:
+ network.sanityCheckIPString(gateway)
+ except network.IPError, msg:
+ self._handleIPError(_("Gateway"), msg)
+ return
+
+ try:
+ if ns:
+ network.sanityCheckIPString(ns)
+ except network.IPError, msg:
+ self._handleIPError(_("Nameserver"), msg)
+ return
+
+ try:
isys.configNetDevice(netdev.get("device"),
ipv4addr, ipv4nm, gateway)
except Exception, e:
log.error("Error configuring network device: %s" %(e,))
+
self.rc = gtk.RESPONSE_OK
if ns:
f = open("/etc/resolv.conf", "w")
@@ -214,16 +237,13 @@ class NetworkConfigurator:
_("Error configuring network device"),
type = "ok", custom_icon="error")
return
-
- gtk.main_quit()
-
+ gtk.main_quit()
def main():
net = network.Network()
d = NetworkConfigurator(net)
ret = d.run()
-
if __name__ == "__main__":
main()
diff --git a/network.py b/network.py
index bfafb7635..434ad2165 100644
--- a/network.py
+++ b/network.py
@@ -114,7 +114,8 @@ def hasActiveNetDev():
continue
if ip == '127.0.0.1' or ip is None:
continue
- return True
+ if isys.getLinkStatus(dev):
+ return True
return False
class NetworkDevice(SimpleConfigFile):