[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[elliot@rpath.com: anaconda: Assume there is link on devices that don't support the required ioctls]



Anaconda currently does not detect link for drivers that do not support
the IOCTLs. I found that in QEMU when trying to test iSCSI Anaconda
tried to setup networking even if the network was configured. This patch
assumes that if there is link on devices that don't support the required
ioctls.

Elliot

user:        Elliot Peele <http://issues.rpath.com/>
files:       isys/linkdetect.c

Assume there is link on devices that don't support the required ioctls
(RPL-2301)

diff -r 925b8bd510d7 -r 3e60e4b058e2 isys/linkdetect.c
--- a/isys/linkdetect.c	Mon Mar 10 12:29:50 2008 -0400
+++ b/isys/linkdetect.c	Wed Mar 26 16:02:08 2008 -0400
@@ -73,6 +73,8 @@
     int i, mii_val[32];
 
     if (ioctl(sock, SIOCGMIIPHY, &ifr) < 0) {
+        if (errno == EOPNOTSUPP)
+            return -2;
 	if (errno != ENODEV)
 #ifdef STANDALONE
 	    fprintf(stderr, "SIOCGMIIPHY on '%s' failed: %s\n",
@@ -113,6 +115,9 @@
 #ifdef STANDALONE
         fprintf(stderr, "Cannot get link status (%d): %s\n", errno, strerror(errno));
 #endif
+    } else {
+        // ethtool not supported by driver
+        return -2;
     }
 
     return -1;
@@ -122,6 +127,7 @@
 
 int get_link_status(char * devname) {
     int sock, rc;
+    int link_status_supported = 1;
 
     if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 #ifdef STANDALONE
@@ -145,13 +151,15 @@
     if (rc == 1) {
         close(sock);
         return 1;
+    } else if (rc == -2) {
+        link_status_supported = 0;
     }
 
     rc = get_mii_link_status(sock);
 #ifdef STANDALONE
     printf("MII link status of %s is: %d\n", devname, rc);
 #endif
-    if (rc == 1) {
+    if (rc == 1 || (rc == -2 && link_status_supported == 0)) {
         close(sock);
         return 1;
     }

-- 
Elliot Peele
rPath, Inc.
elliot rpath com


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]