Date: Wed, 13 Jul 2005 15:48:34 +0200 (CEST) From: Ulrich Spoerlein <q@galgenberg.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/83381: [MAINTAINER] net/wmwifi: Unbreak with fwe or plip interfaces Message-ID: <200507131348.j6DDmYIC002741@roadrunner.q.local> Resent-Message-ID: <200507131350.j6DDoDco062454@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 83381 >Category: ports >Synopsis: [MAINTAINER] net/wmwifi: Unbreak with fwe or plip interfaces >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Wed Jul 13 13:50:13 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Ulrich Spoerlein >Release: FreeBSD 6.0-CURRENT i386 >Organization: >Environment: System: FreeBSD roadrunner 6.0-CURRENT FreeBSD 6.0-CURRENT #1: Sun Jul 3 14:07:41 CEST >Description: The code walking the interface list will issue the SIOCGIFMEDIA ioctl to every interface. This ioctl will fail on if_fwe and if_plip (and probably others). Therefore make the failing ioctl() non-fatal and issue a warning only. Reported and tested by: martinko and Tuc at Beach House Generated with FreeBSD Port Tools 0.63 >How-To-Repeat: >Fix: --- wmwifi-0.4.patch begins here --- Index: files/patch-wireless.c =================================================================== RCS file: /home/ncvs/ports/net/wmwifi/files/patch-wireless.c,v retrieving revision 1.1 diff -u -u -r1.1 patch-wireless.c --- files/patch-wireless.c 7 Jul 2005 21:22:36 -0000 1.1 +++ files/patch-wireless.c 13 Jul 2005 13:44:24 -0000 @@ -1,5 +1,5 @@ ---- src/wireless.c.orig Sat Jul 2 14:41:48 2005 -+++ src/wireless.c Sat Jul 2 14:41:53 2005 +--- src/wireless.c.orig Tue Mar 9 20:39:17 2004 ++++ src/wireless.c Mon Jul 11 10:57:43 2005 @@ -143,6 +143,7 @@ max = get_max_ifs(); @@ -8,3 +8,28 @@ if (old > max) old = max; /* just be sure to not be out of bounds */ +@@ -193,9 +194,11 @@ + + if (ioctl(s, SIOCGIFMEDIA, (caddr_t) &ifmr) < 0) + { +- perror("ioctl"); ++ char str[128]; ++ snprintf(str, 128, "ioctl for interface %s failed", ifmr.ifm_name); + close(s); +- exit(1); ++ warn(str); ++ continue; + } + close(s); + /* we cannot monitor interfaces in hostap mode, so just +@@ -207,6 +210,10 @@ + found++; + } + } ++ ++ if (!found) ++ return -1; ++ + return index; + } + /* how many interfaces do we have? this includes non-wireless! */ Index: files/patch-wmwifi.c =================================================================== RCS file: /home/ncvs/ports/net/wmwifi/files/patch-wmwifi.c,v retrieving revision 1.1 diff -u -u -r1.1 patch-wmwifi.c --- files/patch-wmwifi.c 7 Jul 2005 21:22:36 -0000 1.1 +++ files/patch-wmwifi.c 13 Jul 2005 13:44:24 -0000 @@ -1,10 +1,35 @@ ---- src/wmwifi.c.orig Sat Jul 2 14:54:17 2005 -+++ src/wmwifi.c Sat Jul 2 14:54:21 2005 -@@ -67,6 +67,7 @@ +--- src/wmwifi.c.orig Mon Jul 11 10:58:32 2005 ++++ src/wmwifi.c Mon Jul 11 11:01:27 2005 +@@ -67,9 +67,11 @@ int ncolor = 0; struct wifi wfi; +- /* find a valid wireless interface */ + bzero(&wfi, sizeof(wfi)); - /* find a valid wireless interface */ ++ /* find a valid wireless interface */ #if __FreeBSD__ - wfi.ifnum = get_wlaniface(0, 1); +- wfi.ifnum = get_wlaniface(0, 1); ++ if ((wfi.ifnum = get_wlaniface(0, 1)) < 0) ++ errx(1, "No wireless interface found!"); + #else + wfi.ifnum = 0; + #endif +@@ -146,14 +148,16 @@ + break; + case Button2: + #ifdef __FreeBSD__ +- wfi.ifnum = get_wlaniface(wfi.ifnum, 1); ++ if ((wfi.ifnum = get_wlaniface(wfi.ifnum, 1)) < 0) ++ errx(1, "No wireless interface found!"); + #else + next_if(&wfi); + #endif + break; + case Button3: + #ifdef __FreeBSD__ +- wfi.ifnum = get_wlaniface(wfi.ifnum, -1); ++ if ((wfi.ifnum = get_wlaniface(wfi.ifnum, -1)) < 0) ++ errx(1, "No wireless interface found!"); + #else + prev_if(&wfi); + #endif --- wmwifi-0.4.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507131348.j6DDmYIC002741>