summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-03-30 13:52:20 (UTC)
committer mickeyl <mickeyl>2003-03-30 13:52:20 (UTC)
commit9e3dc048e171af6d88f0cc3f16ad0c9fb6a15ce2 (patch) (side-by-side diff)
tree2d3bd9b940729878f96d5dc2f2ef9fd22478f3f0
parent3065a1c13bec5d0b101bec48ff666d45a02ce8a6 (diff)
downloadopie-9e3dc048e171af6d88f0cc3f16ad0c9fb6a15ce2.zip
opie-9e3dc048e171af6d88f0cc3f16ad0c9fb6a15ce2.tar.gz
opie-9e3dc048e171af6d88f0cc3f16ad0c9fb6a15ce2.tar.bz2
introduce a workaround for conflicting user and kernel headers like
<linux/if.h> and <net/if.h>. I really don't like including kernel headers, but in the case of <linux/wireless.h> there is no other option yet.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.cpp1
-rw-r--r--libopie2/opienet/onetwork.h13
2 files changed, 8 insertions, 6 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index 998b50e..21fa390 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -23,65 +23,64 @@
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/* OPIE */
#include <opie2/onetwork.h>
/* QT */
#include <qfile.h>
#include <qtextstream.h>
/* UNIX */
#include <arpa/inet.h>
#include <cerrno>
#include <cstring>
#include <cstdlib>
#include <math.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <linux/sockios.h>
-#include <linux/wireless.h>
using namespace std;
/*======================================================================================
* ONetwork
*======================================================================================*/
ONetwork* ONetwork::_instance = 0;
ONetwork::ONetwork()
{
qDebug( "ONetwork::ONetwork()" );
synchronize();
}
void ONetwork::synchronize()
{
// gather available interfaces by inspecting /proc/net/dev
// we could use SIOCGIFCONF here, but we aren't interested in virtual (e.g. eth0:0) devices
_interfaces.clear();
QString str;
QFile f( "/proc/net/dev" );
bool hasFile = f.open( IO_ReadOnly );
if ( !hasFile )
{
qDebug( "ONetwork: /proc/net/dev not existing. No network devices available" );
return;
}
QTextStream s( &f );
s.readLine();
s.readLine();
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h
index 56da5f4..c544454 100644
--- a/libopie2/opienet/onetwork.h
+++ b/libopie2/opienet/onetwork.h
@@ -16,74 +16,77 @@
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef ONETWORK_H
#define ONETWORK_H
/* QT */
#include <qdict.h>
#include <qmap.h>
#include <qobject.h>
#include <qhostaddress.h>
/* OPIE */
#include <opie2/onetutils.h>
-// ML: Yeah, I hate to include kernel headers, but it's necessary here
-// ML: Recent RedHat and MandrakePatches to the Kernel and WE broke something
-// ML: #include <net/if.h> e.g. conflicts with #include <linux/wireless.h>
-
#ifndef IFNAMSIZ
#define IFNAMSIZ 16
#endif
-#include <linux/wireless.h>
+// ML: Yeah, I hate to include kernel headers, but it's necessary here
+// ML: Here comes an ugly hack to prevent <linux/wireless.h> including <linux/if.h>
+// ML: which conflicts with the user header <net/if.h>
+// ML: We really a user header for the Wireless Extensions, something like <net/wireless.h>
+// ML: I will drop Jean an mail on that subject
+
#include <net/if.h>
+#define _LINUX_IF_H
+#include <linux/wireless.h>
#ifndef SIOCIWFIRSTPRIV
#define SIOCIWFIRSTPRIV SIOCDEVPRIVATE
#endif
class ONetworkInterface;
class OWirelessNetworkInterface;
class OChannelHopper;
class OMonitoringInterface;
typedef struct ifreq ifreqstruct;
typedef struct iwreq iwreqstruct;
typedef struct iw_event iweventstruct;
typedef struct iw_freq iwfreqstruct;
typedef struct iw_priv_args iwprivargsstruct;
typedef struct iw_range iwrangestruct;
/*======================================================================================
* ONetwork
*======================================================================================*/
class ONetwork : public QObject
{
Q_OBJECT
public:
typedef QDict<ONetworkInterface> InterfaceMap;
typedef QDictIterator<ONetworkInterface> InterfaceIterator;
public:
static ONetwork* instance();
InterfaceIterator iterator() const;