-rw-r--r-- | libopie2/opienet/omanufacturerdb.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/omanufacturerdb.h | 4 | ||||
-rw-r--r-- | libopie2/opienet/onetutils.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/onetutils.h | 4 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.h | 4 | ||||
-rw-r--r-- | libopie2/opienet/opcap.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/opcap.h | 4 | ||||
-rw-r--r-- | libopie2/opienet/ostation.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/ostation.h | 4 |
10 files changed, 20 insertions, 20 deletions
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp index 7e185a2..123aee8 100644 --- a/libopie2/opienet/omanufacturerdb.cpp +++ b/libopie2/opienet/omanufacturerdb.cpp | |||
@@ -1,143 +1,143 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | .=l. | 4 | .=l. |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This program is free software; you can | 6 | _;:, .> :=|. This program is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; version 2 of the License. |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This program is distributed in the hope that | 13 | .i_,=:_. -<s. This program is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
18 | ..}^=.= = ; Library General Public License for more | 18 | ..}^=.= = ; Library General Public License for more |
19 | ++= -. .` .: details. | 19 | ++= -. .` .: details. |
20 | : = ...= . :.=- | 20 | : = ...= . :.=- |
21 | -. .:....=;==+<; You should have received a copy of the GNU | 21 | -. .:....=;==+<; You should have received a copy of the GNU |
22 | -_. . . )=. = Library General Public License along with | 22 | -_. . . )=. = Library General Public License along with |
23 | -- :-=` this library; see the file COPYING.LIB. | 23 | -- :-=` this library; see the file COPYING.LIB. |
24 | If not, write to the Free Software Foundation, | 24 | If not, write to the Free Software Foundation, |
25 | Inc., 59 Temple Place - Suite 330, | 25 | Inc., 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "omanufacturerdb.h" | 29 | #include "omanufacturerdb.h" |
30 | 30 | ||
31 | #define OPIE_IMPROVE_GUI_LATENCY 1 | 31 | #define OPIE_IMPROVE_GUI_LATENCY 1 |
32 | 32 | ||
33 | /* OPIE */ | 33 | /* OPIE */ |
34 | #include <opie2/odebug.h> | 34 | #include <opie2/odebug.h> |
35 | #include <qpe/qpeapplication.h> | 35 | #include <qpe/qpeapplication.h> |
36 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 36 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
37 | #include <qpe/global.h> | 37 | #include <qpe/global.h> |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | 40 | ||
41 | 41 | ||
42 | /* QT */ | 42 | /* QT */ |
43 | #include <qapplication.h> | 43 | #include <qapplication.h> |
44 | #include <qfile.h> | 44 | #include <qfile.h> |
45 | #include <qtextstream.h> | 45 | #include <qtextstream.h> |
46 | 46 | ||
47 | using namespace Opie::Core; | 47 | using namespace Opie::Core; |
48 | namespace Opie { | 48 | namespace Opie { |
49 | namespace Net { | 49 | namespace Net { |
50 | 50 | ||
51 | OManufacturerDB* OManufacturerDB::_instance = 0; | 51 | OManufacturerDB* OManufacturerDB::_instance = 0; |
52 | 52 | ||
53 | OManufacturerDB* OManufacturerDB::instance() | 53 | OManufacturerDB* OManufacturerDB::instance() |
54 | { | 54 | { |
55 | if ( !OManufacturerDB::_instance ) | 55 | if ( !OManufacturerDB::_instance ) |
56 | { | 56 | { |
57 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; | 57 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; |
58 | _instance = new OManufacturerDB(); | 58 | _instance = new OManufacturerDB(); |
59 | } | 59 | } |
60 | return _instance; | 60 | return _instance; |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | OManufacturerDB::OManufacturerDB() | 64 | OManufacturerDB::OManufacturerDB() |
65 | { | 65 | { |
66 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 66 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
67 | Global::statusMessage( "Reading Manufacturers..." ); | 67 | Global::statusMessage( "Reading Manufacturers..." ); |
68 | #endif | 68 | #endif |
69 | QString filename( "/etc/manufacturers" ); | 69 | QString filename( "/etc/manufacturers" ); |
70 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 70 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
71 | if ( !QFile::exists( filename ) ) | 71 | if ( !QFile::exists( filename ) ) |
72 | { | 72 | { |
73 | filename = QPEApplication::qpeDir()+"etc/manufacturers"; | 73 | filename = QPEApplication::qpeDir()+"etc/manufacturers"; |
74 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 74 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
75 | if ( !QFile::exists( filename ) ) | 75 | if ( !QFile::exists( filename ) ) |
76 | { | 76 | { |
77 | filename = "/usr/share/wellenreiter/manufacturers"; | 77 | filename = "/usr/share/wellenreiter/manufacturers"; |
78 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 78 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
79 | } | 79 | } |
80 | } | 80 | } |
81 | 81 | ||
82 | QFile file( filename ); | 82 | QFile file( filename ); |
83 | bool hasFile = file.open( IO_ReadOnly ); | 83 | bool hasFile = file.open( IO_ReadOnly ); |
84 | if (!hasFile) | 84 | if (!hasFile) |
85 | { | 85 | { |
86 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; | 86 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; |
87 | } | 87 | } |
88 | else | 88 | else |
89 | { | 89 | { |
90 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; | 90 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; |
91 | QTextStream s( &file ); | 91 | QTextStream s( &file ); |
92 | QString addr; | 92 | QString addr; |
93 | QString manu; | 93 | QString manu; |
94 | QString extManu; | 94 | QString extManu; |
95 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 95 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
96 | int counter = 0; | 96 | int counter = 0; |
97 | #endif | 97 | #endif |
98 | while (!s.atEnd()) | 98 | while (!s.atEnd()) |
99 | { | 99 | { |
100 | s >> addr; | 100 | s >> addr; |
101 | s >> manu; | 101 | s >> manu; |
102 | s >> extManu; | 102 | s >> extManu; |
103 | 103 | ||
104 | manufacturers.insert( addr, manu ); | 104 | manufacturers.insert( addr, manu ); |
105 | manufacturersExt.insert( addr, extManu ); | 105 | manufacturersExt.insert( addr, extManu ); |
106 | // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; | 106 | // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; |
107 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 107 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
108 | counter++; | 108 | counter++; |
109 | if ( counter == 50 ) | 109 | if ( counter == 50 ) |
110 | { | 110 | { |
111 | qApp->processEvents(); | 111 | qApp->processEvents(); |
112 | counter = 0; | 112 | counter = 0; |
113 | } | 113 | } |
114 | #endif | 114 | #endif |
115 | } | 115 | } |
116 | odebug << "OManufacturerDB: manufacturer list completed." << oendl; | 116 | odebug << "OManufacturerDB: manufacturer list completed." << oendl; |
117 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 117 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
118 | Global::statusMessage( "Manufacturers Complete..." ); | 118 | Global::statusMessage( "Manufacturers Complete..." ); |
119 | #endif | 119 | #endif |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | 123 | ||
124 | OManufacturerDB::~OManufacturerDB() | 124 | OManufacturerDB::~OManufacturerDB() |
125 | { | 125 | { |
126 | } | 126 | } |
127 | 127 | ||
128 | 128 | ||
129 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const | 129 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const |
130 | { | 130 | { |
131 | return manufacturers[macaddr.upper().left(8)]; | 131 | return manufacturers[macaddr.upper().left(8)]; |
132 | } | 132 | } |
133 | 133 | ||
134 | 134 | ||
135 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const | 135 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const |
136 | { | 136 | { |
137 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); | 137 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); |
138 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; | 138 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; |
139 | } | 139 | } |
140 | 140 | ||
141 | } | 141 | } |
142 | } | 142 | } |
143 | 143 | ||
diff --git a/libopie2/opienet/omanufacturerdb.h b/libopie2/opienet/omanufacturerdb.h index c667e20..2b3b7ed 100644 --- a/libopie2/opienet/omanufacturerdb.h +++ b/libopie2/opienet/omanufacturerdb.h | |||
@@ -1,75 +1,75 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | .=l. | 4 | .=l. |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This program is free software; you can | 6 | _;:, .> :=|. This program is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; version 2 of the License. |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This program is distributed in the hope that | 13 | .i_,=:_. -<s. This program is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
18 | ..}^=.= = ; Library General Public License for more | 18 | ..}^=.= = ; Library General Public License for more |
19 | ++= -. .` .: details. | 19 | ++= -. .` .: details. |
20 | : = ...= . :.=- | 20 | : = ...= . :.=- |
21 | -. .:....=;==+<; You should have received a copy of the GNU | 21 | -. .:....=;==+<; You should have received a copy of the GNU |
22 | -_. . . )=. = Library General Public License along with | 22 | -_. . . )=. = Library General Public License along with |
23 | -- :-=` this library; see the file COPYING.LIB. | 23 | -- :-=` this library; see the file COPYING.LIB. |
24 | If not, write to the Free Software Foundation, | 24 | If not, write to the Free Software Foundation, |
25 | Inc., 59 Temple Place - Suite 330, | 25 | Inc., 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef OMANUFACTURERDB_H | 29 | #ifndef OMANUFACTURERDB_H |
30 | #define OMANUFACTURERDB_H | 30 | #define OMANUFACTURERDB_H |
31 | 31 | ||
32 | #include <qmap.h> | 32 | #include <qmap.h> |
33 | 33 | ||
34 | namespace Opie { | 34 | namespace Opie { |
35 | namespace Net { | 35 | namespace Net { |
36 | 36 | ||
37 | /** | 37 | /** |
38 | * @brief A Ethernet card vendor database. | 38 | * @brief A Ethernet card vendor database. |
39 | * | 39 | * |
40 | * This class encapsulates the lookup of Ethernet vendor given a | 40 | * This class encapsulates the lookup of Ethernet vendor given a |
41 | * certain Mac Address. Only the first three bytes define the vendor. | 41 | * certain Mac Address. Only the first three bytes define the vendor. |
42 | */ | 42 | */ |
43 | class OManufacturerDB | 43 | class OManufacturerDB |
44 | { | 44 | { |
45 | public: | 45 | public: |
46 | /** | 46 | /** |
47 | * @returns the one-and-only @ref OManufacturerDB instance. | 47 | * @returns the one-and-only @ref OManufacturerDB instance. |
48 | */ | 48 | */ |
49 | static OManufacturerDB* instance(); | 49 | static OManufacturerDB* instance(); |
50 | /** | 50 | /** |
51 | * @returns the short manufacturer string given a @a macaddr. | 51 | * @returns the short manufacturer string given a @a macaddr. |
52 | */ | 52 | */ |
53 | const QString& lookup( const QString& macaddr ) const; | 53 | const QString& lookup( const QString& macaddr ) const; |
54 | /** | 54 | /** |
55 | * @returns the enhanced manufacturer string given a @a macaddr. | 55 | * @returns the enhanced manufacturer string given a @a macaddr. |
56 | */ | 56 | */ |
57 | const QString& lookupExt( const QString& macaddr ) const; | 57 | const QString& lookupExt( const QString& macaddr ) const; |
58 | 58 | ||
59 | protected: | 59 | protected: |
60 | OManufacturerDB(); | 60 | OManufacturerDB(); |
61 | virtual ~OManufacturerDB(); | 61 | virtual ~OManufacturerDB(); |
62 | 62 | ||
63 | private: | 63 | private: |
64 | QMap<QString, QString> manufacturers; | 64 | QMap<QString, QString> manufacturers; |
65 | QMap<QString, QString> manufacturersExt; | 65 | QMap<QString, QString> manufacturersExt; |
66 | static OManufacturerDB* _instance; | 66 | static OManufacturerDB* _instance; |
67 | class Private; | 67 | class Private; |
68 | Private *d; | 68 | Private *d; |
69 | }; | 69 | }; |
70 | 70 | ||
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | #endif | 74 | #endif |
75 | 75 | ||
diff --git a/libopie2/opienet/onetutils.cpp b/libopie2/opienet/onetutils.cpp index 047a704..c8c494a 100644 --- a/libopie2/opienet/onetutils.cpp +++ b/libopie2/opienet/onetutils.cpp | |||
@@ -1,241 +1,241 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> | 4 | (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; version 2 of the License. |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <opie2/onetutils.h> | 32 | #include <opie2/onetutils.h> |
33 | #include <opie2/onetwork.h> | 33 | #include <opie2/onetwork.h> |
34 | #include <opie2/omanufacturerdb.h> | 34 | #include <opie2/omanufacturerdb.h> |
35 | 35 | ||
36 | #include <net/if.h> | 36 | #include <net/if.h> |
37 | #include <assert.h> | 37 | #include <assert.h> |
38 | #include <stdio.h> | 38 | #include <stdio.h> |
39 | 39 | ||
40 | namespace Opie { | 40 | namespace Opie { |
41 | namespace Net { | 41 | namespace Net { |
42 | 42 | ||
43 | /*====================================================================================== | 43 | /*====================================================================================== |
44 | * OMacAddress | 44 | * OMacAddress |
45 | *======================================================================================*/ | 45 | *======================================================================================*/ |
46 | 46 | ||
47 | // static initializer for broadcast and unknown MAC Adresses | 47 | // static initializer for broadcast and unknown MAC Adresses |
48 | const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; | 48 | const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; |
49 | const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); | 49 | const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); |
50 | const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; | 50 | const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; |
51 | const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); | 51 | const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); |
52 | 52 | ||
53 | //TODO: Incorporate Ethernet Manufacturer database here! (inline or so) | 53 | //TODO: Incorporate Ethernet Manufacturer database here! (inline or so) |
54 | 54 | ||
55 | OMacAddress::OMacAddress() | 55 | OMacAddress::OMacAddress() |
56 | { | 56 | { |
57 | memcpy( _bytes, __unknown, 6 ); | 57 | memcpy( _bytes, __unknown, 6 ); |
58 | } | 58 | } |
59 | 59 | ||
60 | 60 | ||
61 | OMacAddress::OMacAddress( unsigned char* p ) | 61 | OMacAddress::OMacAddress( unsigned char* p ) |
62 | { | 62 | { |
63 | memcpy( _bytes, p, 6 ); | 63 | memcpy( _bytes, p, 6 ); |
64 | } | 64 | } |
65 | 65 | ||
66 | 66 | ||
67 | OMacAddress::OMacAddress( const unsigned char* p ) | 67 | OMacAddress::OMacAddress( const unsigned char* p ) |
68 | { | 68 | { |
69 | memcpy( _bytes, p, 6 ); | 69 | memcpy( _bytes, p, 6 ); |
70 | } | 70 | } |
71 | 71 | ||
72 | 72 | ||
73 | OMacAddress::OMacAddress( struct ifreq& ifr ) | 73 | OMacAddress::OMacAddress( struct ifreq& ifr ) |
74 | { | 74 | { |
75 | memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); | 75 | memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); |
76 | } | 76 | } |
77 | 77 | ||
78 | 78 | ||
79 | OMacAddress::~OMacAddress() | 79 | OMacAddress::~OMacAddress() |
80 | { | 80 | { |
81 | } | 81 | } |
82 | 82 | ||
83 | 83 | ||
84 | //#ifdef QT_NO_DEBUG | 84 | //#ifdef QT_NO_DEBUG |
85 | //inline | 85 | //inline |
86 | //#endif | 86 | //#endif |
87 | const unsigned char* OMacAddress::native() const | 87 | const unsigned char* OMacAddress::native() const |
88 | { | 88 | { |
89 | return (const unsigned char*) &_bytes; | 89 | return (const unsigned char*) &_bytes; |
90 | } | 90 | } |
91 | 91 | ||
92 | 92 | ||
93 | OMacAddress OMacAddress::fromString( const QString& str ) | 93 | OMacAddress OMacAddress::fromString( const QString& str ) |
94 | { | 94 | { |
95 | QString addr( str ); | 95 | QString addr( str ); |
96 | unsigned char buf[6]; | 96 | unsigned char buf[6]; |
97 | bool ok = true; | 97 | bool ok = true; |
98 | int index = 14; | 98 | int index = 14; |
99 | for ( int i = 5; i >= 0; --i ) | 99 | for ( int i = 5; i >= 0; --i ) |
100 | { | 100 | { |
101 | buf[i] = addr.right( 2 ).toUShort( &ok, 16 ); | 101 | buf[i] = addr.right( 2 ).toUShort( &ok, 16 ); |
102 | if ( !ok ) return OMacAddress::unknown; | 102 | if ( !ok ) return OMacAddress::unknown; |
103 | addr.truncate( index ); | 103 | addr.truncate( index ); |
104 | index -= 3; | 104 | index -= 3; |
105 | } | 105 | } |
106 | return (const unsigned char*) &buf; | 106 | return (const unsigned char*) &buf; |
107 | } | 107 | } |
108 | 108 | ||
109 | 109 | ||
110 | QString OMacAddress::toString( bool substitute ) const | 110 | QString OMacAddress::toString( bool substitute ) const |
111 | { | 111 | { |
112 | QString manu; | 112 | QString manu; |
113 | manu.sprintf( "%.2X:%.2X:%.2X", _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff ); | 113 | manu.sprintf( "%.2X:%.2X:%.2X", _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff ); |
114 | QString serial; | 114 | QString serial; |
115 | serial.sprintf( ":%.2X:%.2X:%.2X", _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); | 115 | serial.sprintf( ":%.2X:%.2X:%.2X", _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); |
116 | if ( !substitute ) return manu+serial; | 116 | if ( !substitute ) return manu+serial; |
117 | // fallback - if no vendor is found, just use the number | 117 | // fallback - if no vendor is found, just use the number |
118 | QString textmanu = OManufacturerDB::instance()->lookup( manu ); | 118 | QString textmanu = OManufacturerDB::instance()->lookup( manu ); |
119 | return textmanu.isNull() ? manu+serial : textmanu+serial; | 119 | return textmanu.isNull() ? manu+serial : textmanu+serial; |
120 | } | 120 | } |
121 | 121 | ||
122 | 122 | ||
123 | QString OMacAddress::manufacturer() const | 123 | QString OMacAddress::manufacturer() const |
124 | { | 124 | { |
125 | return OManufacturerDB::instance()->lookupExt( toString() ); | 125 | return OManufacturerDB::instance()->lookupExt( toString() ); |
126 | } | 126 | } |
127 | 127 | ||
128 | 128 | ||
129 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) | 129 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) |
130 | { | 130 | { |
131 | return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; | 131 | return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; |
132 | } | 132 | } |
133 | 133 | ||
134 | 134 | ||
135 | /*====================================================================================== | 135 | /*====================================================================================== |
136 | * OHostAddress | 136 | * OHostAddress |
137 | *======================================================================================*/ | 137 | *======================================================================================*/ |
138 | 138 | ||
139 | 139 | ||
140 | /*====================================================================================== | 140 | /*====================================================================================== |
141 | * OPrivateIOCTL | 141 | * OPrivateIOCTL |
142 | *======================================================================================*/ | 142 | *======================================================================================*/ |
143 | 143 | ||
144 | OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ) | 144 | OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ) |
145 | :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs ) | 145 | :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs ) |
146 | { | 146 | { |
147 | } | 147 | } |
148 | 148 | ||
149 | 149 | ||
150 | OPrivateIOCTL::~OPrivateIOCTL() | 150 | OPrivateIOCTL::~OPrivateIOCTL() |
151 | { | 151 | { |
152 | } | 152 | } |
153 | 153 | ||
154 | 154 | ||
155 | int OPrivateIOCTL::numberGetArgs() const | 155 | int OPrivateIOCTL::numberGetArgs() const |
156 | { | 156 | { |
157 | return _getargs & IW_PRIV_SIZE_MASK; | 157 | return _getargs & IW_PRIV_SIZE_MASK; |
158 | } | 158 | } |
159 | 159 | ||
160 | 160 | ||
161 | int OPrivateIOCTL::typeGetArgs() const | 161 | int OPrivateIOCTL::typeGetArgs() const |
162 | { | 162 | { |
163 | return _getargs & IW_PRIV_TYPE_MASK >> 12; | 163 | return _getargs & IW_PRIV_TYPE_MASK >> 12; |
164 | } | 164 | } |
165 | 165 | ||
166 | 166 | ||
167 | int OPrivateIOCTL::numberSetArgs() const | 167 | int OPrivateIOCTL::numberSetArgs() const |
168 | { | 168 | { |
169 | return _setargs & IW_PRIV_SIZE_MASK; | 169 | return _setargs & IW_PRIV_SIZE_MASK; |
170 | } | 170 | } |
171 | 171 | ||
172 | 172 | ||
173 | int OPrivateIOCTL::typeSetArgs() const | 173 | int OPrivateIOCTL::typeSetArgs() const |
174 | { | 174 | { |
175 | return _setargs & IW_PRIV_TYPE_MASK >> 12; | 175 | return _setargs & IW_PRIV_TYPE_MASK >> 12; |
176 | } | 176 | } |
177 | 177 | ||
178 | 178 | ||
179 | void OPrivateIOCTL::invoke() const | 179 | void OPrivateIOCTL::invoke() const |
180 | { | 180 | { |
181 | ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl ); | 181 | ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl ); |
182 | } | 182 | } |
183 | 183 | ||
184 | 184 | ||
185 | void OPrivateIOCTL::setParameter( int num, u_int32_t value ) | 185 | void OPrivateIOCTL::setParameter( int num, u_int32_t value ) |
186 | { | 186 | { |
187 | u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name; | 187 | u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name; |
188 | arglist[num] = value; | 188 | arglist[num] = value; |
189 | } | 189 | } |
190 | 190 | ||
191 | 191 | ||
192 | 192 | ||
193 | namespace Internal { | 193 | namespace Internal { |
194 | /*====================================================================================== | 194 | /*====================================================================================== |
195 | * assorted functions | 195 | * assorted functions |
196 | *======================================================================================*/ | 196 | *======================================================================================*/ |
197 | 197 | ||
198 | void dumpBytes( const unsigned char* data, int num ) | 198 | void dumpBytes( const unsigned char* data, int num ) |
199 | { | 199 | { |
200 | printf( "Dumping %d bytes @ 0x%p", num, data ); | 200 | printf( "Dumping %d bytes @ 0x%p", num, data ); |
201 | printf( "-------------------------------------------\n" ); | 201 | printf( "-------------------------------------------\n" ); |
202 | 202 | ||
203 | for ( int i = 0; i < num; ++i ) | 203 | for ( int i = 0; i < num; ++i ) |
204 | { | 204 | { |
205 | printf( "%02x ", data[i] ); | 205 | printf( "%02x ", data[i] ); |
206 | if ( !((i+1) % 32) ) printf( "\n" ); | 206 | if ( !((i+1) % 32) ) printf( "\n" ); |
207 | } | 207 | } |
208 | printf( "\n\n" ); | 208 | printf( "\n\n" ); |
209 | } | 209 | } |
210 | 210 | ||
211 | 211 | ||
212 | int stringToMode( const QString& mode ) | 212 | int stringToMode( const QString& mode ) |
213 | { | 213 | { |
214 | if ( mode == "auto" ) return IW_MODE_AUTO; | 214 | if ( mode == "auto" ) return IW_MODE_AUTO; |
215 | else if ( mode == "adhoc" ) return IW_MODE_ADHOC; | 215 | else if ( mode == "adhoc" ) return IW_MODE_ADHOC; |
216 | else if ( mode == "managed" ) return IW_MODE_INFRA; | 216 | else if ( mode == "managed" ) return IW_MODE_INFRA; |
217 | else if ( mode == "master" ) return IW_MODE_MASTER; | 217 | else if ( mode == "master" ) return IW_MODE_MASTER; |
218 | else if ( mode == "repeater" ) return IW_MODE_REPEAT; | 218 | else if ( mode == "repeater" ) return IW_MODE_REPEAT; |
219 | else if ( mode == "secondary" ) return IW_MODE_SECOND; | 219 | else if ( mode == "secondary" ) return IW_MODE_SECOND; |
220 | else if ( mode == "monitor" ) return IW_MODE_MONITOR; | 220 | else if ( mode == "monitor" ) return IW_MODE_MONITOR; |
221 | else assert( 0 ); | 221 | else assert( 0 ); |
222 | } | 222 | } |
223 | 223 | ||
224 | 224 | ||
225 | QString modeToString( int mode ) | 225 | QString modeToString( int mode ) |
226 | { | 226 | { |
227 | switch ( mode ) | 227 | switch ( mode ) |
228 | { | 228 | { |
229 | case IW_MODE_AUTO: return "auto"; | 229 | case IW_MODE_AUTO: return "auto"; |
230 | case IW_MODE_ADHOC: return "adhoc"; | 230 | case IW_MODE_ADHOC: return "adhoc"; |
231 | case IW_MODE_INFRA: return "managed"; | 231 | case IW_MODE_INFRA: return "managed"; |
232 | case IW_MODE_MASTER: return "master"; | 232 | case IW_MODE_MASTER: return "master"; |
233 | case IW_MODE_REPEAT: return "repeater"; | 233 | case IW_MODE_REPEAT: return "repeater"; |
234 | case IW_MODE_SECOND: return "second"; | 234 | case IW_MODE_SECOND: return "second"; |
235 | case IW_MODE_MONITOR: return "monitor"; | 235 | case IW_MODE_MONITOR: return "monitor"; |
236 | default: assert( 0 ); | 236 | default: assert( 0 ); |
237 | } | 237 | } |
238 | } | 238 | } |
239 | } | 239 | } |
240 | } | 240 | } |
241 | } | 241 | } |
diff --git a/libopie2/opienet/onetutils.h b/libopie2/opienet/onetutils.h index 4a09426..f1d34a0 100644 --- a/libopie2/opienet/onetutils.h +++ b/libopie2/opienet/onetutils.h | |||
@@ -1,196 +1,196 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; version 2 of the License. |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #ifndef ONETUTILS_H | 32 | #ifndef ONETUTILS_H |
33 | #define ONETUTILS_H | 33 | #define ONETUTILS_H |
34 | 34 | ||
35 | #include <qdict.h> | 35 | #include <qdict.h> |
36 | #include <qmap.h> | 36 | #include <qmap.h> |
37 | #include <qstring.h> | 37 | #include <qstring.h> |
38 | #include <qhostaddress.h> | 38 | #include <qhostaddress.h> |
39 | #include <qobject.h> | 39 | #include <qobject.h> |
40 | 40 | ||
41 | #include <sys/types.h> | 41 | #include <sys/types.h> |
42 | 42 | ||
43 | struct ifreq; | 43 | struct ifreq; |
44 | 44 | ||
45 | namespace Opie { | 45 | namespace Opie { |
46 | namespace Net { | 46 | namespace Net { |
47 | 47 | ||
48 | class OWirelessNetworkInterface; | 48 | class OWirelessNetworkInterface; |
49 | 49 | ||
50 | /*====================================================================================== | 50 | /*====================================================================================== |
51 | * OMacAddress | 51 | * OMacAddress |
52 | *======================================================================================*/ | 52 | *======================================================================================*/ |
53 | 53 | ||
54 | class OMacAddress | 54 | class OMacAddress |
55 | { | 55 | { |
56 | public: | 56 | public: |
57 | // QString c'tor? -zecke | 57 | // QString c'tor? -zecke |
58 | OMacAddress(); | 58 | OMacAddress(); |
59 | OMacAddress( unsigned char* ); | 59 | OMacAddress( unsigned char* ); |
60 | OMacAddress( const unsigned char* ); | 60 | OMacAddress( const unsigned char* ); |
61 | OMacAddress( struct ifreq& ); | 61 | OMacAddress( struct ifreq& ); |
62 | ~OMacAddress(); | 62 | ~OMacAddress(); |
63 | 63 | ||
64 | QString manufacturer() const; | 64 | QString manufacturer() const; |
65 | QString toString( bool substitute = false ) const; | 65 | QString toString( bool substitute = false ) const; |
66 | const unsigned char* native() const; | 66 | const unsigned char* native() const; |
67 | 67 | ||
68 | // no c'tor but this one why not make it a c'tor. it could also replace the others or is this the problem? | 68 | // no c'tor but this one why not make it a c'tor. it could also replace the others or is this the problem? |
69 | static OMacAddress fromString( const QString& ); | 69 | static OMacAddress fromString( const QString& ); |
70 | 70 | ||
71 | public: | 71 | public: |
72 | static const OMacAddress& broadcast; // ff:ff:ff:ff:ff:ff | 72 | static const OMacAddress& broadcast; // ff:ff:ff:ff:ff:ff |
73 | static const OMacAddress& unknown; // 44:44:44:44:44:44 | 73 | static const OMacAddress& unknown; // 44:44:44:44:44:44 |
74 | 74 | ||
75 | private: | 75 | private: |
76 | unsigned char _bytes[6]; | 76 | unsigned char _bytes[6]; |
77 | 77 | ||
78 | friend bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); | 78 | friend bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); |
79 | class Private; | 79 | class Private; |
80 | Private *d; | 80 | Private *d; |
81 | 81 | ||
82 | }; | 82 | }; |
83 | 83 | ||
84 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); | 84 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); |
85 | 85 | ||
86 | 86 | ||
87 | /*====================================================================================== | 87 | /*====================================================================================== |
88 | * OHostAddress | 88 | * OHostAddress |
89 | *======================================================================================*/ | 89 | *======================================================================================*/ |
90 | 90 | ||
91 | class OHostAddress : public QHostAddress | 91 | class OHostAddress : public QHostAddress |
92 | { | 92 | { |
93 | /*public: | 93 | /*public: |
94 | OHostAddress(); | 94 | OHostAddress(); |
95 | ~OHostAddress(); | 95 | ~OHostAddress(); |
96 | */ | 96 | */ |
97 | private: | 97 | private: |
98 | class Private; | 98 | class Private; |
99 | Private *d; | 99 | Private *d; |
100 | }; | 100 | }; |
101 | 101 | ||
102 | 102 | ||
103 | /*====================================================================================== | 103 | /*====================================================================================== |
104 | * OPrivateIOCTL | 104 | * OPrivateIOCTL |
105 | *======================================================================================*/ | 105 | *======================================================================================*/ |
106 | 106 | ||
107 | class OPrivateIOCTL : public QObject | 107 | class OPrivateIOCTL : public QObject |
108 | { | 108 | { |
109 | public: | 109 | public: |
110 | OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ); | 110 | OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ); |
111 | ~OPrivateIOCTL(); | 111 | ~OPrivateIOCTL(); |
112 | 112 | ||
113 | int numberGetArgs() const; | 113 | int numberGetArgs() const; |
114 | int typeGetArgs() const; | 114 | int typeGetArgs() const; |
115 | int numberSetArgs() const; | 115 | int numberSetArgs() const; |
116 | int typeSetArgs() const; | 116 | int typeSetArgs() const; |
117 | 117 | ||
118 | // FIXME return int? as ::ioctl does? -zecke | 118 | // FIXME return int? as ::ioctl does? -zecke |
119 | void invoke() const; | 119 | void invoke() const; |
120 | void setParameter( int, u_int32_t ); | 120 | void setParameter( int, u_int32_t ); |
121 | 121 | ||
122 | private: | 122 | private: |
123 | u_int32_t _ioctl; | 123 | u_int32_t _ioctl; |
124 | u_int16_t _getargs; | 124 | u_int16_t _getargs; |
125 | u_int16_t _setargs; | 125 | u_int16_t _setargs; |
126 | 126 | ||
127 | class Private; | 127 | class Private; |
128 | Private *d; | 128 | Private *d; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | /*====================================================================================== | 131 | /*====================================================================================== |
132 | * Miscellaneous | 132 | * Miscellaneous |
133 | *======================================================================================*/ | 133 | *======================================================================================*/ |
134 | 134 | ||
135 | namespace Internal { | 135 | namespace Internal { |
136 | void dumpBytes( const unsigned char* data, int num ); | 136 | void dumpBytes( const unsigned char* data, int num ); |
137 | QString modeToString( int ); | 137 | QString modeToString( int ); |
138 | int stringToMode( const QString& ); | 138 | int stringToMode( const QString& ); |
139 | } | 139 | } |
140 | } | 140 | } |
141 | } | 141 | } |
142 | 142 | ||
143 | #define IW_PRIV_TYPE_MASK 0x7000 | 143 | #define IW_PRIV_TYPE_MASK 0x7000 |
144 | #define IW_PRIV_TYPE_NONE 0x0000 | 144 | #define IW_PRIV_TYPE_NONE 0x0000 |
145 | #define IW_PRIV_TYPE_BYTE 0x1000 | 145 | #define IW_PRIV_TYPE_BYTE 0x1000 |
146 | #define IW_PRIV_TYPE_CHAR 0x2000 | 146 | #define IW_PRIV_TYPE_CHAR 0x2000 |
147 | #define IW_PRIV_TYPE_INT 0x4000 | 147 | #define IW_PRIV_TYPE_INT 0x4000 |
148 | #define IW_PRIV_TYPE_FLOAT 0x5000 | 148 | #define IW_PRIV_TYPE_FLOAT 0x5000 |
149 | #define IW_PRIV_TYPE_ADDR 0x6000 | 149 | #define IW_PRIV_TYPE_ADDR 0x6000 |
150 | #define IW_PRIV_SIZE_FIXED 0x0800 | 150 | #define IW_PRIV_SIZE_FIXED 0x0800 |
151 | #define IW_PRIV_SIZE_MASK 0x07FF | 151 | #define IW_PRIV_SIZE_MASK 0x07FF |
152 | 152 | ||
153 | #ifndef ARPHRD_IEEE80211 | 153 | #ifndef ARPHRD_IEEE80211 |
154 | #define ARPHRD_IEEE80211 801 | 154 | #define ARPHRD_IEEE80211 801 |
155 | #endif | 155 | #endif |
156 | #ifndef ARPHRD_IEEE80211_PRISM | 156 | #ifndef ARPHRD_IEEE80211_PRISM |
157 | #define ARPHRD_IEEE80211_PRISM 802 | 157 | #define ARPHRD_IEEE80211_PRISM 802 |
158 | #endif | 158 | #endif |
159 | 159 | ||
160 | 160 | ||
161 | /* Network to host order macros */ | 161 | /* Network to host order macros */ |
162 | 162 | ||
163 | #ifdef LBL_ALIGN | 163 | #ifdef LBL_ALIGN |
164 | #define EXTRACT_16BITS(p) \ | 164 | #define EXTRACT_16BITS(p) \ |
165 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \ | 165 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \ |
166 | (u_int16_t)*((const u_int8_t *)(p) + 1))) | 166 | (u_int16_t)*((const u_int8_t *)(p) + 1))) |
167 | #define EXTRACT_32BITS(p) \ | 167 | #define EXTRACT_32BITS(p) \ |
168 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \ | 168 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \ |
169 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \ | 169 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \ |
170 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \ | 170 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \ |
171 | (u_int32_t)*((const u_int8_t *)(p) + 3))) | 171 | (u_int32_t)*((const u_int8_t *)(p) + 3))) |
172 | #else | 172 | #else |
173 | #define EXTRACT_16BITS(p) \ | 173 | #define EXTRACT_16BITS(p) \ |
174 | ((u_int16_t)ntohs(*(const u_int16_t *)(p))) | 174 | ((u_int16_t)ntohs(*(const u_int16_t *)(p))) |
175 | #define EXTRACT_32BITS(p) \ | 175 | #define EXTRACT_32BITS(p) \ |
176 | ((u_int32_t)ntohl(*(const u_int32_t *)(p))) | 176 | ((u_int32_t)ntohl(*(const u_int32_t *)(p))) |
177 | #endif | 177 | #endif |
178 | 178 | ||
179 | #define EXTRACT_24BITS(p) \ | 179 | #define EXTRACT_24BITS(p) \ |
180 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \ | 180 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \ |
181 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 181 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
182 | (u_int32_t)*((const u_int8_t *)(p) + 2))) | 182 | (u_int32_t)*((const u_int8_t *)(p) + 2))) |
183 | 183 | ||
184 | /* Little endian protocol host order macros */ | 184 | /* Little endian protocol host order macros */ |
185 | #define EXTRACT_LE_8BITS(p) (*(p)) | 185 | #define EXTRACT_LE_8BITS(p) (*(p)) |
186 | #define EXTRACT_LE_16BITS(p) \ | 186 | #define EXTRACT_LE_16BITS(p) \ |
187 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 187 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
188 | (u_int16_t)*((const u_int8_t *)(p) + 0))) | 188 | (u_int16_t)*((const u_int8_t *)(p) + 0))) |
189 | #define EXTRACT_LE_32BITS(p) \ | 189 | #define EXTRACT_LE_32BITS(p) \ |
190 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \ | 190 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \ |
191 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \ | 191 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \ |
192 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 192 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
193 | (u_int32_t)*((const u_int8_t *)(p) + 0))) | 193 | (u_int32_t)*((const u_int8_t *)(p) + 0))) |
194 | 194 | ||
195 | #endif // ONETUTILS_H | 195 | #endif // ONETUTILS_H |
196 | 196 | ||
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp index 591681c..ae1865d 100644 --- a/libopie2/opienet/onetwork.cpp +++ b/libopie2/opienet/onetwork.cpp | |||
@@ -1,268 +1,268 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer | 3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer |
4 | =. <mickey@Vanille.de> | 4 | =. <mickey@Vanille.de> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | /* OPIE */ | 31 | /* OPIE */ |
32 | 32 | ||
33 | #include <opie2/onetwork.h> | 33 | #include <opie2/onetwork.h> |
34 | #include <opie2/ostation.h> | 34 | #include <opie2/ostation.h> |
35 | #include <opie2/odebug.h> | 35 | #include <opie2/odebug.h> |
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | 38 | ||
39 | #include <qfile.h> | 39 | #include <qfile.h> |
40 | #include <qtextstream.h> | 40 | #include <qtextstream.h> |
41 | 41 | ||
42 | /* UNIX */ | 42 | /* UNIX */ |
43 | 43 | ||
44 | #include <assert.h> | 44 | #include <assert.h> |
45 | #include <arpa/inet.h> | 45 | #include <arpa/inet.h> |
46 | #include <errno.h> | 46 | #include <errno.h> |
47 | #include <string.h> | 47 | #include <string.h> |
48 | #include <stdlib.h> | 48 | #include <stdlib.h> |
49 | #include <math.h> | 49 | #include <math.h> |
50 | #include <sys/ioctl.h> | 50 | #include <sys/ioctl.h> |
51 | #include <sys/socket.h> | 51 | #include <sys/socket.h> |
52 | #include <sys/types.h> | 52 | #include <sys/types.h> |
53 | #include <unistd.h> | 53 | #include <unistd.h> |
54 | #include <linux/sockios.h> | 54 | #include <linux/sockios.h> |
55 | #include <net/if_arp.h> | 55 | #include <net/if_arp.h> |
56 | #include <stdarg.h> | 56 | #include <stdarg.h> |
57 | 57 | ||
58 | #ifndef NODEBUG | 58 | #ifndef NODEBUG |
59 | #include <opie2/odebugmapper.h> | 59 | #include <opie2/odebugmapper.h> |
60 | 60 | ||
61 | 61 | ||
62 | using namespace Opie::Core; | 62 | using namespace Opie::Core; |
63 | using namespace Opie::Net::Internal; | 63 | using namespace Opie::Net::Internal; |
64 | DebugMapper* debugmapper = new DebugMapper(); | 64 | DebugMapper* debugmapper = new DebugMapper(); |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | /*====================================================================================== | 67 | /*====================================================================================== |
68 | * ONetwork | 68 | * ONetwork |
69 | *======================================================================================*/ | 69 | *======================================================================================*/ |
70 | 70 | ||
71 | namespace Opie { | 71 | namespace Opie { |
72 | namespace Net { | 72 | namespace Net { |
73 | ONetwork* ONetwork::_instance = 0; | 73 | ONetwork* ONetwork::_instance = 0; |
74 | 74 | ||
75 | ONetwork::ONetwork() | 75 | ONetwork::ONetwork() |
76 | { | 76 | { |
77 | odebug << "ONetwork::ONetwork()" << oendl; | 77 | odebug << "ONetwork::ONetwork()" << oendl; |
78 | odebug << "ONetwork: This code has been compiled against Wireless Extensions V" << WIRELESS_EXT << oendl; | 78 | odebug << "ONetwork: This code has been compiled against Wireless Extensions V" << WIRELESS_EXT << oendl; |
79 | synchronize(); | 79 | synchronize(); |
80 | } | 80 | } |
81 | 81 | ||
82 | void ONetwork::synchronize() | 82 | void ONetwork::synchronize() |
83 | { | 83 | { |
84 | // gather available interfaces by inspecting /proc/net/dev | 84 | // gather available interfaces by inspecting /proc/net/dev |
85 | //FIXME: we could use SIOCGIFCONF here, but we aren't interested in virtual (e.g. eth0:0) devices | 85 | //FIXME: we could use SIOCGIFCONF here, but we aren't interested in virtual (e.g. eth0:0) devices |
86 | //FIXME: Use SIOCGIFCONF anway, because we can disable listing of aliased devices | 86 | //FIXME: Use SIOCGIFCONF anway, because we can disable listing of aliased devices |
87 | //FIXME: Best is use SIOCGIFCONF and if this doesn't work (result=-1), then fallback to parsing /proc/net/dev | 87 | //FIXME: Best is use SIOCGIFCONF and if this doesn't work (result=-1), then fallback to parsing /proc/net/dev |
88 | 88 | ||
89 | _interfaces.clear(); | 89 | _interfaces.clear(); |
90 | QString str; | 90 | QString str; |
91 | QFile f( "/proc/net/dev" ); | 91 | QFile f( "/proc/net/dev" ); |
92 | bool hasFile = f.open( IO_ReadOnly ); | 92 | bool hasFile = f.open( IO_ReadOnly ); |
93 | if ( !hasFile ) | 93 | if ( !hasFile ) |
94 | { | 94 | { |
95 | odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl; | 95 | odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl; |
96 | return; | 96 | return; |
97 | } | 97 | } |
98 | QTextStream s( &f ); | 98 | QTextStream s( &f ); |
99 | s.readLine(); | 99 | s.readLine(); |
100 | s.readLine(); | 100 | s.readLine(); |
101 | while ( !s.atEnd() ) | 101 | while ( !s.atEnd() ) |
102 | { | 102 | { |
103 | s >> str; | 103 | s >> str; |
104 | str.truncate( str.find( ':' ) ); | 104 | str.truncate( str.find( ':' ) ); |
105 | odebug << "ONetwork: found interface '" << str << "'" << oendl; | 105 | odebug << "ONetwork: found interface '" << str << "'" << oendl; |
106 | ONetworkInterface* iface = 0; | 106 | ONetworkInterface* iface = 0; |
107 | if ( isWirelessInterface( str ) ) | 107 | if ( isWirelessInterface( str ) ) |
108 | { | 108 | { |
109 | iface = new OWirelessNetworkInterface( this, (const char*) str ); | 109 | iface = new OWirelessNetworkInterface( this, (const char*) str ); |
110 | odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; | 110 | odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; |
111 | } | 111 | } |
112 | else | 112 | else |
113 | { | 113 | { |
114 | iface = new ONetworkInterface( this, (const char*) str ); | 114 | iface = new ONetworkInterface( this, (const char*) str ); |
115 | } | 115 | } |
116 | _interfaces.insert( str, iface ); | 116 | _interfaces.insert( str, iface ); |
117 | s.readLine(); | 117 | s.readLine(); |
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
121 | 121 | ||
122 | short ONetwork::wirelessExtensionCompileVersion() | 122 | short ONetwork::wirelessExtensionCompileVersion() |
123 | { | 123 | { |
124 | return WIRELESS_EXT; | 124 | return WIRELESS_EXT; |
125 | } | 125 | } |
126 | 126 | ||
127 | 127 | ||
128 | int ONetwork::count() const | 128 | int ONetwork::count() const |
129 | { | 129 | { |
130 | return _interfaces.count(); | 130 | return _interfaces.count(); |
131 | } | 131 | } |
132 | 132 | ||
133 | 133 | ||
134 | ONetworkInterface* ONetwork::interface( const QString& iface ) const | 134 | ONetworkInterface* ONetwork::interface( const QString& iface ) const |
135 | { | 135 | { |
136 | return _interfaces[iface]; | 136 | return _interfaces[iface]; |
137 | } | 137 | } |
138 | 138 | ||
139 | 139 | ||
140 | ONetwork* ONetwork::instance() | 140 | ONetwork* ONetwork::instance() |
141 | { | 141 | { |
142 | if ( !_instance ) _instance = new ONetwork(); | 142 | if ( !_instance ) _instance = new ONetwork(); |
143 | return _instance; | 143 | return _instance; |
144 | } | 144 | } |
145 | 145 | ||
146 | 146 | ||
147 | ONetwork::InterfaceIterator ONetwork::iterator() const | 147 | ONetwork::InterfaceIterator ONetwork::iterator() const |
148 | { | 148 | { |
149 | return ONetwork::InterfaceIterator( _interfaces ); | 149 | return ONetwork::InterfaceIterator( _interfaces ); |
150 | } | 150 | } |
151 | 151 | ||
152 | 152 | ||
153 | bool ONetwork::isPresent( const char* name ) const | 153 | bool ONetwork::isPresent( const char* name ) const |
154 | { | 154 | { |
155 | int sfd = socket( AF_INET, SOCK_STREAM, 0 ); | 155 | int sfd = socket( AF_INET, SOCK_STREAM, 0 ); |
156 | struct ifreq ifr; | 156 | struct ifreq ifr; |
157 | memset( &ifr, 0, sizeof( struct ifreq ) ); | 157 | memset( &ifr, 0, sizeof( struct ifreq ) ); |
158 | strcpy( (char*) &ifr.ifr_name, name ); | 158 | strcpy( (char*) &ifr.ifr_name, name ); |
159 | int result = ::ioctl( sfd, SIOCGIFFLAGS, &ifr ); | 159 | int result = ::ioctl( sfd, SIOCGIFFLAGS, &ifr ); |
160 | return result != -1; | 160 | return result != -1; |
161 | } | 161 | } |
162 | 162 | ||
163 | 163 | ||
164 | bool ONetwork::isWirelessInterface( const char* name ) const | 164 | bool ONetwork::isWirelessInterface( const char* name ) const |
165 | { | 165 | { |
166 | int sfd = socket( AF_INET, SOCK_STREAM, 0 ); | 166 | int sfd = socket( AF_INET, SOCK_STREAM, 0 ); |
167 | struct iwreq iwr; | 167 | struct iwreq iwr; |
168 | memset( &iwr, 0, sizeof( struct iwreq ) ); | 168 | memset( &iwr, 0, sizeof( struct iwreq ) ); |
169 | strcpy( (char*) &iwr.ifr_name, name ); | 169 | strcpy( (char*) &iwr.ifr_name, name ); |
170 | int result = ::ioctl( sfd, SIOCGIWNAME, &iwr ); | 170 | int result = ::ioctl( sfd, SIOCGIWNAME, &iwr ); |
171 | return result != -1; | 171 | return result != -1; |
172 | } | 172 | } |
173 | 173 | ||
174 | /*====================================================================================== | 174 | /*====================================================================================== |
175 | * ONetworkInterface | 175 | * ONetworkInterface |
176 | *======================================================================================*/ | 176 | *======================================================================================*/ |
177 | 177 | ||
178 | ONetworkInterface::ONetworkInterface( QObject* parent, const char* name ) | 178 | ONetworkInterface::ONetworkInterface( QObject* parent, const char* name ) |
179 | :QObject( parent, name ), | 179 | :QObject( parent, name ), |
180 | _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 ) | 180 | _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 ) |
181 | { | 181 | { |
182 | odebug << "ONetworkInterface::ONetworkInterface()" << oendl; | 182 | odebug << "ONetworkInterface::ONetworkInterface()" << oendl; |
183 | init(); | 183 | init(); |
184 | } | 184 | } |
185 | 185 | ||
186 | 186 | ||
187 | struct ifreq& ONetworkInterface::ifr() const | 187 | struct ifreq& ONetworkInterface::ifr() const |
188 | { | 188 | { |
189 | return _ifr; | 189 | return _ifr; |
190 | } | 190 | } |
191 | 191 | ||
192 | 192 | ||
193 | void ONetworkInterface::init() | 193 | void ONetworkInterface::init() |
194 | { | 194 | { |
195 | odebug << "ONetworkInterface::init()" << oendl; | 195 | odebug << "ONetworkInterface::init()" << oendl; |
196 | 196 | ||
197 | memset( &_ifr, 0, sizeof( struct ifreq ) ); | 197 | memset( &_ifr, 0, sizeof( struct ifreq ) ); |
198 | 198 | ||
199 | if ( _sfd == -1 ) | 199 | if ( _sfd == -1 ) |
200 | { | 200 | { |
201 | odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl; | 201 | odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl; |
202 | return; | 202 | return; |
203 | } | 203 | } |
204 | } | 204 | } |
205 | 205 | ||
206 | 206 | ||
207 | bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const | 207 | bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const |
208 | { | 208 | { |
209 | #ifndef NODEBUG | 209 | #ifndef NODEBUG |
210 | int result = ::ioctl( _sfd, call, &ifreq ); | 210 | int result = ::ioctl( _sfd, call, &ifreq ); |
211 | if ( result == -1 ) | 211 | if ( result == -1 ) |
212 | odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) | 212 | odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) |
213 | << "' FAILED! " << result << " (" << strerror( errno ) << ")" << oendl; | 213 | << "' FAILED! " << result << " (" << strerror( errno ) << ")" << oendl; |
214 | else | 214 | else |
215 | odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) | 215 | odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) |
216 | << "' - Status: Ok." << oendl; | 216 | << "' - Status: Ok." << oendl; |
217 | return ( result != -1 ); | 217 | return ( result != -1 ); |
218 | #else | 218 | #else |
219 | return ::ioctl( _sfd, call, &ifreq ) != -1; | 219 | return ::ioctl( _sfd, call, &ifreq ) != -1; |
220 | #endif | 220 | #endif |
221 | } | 221 | } |
222 | 222 | ||
223 | 223 | ||
224 | bool ONetworkInterface::ioctl( int call ) const | 224 | bool ONetworkInterface::ioctl( int call ) const |
225 | { | 225 | { |
226 | strcpy( _ifr.ifr_name, name() ); | 226 | strcpy( _ifr.ifr_name, name() ); |
227 | return ioctl( call, _ifr ); | 227 | return ioctl( call, _ifr ); |
228 | } | 228 | } |
229 | 229 | ||
230 | 230 | ||
231 | bool ONetworkInterface::isLoopback() const | 231 | bool ONetworkInterface::isLoopback() const |
232 | { | 232 | { |
233 | ioctl( SIOCGIFFLAGS ); | 233 | ioctl( SIOCGIFFLAGS ); |
234 | return _ifr.ifr_flags & IFF_LOOPBACK; | 234 | return _ifr.ifr_flags & IFF_LOOPBACK; |
235 | } | 235 | } |
236 | 236 | ||
237 | 237 | ||
238 | bool ONetworkInterface::setUp( bool b ) | 238 | bool ONetworkInterface::setUp( bool b ) |
239 | { | 239 | { |
240 | ioctl( SIOCGIFFLAGS ); | 240 | ioctl( SIOCGIFFLAGS ); |
241 | if ( b ) _ifr.ifr_flags |= IFF_UP; | 241 | if ( b ) _ifr.ifr_flags |= IFF_UP; |
242 | else _ifr.ifr_flags &= (~IFF_UP); | 242 | else _ifr.ifr_flags &= (~IFF_UP); |
243 | return ioctl( SIOCSIFFLAGS ); | 243 | return ioctl( SIOCSIFFLAGS ); |
244 | } | 244 | } |
245 | 245 | ||
246 | 246 | ||
247 | bool ONetworkInterface::isUp() const | 247 | bool ONetworkInterface::isUp() const |
248 | { | 248 | { |
249 | ioctl( SIOCGIFFLAGS ); | 249 | ioctl( SIOCGIFFLAGS ); |
250 | return _ifr.ifr_flags & IFF_UP; | 250 | return _ifr.ifr_flags & IFF_UP; |
251 | } | 251 | } |
252 | 252 | ||
253 | 253 | ||
254 | void ONetworkInterface::setIPV4Address( const QHostAddress& addr ) | 254 | void ONetworkInterface::setIPV4Address( const QHostAddress& addr ) |
255 | { | 255 | { |
256 | struct sockaddr_in *sa = (struct sockaddr_in *) &_ifr.ifr_addr; | 256 | struct sockaddr_in *sa = (struct sockaddr_in *) &_ifr.ifr_addr; |
257 | sa->sin_family = AF_INET; | 257 | sa->sin_family = AF_INET; |
258 | sa->sin_port = 0; | 258 | sa->sin_port = 0; |
259 | sa->sin_addr.s_addr = htonl( addr.ip4Addr() ); | 259 | sa->sin_addr.s_addr = htonl( addr.ip4Addr() ); |
260 | ioctl( SIOCSIFADDR ); | 260 | ioctl( SIOCSIFADDR ); |
261 | } | 261 | } |
262 | 262 | ||
263 | 263 | ||
264 | QString ONetworkInterface::ipV4Address() const | 264 | QString ONetworkInterface::ipV4Address() const |
265 | { | 265 | { |
266 | if ( ioctl( SIOCGIFADDR ) ) | 266 | if ( ioctl( SIOCGIFADDR ) ) |
267 | { | 267 | { |
268 | struct sockaddr_in* sa = (struct sockaddr_in *) &_ifr.ifr_addr; | 268 | struct sockaddr_in* sa = (struct sockaddr_in *) &_ifr.ifr_addr; |
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index 057b1a0..be4bb46 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h | |||
@@ -1,268 +1,268 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer | 3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer |
4 | =. <mickey@Vanille.de> | 4 | =. <mickey@Vanille.de> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #ifndef ONETWORK_H | 31 | #ifndef ONETWORK_H |
32 | #define ONETWORK_H | 32 | #define ONETWORK_H |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <opie2/onetutils.h> | 35 | #include <opie2/onetutils.h> |
36 | #include <opie2/ostation.h> | 36 | #include <opie2/ostation.h> |
37 | 37 | ||
38 | /* QT */ | 38 | /* QT */ |
39 | #include <qvaluelist.h> | 39 | #include <qvaluelist.h> |
40 | #include <qdict.h> | 40 | #include <qdict.h> |
41 | #include <qmap.h> | 41 | #include <qmap.h> |
42 | #include <qobject.h> | 42 | #include <qobject.h> |
43 | #include <qhostaddress.h> | 43 | #include <qhostaddress.h> |
44 | 44 | ||
45 | /* STD */ | 45 | /* STD */ |
46 | // hacky workaround until we have a user space wireless.h | 46 | // hacky workaround until we have a user space wireless.h |
47 | #include <net/if.h> | 47 | #include <net/if.h> |
48 | #define _LINUX_IF_H | 48 | #define _LINUX_IF_H |
49 | #include <linux/wireless.h> | 49 | #include <linux/wireless.h> |
50 | #ifndef IW_MAX_PRIV_DEF | 50 | #ifndef IW_MAX_PRIV_DEF |
51 | #define IW_MAX_PRIV_DEF 128 | 51 | #define IW_MAX_PRIV_DEF 128 |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | namespace Opie { | 54 | namespace Opie { |
55 | namespace Net { | 55 | namespace Net { |
56 | class ONetworkInterface; | 56 | class ONetworkInterface; |
57 | class OWirelessNetworkInterface; | 57 | class OWirelessNetworkInterface; |
58 | class OChannelHopper; | 58 | class OChannelHopper; |
59 | class OMonitoringInterface; | 59 | class OMonitoringInterface; |
60 | 60 | ||
61 | /*====================================================================================== | 61 | /*====================================================================================== |
62 | * ONetwork | 62 | * ONetwork |
63 | *======================================================================================*/ | 63 | *======================================================================================*/ |
64 | 64 | ||
65 | /** | 65 | /** |
66 | * @brief A container class for all network interfaces | 66 | * @brief A container class for all network interfaces |
67 | * | 67 | * |
68 | * This class provides access to all available network interfaces of your computer. | 68 | * This class provides access to all available network interfaces of your computer. |
69 | * | 69 | * |
70 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> | 70 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> |
71 | */ | 71 | */ |
72 | class ONetwork : public QObject | 72 | class ONetwork : public QObject |
73 | { | 73 | { |
74 | Q_OBJECT | 74 | Q_OBJECT |
75 | 75 | ||
76 | public: | 76 | public: |
77 | typedef QDict<ONetworkInterface> InterfaceMap; | 77 | typedef QDict<ONetworkInterface> InterfaceMap; |
78 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; | 78 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; |
79 | 79 | ||
80 | public: | 80 | public: |
81 | /** | 81 | /** |
82 | * @returns the number of available interfaces | 82 | * @returns the number of available interfaces |
83 | */ | 83 | */ |
84 | int count() const; | 84 | int count() const; |
85 | /** | 85 | /** |
86 | * @returns a pointer to the (one and only) @ref ONetwork instance. | 86 | * @returns a pointer to the (one and only) @ref ONetwork instance. |
87 | */ | 87 | */ |
88 | static ONetwork* instance(); | 88 | static ONetwork* instance(); |
89 | /** | 89 | /** |
90 | * @returns an iterator usable for iterating through all network interfaces. | 90 | * @returns an iterator usable for iterating through all network interfaces. |
91 | */ | 91 | */ |
92 | InterfaceIterator iterator() const; | 92 | InterfaceIterator iterator() const; |
93 | /** | 93 | /** |
94 | * @returns true, if the @a interface is present. | 94 | * @returns true, if the @a interface is present. |
95 | */ | 95 | */ |
96 | bool isPresent( const char* interface ) const; | 96 | bool isPresent( const char* interface ) const; |
97 | /** | 97 | /** |
98 | * @returns true, if the @a interface supports the wireless extension protocol. | 98 | * @returns true, if the @a interface supports the wireless extension protocol. |
99 | */ | 99 | */ |
100 | bool isWirelessInterface( const char* interface ) const; | 100 | bool isWirelessInterface( const char* interface ) const; |
101 | /** | 101 | /** |
102 | * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found. | 102 | * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found. |
103 | * @see ONetworkInterface | 103 | * @see ONetworkInterface |
104 | */ | 104 | */ |
105 | ONetworkInterface* interface( const QString& interface ) const; | 105 | ONetworkInterface* interface( const QString& interface ) const; |
106 | /** | 106 | /** |
107 | * @internal Rebuild the internal interface database | 107 | * @internal Rebuild the internal interface database |
108 | * @note Sometimes it might be useful to call this from client code, | 108 | * @note Sometimes it might be useful to call this from client code, |
109 | * e.g. after issuing a cardctl insert | 109 | * e.g. after issuing a cardctl insert |
110 | */ | 110 | */ |
111 | void synchronize(); | 111 | void synchronize(); |
112 | /** | 112 | /** |
113 | * @returns the wireless extension version used at compile time. | 113 | * @returns the wireless extension version used at compile time. |
114 | **/ | 114 | **/ |
115 | static short wirelessExtensionCompileVersion(); | 115 | static short wirelessExtensionCompileVersion(); |
116 | 116 | ||
117 | protected: | 117 | protected: |
118 | ONetwork(); | 118 | ONetwork(); |
119 | 119 | ||
120 | private: | 120 | private: |
121 | static ONetwork* _instance; | 121 | static ONetwork* _instance; |
122 | InterfaceMap _interfaces; | 122 | InterfaceMap _interfaces; |
123 | class Private; | 123 | class Private; |
124 | Private *d; | 124 | Private *d; |
125 | }; | 125 | }; |
126 | 126 | ||
127 | 127 | ||
128 | /*====================================================================================== | 128 | /*====================================================================================== |
129 | * ONetworkInterface | 129 | * ONetworkInterface |
130 | *======================================================================================*/ | 130 | *======================================================================================*/ |
131 | 131 | ||
132 | /** | 132 | /** |
133 | * @brief A network interface wrapper. | 133 | * @brief A network interface wrapper. |
134 | * | 134 | * |
135 | * This class provides a wrapper for a network interface. All the cumbersume details of | 135 | * This class provides a wrapper for a network interface. All the cumbersume details of |
136 | * Linux ioctls are hidden under a convenient high-level interface. | 136 | * Linux ioctls are hidden under a convenient high-level interface. |
137 | * @warning Most of the setting methods contained in this class require the appropriate | 137 | * @warning Most of the setting methods contained in this class require the appropriate |
138 | * process permissions to work. | 138 | * process permissions to work. |
139 | * | 139 | * |
140 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> | 140 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> |
141 | */ | 141 | */ |
142 | class ONetworkInterface : public QObject | 142 | class ONetworkInterface : public QObject |
143 | { | 143 | { |
144 | friend class OMonitoringInterface; | 144 | friend class OMonitoringInterface; |
145 | friend class OCiscoMonitoringInterface; | 145 | friend class OCiscoMonitoringInterface; |
146 | friend class OWlanNGMonitoringInterface; | 146 | friend class OWlanNGMonitoringInterface; |
147 | friend class OHostAPMonitoringInterface; | 147 | friend class OHostAPMonitoringInterface; |
148 | friend class OOrinocoMonitoringInterface; | 148 | friend class OOrinocoMonitoringInterface; |
149 | 149 | ||
150 | public: | 150 | public: |
151 | /** | 151 | /** |
152 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, | 152 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, |
153 | * but access them via @ref ONetwork::interface(). | 153 | * but access them via @ref ONetwork::interface(). |
154 | */ | 154 | */ |
155 | ONetworkInterface( QObject* parent, const char* name ); | 155 | ONetworkInterface( QObject* parent, const char* name ); |
156 | /** | 156 | /** |
157 | * Destructor. | 157 | * Destructor. |
158 | */ | 158 | */ |
159 | virtual ~ONetworkInterface(); | 159 | virtual ~ONetworkInterface(); |
160 | /** | 160 | /** |
161 | * Associates a @a monitoring interface with this network interface. | 161 | * Associates a @a monitoring interface with this network interface. |
162 | * @note This is currently only useful with @ref OWirelessNetworkInterface objects. | 162 | * @note This is currently only useful with @ref OWirelessNetworkInterface objects. |
163 | */ | 163 | */ |
164 | void setMonitoring( OMonitoringInterface* monitoring ); | 164 | void setMonitoring( OMonitoringInterface* monitoring ); |
165 | /** | 165 | /** |
166 | * @returns the currently associated monitoring interface or 0, if no monitoring is associated. | 166 | * @returns the currently associated monitoring interface or 0, if no monitoring is associated. |
167 | */ | 167 | */ |
168 | OMonitoringInterface* monitoring() const; | 168 | OMonitoringInterface* monitoring() const; |
169 | /** | 169 | /** |
170 | * Setting an interface to promiscuous mode enables the device to receive | 170 | * Setting an interface to promiscuous mode enables the device to receive |
171 | * all packets on the shared medium - as opposed to packets which are addressed to this interface. | 171 | * all packets on the shared medium - as opposed to packets which are addressed to this interface. |
172 | */ | 172 | */ |
173 | bool setPromiscuousMode( bool ); | 173 | bool setPromiscuousMode( bool ); |
174 | /** | 174 | /** |
175 | * @returns true if the interface is set to promiscuous mode. | 175 | * @returns true if the interface is set to promiscuous mode. |
176 | */ | 176 | */ |
177 | bool promiscuousMode() const; | 177 | bool promiscuousMode() const; |
178 | /** | 178 | /** |
179 | * Setting an interface to up enables it to receive packets. | 179 | * Setting an interface to up enables it to receive packets. |
180 | */ | 180 | */ |
181 | bool setUp( bool ); | 181 | bool setUp( bool ); |
182 | /** | 182 | /** |
183 | * @returns true if the interface is up. | 183 | * @returns true if the interface is up. |
184 | */ | 184 | */ |
185 | bool isUp() const; | 185 | bool isUp() const; |
186 | /** | 186 | /** |
187 | * @returns true if the interface is a loopback interface. | 187 | * @returns true if the interface is a loopback interface. |
188 | */ | 188 | */ |
189 | bool isLoopback() const; | 189 | bool isLoopback() const; |
190 | /** | 190 | /** |
191 | * @returns true if the interface is featuring supports the wireless extension protocol. | 191 | * @returns true if the interface is featuring supports the wireless extension protocol. |
192 | */ | 192 | */ |
193 | bool isWireless() const; | 193 | bool isWireless() const; |
194 | /** | 194 | /** |
195 | * Associate the IP address @ addr with the interface. | 195 | * Associate the IP address @ addr with the interface. |
196 | */ | 196 | */ |
197 | void setIPV4Address( const QHostAddress& addr ); | 197 | void setIPV4Address( const QHostAddress& addr ); |
198 | /** | 198 | /** |
199 | * @returns the IPv4 address associated with the interface. | 199 | * @returns the IPv4 address associated with the interface. |
200 | */ | 200 | */ |
201 | QString ipV4Address() const; //TODO: make this return an OHostAddress | 201 | QString ipV4Address() const; //TODO: make this return an OHostAddress |
202 | /** | 202 | /** |
203 | * Associate the MAC address @a addr with the interface. | 203 | * Associate the MAC address @a addr with the interface. |
204 | * @note It can be necessary to shut down the interface prior to calling this method. | 204 | * @note It can be necessary to shut down the interface prior to calling this method. |
205 | * @warning This is not supported by all drivers. | 205 | * @warning This is not supported by all drivers. |
206 | */ | 206 | */ |
207 | void setMacAddress( const OMacAddress& addr ); | 207 | void setMacAddress( const OMacAddress& addr ); |
208 | /** | 208 | /** |
209 | * @returns the MAC address associated with the interface. | 209 | * @returns the MAC address associated with the interface. |
210 | */ | 210 | */ |
211 | OMacAddress macAddress() const; | 211 | OMacAddress macAddress() const; |
212 | /** | 212 | /** |
213 | * Associate the IPv4 @a netmask with the interface. | 213 | * Associate the IPv4 @a netmask with the interface. |
214 | */ | 214 | */ |
215 | void setIPV4Netmask( const QHostAddress& netmask ); | 215 | void setIPV4Netmask( const QHostAddress& netmask ); |
216 | /** | 216 | /** |
217 | * @returns the IPv4 netmask associated with the interface. | 217 | * @returns the IPv4 netmask associated with the interface. |
218 | */ | 218 | */ |
219 | QString ipV4Netmask() const; //TODO: make this return an OHostAddress | 219 | QString ipV4Netmask() const; //TODO: make this return an OHostAddress |
220 | /** | 220 | /** |
221 | * @returns the data link type currently associated with the interface. | 221 | * @returns the data link type currently associated with the interface. |
222 | * @see #include <net/if_arp.h> for possible values. | 222 | * @see #include <net/if_arp.h> for possible values. |
223 | */ | 223 | */ |
224 | int dataLinkType() const; | 224 | int dataLinkType() const; |
225 | 225 | ||
226 | protected: | 226 | protected: |
227 | const int _sfd; | 227 | const int _sfd; |
228 | mutable ifreq _ifr; | 228 | mutable ifreq _ifr; |
229 | OMonitoringInterface* _mon; | 229 | OMonitoringInterface* _mon; |
230 | 230 | ||
231 | protected: | 231 | protected: |
232 | struct ifreq& ifr() const; | 232 | struct ifreq& ifr() const; |
233 | virtual void init(); | 233 | virtual void init(); |
234 | bool ioctl( int call ) const; | 234 | bool ioctl( int call ) const; |
235 | bool ioctl( int call, struct ifreq& ) const; | 235 | bool ioctl( int call, struct ifreq& ) const; |
236 | private: | 236 | private: |
237 | class Private; | 237 | class Private; |
238 | Private *d; | 238 | Private *d; |
239 | }; | 239 | }; |
240 | 240 | ||
241 | /*====================================================================================== | 241 | /*====================================================================================== |
242 | * OChannelHopper | 242 | * OChannelHopper |
243 | *======================================================================================*/ | 243 | *======================================================================================*/ |
244 | 244 | ||
245 | /** | 245 | /** |
246 | * @brief A radio frequency channel hopper. | 246 | * @brief A radio frequency channel hopper. |
247 | * | 247 | * |
248 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently | 248 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently |
249 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. | 249 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. |
250 | * This is necessary when in monitoring mode and scanning for other devices, because | 250 | * This is necessary when in monitoring mode and scanning for other devices, because |
251 | * the radio frequency hardware can only detect packets sent on the same frequency. | 251 | * the radio frequency hardware can only detect packets sent on the same frequency. |
252 | * | 252 | * |
253 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> | 253 | * @author Michael 'Mickey' Lauer <mickey@vanille.de> |
254 | */ | 254 | */ |
255 | class OChannelHopper : public QObject | 255 | class OChannelHopper : public QObject |
256 | { | 256 | { |
257 | Q_OBJECT | 257 | Q_OBJECT |
258 | 258 | ||
259 | public: | 259 | public: |
260 | /** | 260 | /** |
261 | * Constructor. | 261 | * Constructor. |
262 | */ | 262 | */ |
263 | OChannelHopper( OWirelessNetworkInterface* ); | 263 | OChannelHopper( OWirelessNetworkInterface* ); |
264 | /** | 264 | /** |
265 | * Destructor. | 265 | * Destructor. |
266 | */ | 266 | */ |
267 | virtual ~OChannelHopper(); | 267 | virtual ~OChannelHopper(); |
268 | /** | 268 | /** |
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index 25ac09b..eafbeea 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp | |||
@@ -1,268 +1,268 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003-2004 by Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | =. | 4 | =. |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "udp_ports.h" | 31 | #include "udp_ports.h" |
32 | #include "opcap.h" | 32 | #include "opcap.h" |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <opie2/odebug.h> | 35 | #include <opie2/odebug.h> |
36 | using namespace Opie::Core; | 36 | using namespace Opie::Core; |
37 | 37 | ||
38 | /* QT */ | 38 | /* QT */ |
39 | #include <qapplication.h> // don't use oapplication here (will decrease reusability in other projects) | 39 | #include <qapplication.h> // don't use oapplication here (will decrease reusability in other projects) |
40 | #include <qsocketnotifier.h> | 40 | #include <qsocketnotifier.h> |
41 | #include <qobjectlist.h> | 41 | #include <qobjectlist.h> |
42 | 42 | ||
43 | /* STD */ | 43 | /* STD */ |
44 | #include <sys/time.h> | 44 | #include <sys/time.h> |
45 | #include <sys/types.h> | 45 | #include <sys/types.h> |
46 | #include <assert.h> | 46 | #include <assert.h> |
47 | #include <unistd.h> | 47 | #include <unistd.h> |
48 | #include <string.h> | 48 | #include <string.h> |
49 | 49 | ||
50 | namespace Opie { | 50 | namespace Opie { |
51 | namespace Net { | 51 | namespace Net { |
52 | 52 | ||
53 | /*====================================================================================== | 53 | /*====================================================================================== |
54 | * OPacket | 54 | * OPacket |
55 | *======================================================================================*/ | 55 | *======================================================================================*/ |
56 | 56 | ||
57 | OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* data, QObject* parent ) | 57 | OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* data, QObject* parent ) |
58 | :QObject( parent, "Generic" ), _hdr( header ), _data( 0 ) | 58 | :QObject( parent, "Generic" ), _hdr( header ), _data( 0 ) |
59 | { | 59 | { |
60 | 60 | ||
61 | _data = new unsigned char[ header.len ]; | 61 | _data = new unsigned char[ header.len ]; |
62 | assert( _data ); | 62 | assert( _data ); |
63 | memcpy( const_cast<unsigned char*>(_data), data, header.len ); | 63 | memcpy( const_cast<unsigned char*>(_data), data, header.len ); |
64 | // We have to copy the data structure here, because the 'data' pointer handed by libpcap | 64 | // We have to copy the data structure here, because the 'data' pointer handed by libpcap |
65 | // points to an internal region which is reused by lipcap. | 65 | // points to an internal region which is reused by lipcap. |
66 | odebug << "OPacket: Length = " << header.len << ", Caplen = " << header.caplen << oendl; | 66 | odebug << "OPacket: Length = " << header.len << ", Caplen = " << header.caplen << oendl; |
67 | _end = (unsigned char*) _data + header.len; | 67 | _end = (unsigned char*) _data + header.len; |
68 | 68 | ||
69 | switch ( datalink ) | 69 | switch ( datalink ) |
70 | { | 70 | { |
71 | case DLT_EN10MB: | 71 | case DLT_EN10MB: |
72 | odebug << "OPacket::OPacket(): Received Packet. Datalink = ETHERNET" << oendl; | 72 | odebug << "OPacket::OPacket(): Received Packet. Datalink = ETHERNET" << oendl; |
73 | new OEthernetPacket( _end, (const struct ether_header*) _data, this ); | 73 | new OEthernetPacket( _end, (const struct ether_header*) _data, this ); |
74 | break; | 74 | break; |
75 | 75 | ||
76 | case DLT_IEEE802_11: | 76 | case DLT_IEEE802_11: |
77 | odebug << "OPacket::OPacket(): Received Packet. Datalink = IEEE802.11" << oendl; | 77 | odebug << "OPacket::OPacket(): Received Packet. Datalink = IEEE802.11" << oendl; |
78 | new OWaveLanPacket( _end, (const struct ieee_802_11_header*) _data, this ); | 78 | new OWaveLanPacket( _end, (const struct ieee_802_11_header*) _data, this ); |
79 | break; | 79 | break; |
80 | 80 | ||
81 | case DLT_PRISM_HEADER: | 81 | case DLT_PRISM_HEADER: |
82 | odebug << "OPacket::OPacket(): Received Packet. Datalink = PRISM_HEADER" << oendl; | 82 | odebug << "OPacket::OPacket(): Received Packet. Datalink = PRISM_HEADER" << oendl; |
83 | new OPrismHeaderPacket( _end, (const struct prism_hdr*) (unsigned char*) _data, this ); | 83 | new OPrismHeaderPacket( _end, (const struct prism_hdr*) (unsigned char*) _data, this ); |
84 | break; | 84 | break; |
85 | 85 | ||
86 | default: | 86 | default: |
87 | owarn << "OPacket::OPacket(): Received Packet over unsupported datalink, type " << datalink << "!" << oendl; | 87 | owarn << "OPacket::OPacket(): Received Packet over unsupported datalink, type " << datalink << "!" << oendl; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 | ||
91 | 91 | ||
92 | OPacket::~OPacket() | 92 | OPacket::~OPacket() |
93 | { | 93 | { |
94 | odebug << "~OPacket( " << name() << " )" << oendl; | 94 | odebug << "~OPacket( " << name() << " )" << oendl; |
95 | delete [] _data; | 95 | delete [] _data; |
96 | } | 96 | } |
97 | 97 | ||
98 | 98 | ||
99 | timevalstruct OPacket::timeval() const | 99 | timevalstruct OPacket::timeval() const |
100 | { | 100 | { |
101 | return _hdr.ts; | 101 | return _hdr.ts; |
102 | } | 102 | } |
103 | 103 | ||
104 | 104 | ||
105 | int OPacket::caplen() const | 105 | int OPacket::caplen() const |
106 | { | 106 | { |
107 | return _hdr.caplen; | 107 | return _hdr.caplen; |
108 | } | 108 | } |
109 | 109 | ||
110 | 110 | ||
111 | void OPacket::updateStats( QMap<QString,int>& stats, QObjectList* l ) | 111 | void OPacket::updateStats( QMap<QString,int>& stats, QObjectList* l ) |
112 | { | 112 | { |
113 | if (!l) return; | 113 | if (!l) return; |
114 | QObject* o = l->first(); | 114 | QObject* o = l->first(); |
115 | while ( o ) | 115 | while ( o ) |
116 | { | 116 | { |
117 | stats[o->name()]++; | 117 | stats[o->name()]++; |
118 | updateStats( stats, const_cast<QObjectList*>( o->children() ) ); | 118 | updateStats( stats, const_cast<QObjectList*>( o->children() ) ); |
119 | o = l->next(); | 119 | o = l->next(); |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | 123 | ||
124 | QString OPacket::dumpStructure() const | 124 | QString OPacket::dumpStructure() const |
125 | { | 125 | { |
126 | return "[ |" + _dumpStructure( const_cast<QObjectList*>( this->children() ) ) + " ]"; | 126 | return "[ |" + _dumpStructure( const_cast<QObjectList*>( this->children() ) ) + " ]"; |
127 | } | 127 | } |
128 | 128 | ||
129 | 129 | ||
130 | QString OPacket::_dumpStructure( QObjectList* l ) const | 130 | QString OPacket::_dumpStructure( QObjectList* l ) const |
131 | { | 131 | { |
132 | if (!l) return QString::null; | 132 | if (!l) return QString::null; |
133 | QObject* o = l->first(); | 133 | QObject* o = l->first(); |
134 | QString str(" "); | 134 | QString str(" "); |
135 | 135 | ||
136 | while ( o ) | 136 | while ( o ) |
137 | { | 137 | { |
138 | str.append( o->name() ); | 138 | str.append( o->name() ); |
139 | str.append( " |" ); | 139 | str.append( " |" ); |
140 | str += _dumpStructure( const_cast<QObjectList*>( o->children() ) ); | 140 | str += _dumpStructure( const_cast<QObjectList*>( o->children() ) ); |
141 | o = l->next(); | 141 | o = l->next(); |
142 | } | 142 | } |
143 | return str; | 143 | return str; |
144 | } | 144 | } |
145 | 145 | ||
146 | QString OPacket::dump( int bpl ) const | 146 | QString OPacket::dump( int bpl ) const |
147 | { | 147 | { |
148 | static int index = 0; | 148 | static int index = 0; |
149 | index++; | 149 | index++; |
150 | int len = _hdr.caplen; | 150 | int len = _hdr.caplen; |
151 | QString str( "000:" ); | 151 | QString str( "000:" ); |
152 | QString tmp; | 152 | QString tmp; |
153 | QString bytes; | 153 | QString bytes; |
154 | QString chars; | 154 | QString chars; |
155 | 155 | ||
156 | for ( int i = 0; i < len; ++i ) | 156 | for ( int i = 0; i < len; ++i ) |
157 | { | 157 | { |
158 | tmp.sprintf( "%02X ", _data[i] ); bytes.append( tmp ); | 158 | tmp.sprintf( "%02X ", _data[i] ); bytes.append( tmp ); |
159 | if ( (_data[i] > 31) && (_data[i]<128) ) chars.append( _data[i] ); | 159 | if ( (_data[i] > 31) && (_data[i]<128) ) chars.append( _data[i] ); |
160 | else chars.append( '.' ); | 160 | else chars.append( '.' ); |
161 | 161 | ||
162 | if ( !((i+1) % bpl) ) | 162 | if ( !((i+1) % bpl) ) |
163 | { | 163 | { |
164 | str.append( bytes ); | 164 | str.append( bytes ); |
165 | str.append( ' ' ); | 165 | str.append( ' ' ); |
166 | str.append( chars ); | 166 | str.append( chars ); |
167 | str.append( '\n' ); | 167 | str.append( '\n' ); |
168 | tmp.sprintf( "%03X:", i+1 ); str.append( tmp ); | 168 | tmp.sprintf( "%03X:", i+1 ); str.append( tmp ); |
169 | bytes = ""; | 169 | bytes = ""; |
170 | chars = ""; | 170 | chars = ""; |
171 | } | 171 | } |
172 | 172 | ||
173 | } | 173 | } |
174 | if ( (len % bpl) ) | 174 | if ( (len % bpl) ) |
175 | { | 175 | { |
176 | str.append( bytes.leftJustify( 1 + 3*bpl ) ); | 176 | str.append( bytes.leftJustify( 1 + 3*bpl ) ); |
177 | str.append( chars ); | 177 | str.append( chars ); |
178 | } | 178 | } |
179 | str.append( '\n' ); | 179 | str.append( '\n' ); |
180 | return str; | 180 | return str; |
181 | } | 181 | } |
182 | 182 | ||
183 | 183 | ||
184 | int OPacket::len() const | 184 | int OPacket::len() const |
185 | { | 185 | { |
186 | return _hdr.len; | 186 | return _hdr.len; |
187 | } | 187 | } |
188 | 188 | ||
189 | 189 | ||
190 | QTextStream& operator<<( QTextStream& s, const OPacket& p ) | 190 | QTextStream& operator<<( QTextStream& s, const OPacket& p ) |
191 | { | 191 | { |
192 | s << p.dumpStructure(); | 192 | s << p.dumpStructure(); |
193 | return s; | 193 | return s; |
194 | } | 194 | } |
195 | 195 | ||
196 | 196 | ||
197 | /*====================================================================================== | 197 | /*====================================================================================== |
198 | * OEthernetPacket | 198 | * OEthernetPacket |
199 | *======================================================================================*/ | 199 | *======================================================================================*/ |
200 | 200 | ||
201 | OEthernetPacket::OEthernetPacket( const unsigned char* end, const struct ether_header* data, QObject* parent ) | 201 | OEthernetPacket::OEthernetPacket( const unsigned char* end, const struct ether_header* data, QObject* parent ) |
202 | :QObject( parent, "Ethernet" ), _ether( data ) | 202 | :QObject( parent, "Ethernet" ), _ether( data ) |
203 | { | 203 | { |
204 | 204 | ||
205 | odebug << "Source = " << sourceAddress().toString() << oendl; | 205 | odebug << "Source = " << sourceAddress().toString() << oendl; |
206 | odebug << "Destination = " << destinationAddress().toString() << oendl; | 206 | odebug << "Destination = " << destinationAddress().toString() << oendl; |
207 | 207 | ||
208 | if ( sourceAddress() == OMacAddress::broadcast ) | 208 | if ( sourceAddress() == OMacAddress::broadcast ) |
209 | odebug << "Source is broadcast address" << oendl; | 209 | odebug << "Source is broadcast address" << oendl; |
210 | if ( destinationAddress() == OMacAddress::broadcast ) | 210 | if ( destinationAddress() == OMacAddress::broadcast ) |
211 | odebug << "Destination is broadcast address" << oendl; | 211 | odebug << "Destination is broadcast address" << oendl; |
212 | 212 | ||
213 | switch ( type() ) | 213 | switch ( type() ) |
214 | { | 214 | { |
215 | case ETHERTYPE_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; | 215 | case ETHERTYPE_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; |
216 | case ETHERTYPE_ARP: new OARPPacket( end, (const struct myarphdr*) (data+1), this ); break; | 216 | case ETHERTYPE_ARP: new OARPPacket( end, (const struct myarphdr*) (data+1), this ); break; |
217 | case ETHERTYPE_REVARP: { odebug << "OPacket::OPacket(): Received Ethernet Packet : Type = RARP" << oendl; break; } | 217 | case ETHERTYPE_REVARP: { odebug << "OPacket::OPacket(): Received Ethernet Packet : Type = RARP" << oendl; break; } |
218 | default: odebug << "OPacket::OPacket(): Received Ethernet Packet : Type = UNKNOWN" << oendl; | 218 | default: odebug << "OPacket::OPacket(): Received Ethernet Packet : Type = UNKNOWN" << oendl; |
219 | } | 219 | } |
220 | 220 | ||
221 | } | 221 | } |
222 | 222 | ||
223 | 223 | ||
224 | OEthernetPacket::~OEthernetPacket() | 224 | OEthernetPacket::~OEthernetPacket() |
225 | { | 225 | { |
226 | } | 226 | } |
227 | 227 | ||
228 | 228 | ||
229 | OMacAddress OEthernetPacket::sourceAddress() const | 229 | OMacAddress OEthernetPacket::sourceAddress() const |
230 | { | 230 | { |
231 | return OMacAddress( _ether->ether_shost ); | 231 | return OMacAddress( _ether->ether_shost ); |
232 | } | 232 | } |
233 | 233 | ||
234 | 234 | ||
235 | OMacAddress OEthernetPacket::destinationAddress() const | 235 | OMacAddress OEthernetPacket::destinationAddress() const |
236 | { | 236 | { |
237 | return OMacAddress( _ether->ether_dhost ); | 237 | return OMacAddress( _ether->ether_dhost ); |
238 | } | 238 | } |
239 | 239 | ||
240 | int OEthernetPacket::type() const | 240 | int OEthernetPacket::type() const |
241 | { | 241 | { |
242 | return ntohs( _ether->ether_type ); | 242 | return ntohs( _ether->ether_type ); |
243 | } | 243 | } |
244 | 244 | ||
245 | 245 | ||
246 | /*====================================================================================== | 246 | /*====================================================================================== |
247 | * OIPPacket | 247 | * OIPPacket |
248 | *======================================================================================*/ | 248 | *======================================================================================*/ |
249 | 249 | ||
250 | 250 | ||
251 | OIPPacket::OIPPacket( const unsigned char* end, const struct iphdr* data, QObject* parent ) | 251 | OIPPacket::OIPPacket( const unsigned char* end, const struct iphdr* data, QObject* parent ) |
252 | :QObject( parent, "IP" ), _iphdr( data ) | 252 | :QObject( parent, "IP" ), _iphdr( data ) |
253 | { | 253 | { |
254 | odebug << "OIPPacket::OIPPacket(): decoding IP header..." << oendl; | 254 | odebug << "OIPPacket::OIPPacket(): decoding IP header..." << oendl; |
255 | 255 | ||
256 | odebug << "FromAddress = " << fromIPAddress().toString() << oendl; | 256 | odebug << "FromAddress = " << fromIPAddress().toString() << oendl; |
257 | odebug << " toAddress = " << toIPAddress().toString() << oendl; | 257 | odebug << " toAddress = " << toIPAddress().toString() << oendl; |
258 | 258 | ||
259 | switch ( protocol() ) | 259 | switch ( protocol() ) |
260 | { | 260 | { |
261 | case IPPROTO_UDP: new OUDPPacket( end, (const struct udphdr*) (data+1), this ); break; | 261 | case IPPROTO_UDP: new OUDPPacket( end, (const struct udphdr*) (data+1), this ); break; |
262 | case IPPROTO_TCP: new OTCPPacket( end, (const struct tcphdr*) (data+1), this ); break; | 262 | case IPPROTO_TCP: new OTCPPacket( end, (const struct tcphdr*) (data+1), this ); break; |
263 | default: odebug << "OIPPacket::OIPPacket(): unknown IP protocol, type = " << protocol() << oendl; | 263 | default: odebug << "OIPPacket::OIPPacket(): unknown IP protocol, type = " << protocol() << oendl; |
264 | } | 264 | } |
265 | 265 | ||
266 | } | 266 | } |
267 | 267 | ||
268 | OIPPacket::~OIPPacket() | 268 | OIPPacket::~OIPPacket() |
diff --git a/libopie2/opienet/opcap.h b/libopie2/opienet/opcap.h index 9e718d5..149e573 100644 --- a/libopie2/opienet/opcap.h +++ b/libopie2/opienet/opcap.h | |||
@@ -1,268 +1,268 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | =. | 4 | =. |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #ifndef OPCAP_H | 31 | #ifndef OPCAP_H |
32 | #define OPCAP_H | 32 | #define OPCAP_H |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <opie2/onetutils.h> | 35 | #include <opie2/onetutils.h> |
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | #include <qevent.h> | 38 | #include <qevent.h> |
39 | #include <qfile.h> | 39 | #include <qfile.h> |
40 | #include <qhostaddress.h> | 40 | #include <qhostaddress.h> |
41 | #include <qobject.h> | 41 | #include <qobject.h> |
42 | #include <qstring.h> | 42 | #include <qstring.h> |
43 | #include <qtextstream.h> | 43 | #include <qtextstream.h> |
44 | #include <qmap.h> | 44 | #include <qmap.h> |
45 | 45 | ||
46 | /* STD */ | 46 | /* STD */ |
47 | extern "C" // work around a bpf/pcap conflict in recent headers | 47 | extern "C" // work around a bpf/pcap conflict in recent headers |
48 | { | 48 | { |
49 | #include <pcap.h> | 49 | #include <pcap.h> |
50 | } | 50 | } |
51 | #include <netinet/ether.h> | 51 | #include <netinet/ether.h> |
52 | #include <netinet/ip.h> | 52 | #include <netinet/ip.h> |
53 | #include <netinet/udp.h> | 53 | #include <netinet/udp.h> |
54 | #include <netinet/tcp.h> | 54 | #include <netinet/tcp.h> |
55 | #include <time.h> | 55 | #include <time.h> |
56 | 56 | ||
57 | /* Custom Network Includes (must go here, don't reorder!) */ | 57 | /* Custom Network Includes (must go here, don't reorder!) */ |
58 | #include "802_11_user.h" | 58 | #include "802_11_user.h" |
59 | #include "dhcp.h" | 59 | #include "dhcp.h" |
60 | 60 | ||
61 | 61 | ||
62 | /* TYPEDEFS */ | 62 | /* TYPEDEFS */ |
63 | typedef struct timeval timevalstruct; | 63 | typedef struct timeval timevalstruct; |
64 | typedef struct pcap_pkthdr packetheaderstruct; | 64 | typedef struct pcap_pkthdr packetheaderstruct; |
65 | 65 | ||
66 | /* FORWARDS */ | 66 | /* FORWARDS */ |
67 | class QSocketNotifier; | 67 | class QSocketNotifier; |
68 | namespace Opie { | 68 | namespace Opie { |
69 | namespace Net { | 69 | namespace Net { |
70 | class OPacketCapturer; | 70 | class OPacketCapturer; |
71 | 71 | ||
72 | /*====================================================================================== | 72 | /*====================================================================================== |
73 | * OPacket - A frame on the wire | 73 | * OPacket - A frame on the wire |
74 | *======================================================================================*/ | 74 | *======================================================================================*/ |
75 | 75 | ||
76 | /** @brief A class representing a data frame on the wire. | 76 | /** @brief A class representing a data frame on the wire. |
77 | * | 77 | * |
78 | * The whole family of the packet classes are used when capturing frames from a network. | 78 | * The whole family of the packet classes are used when capturing frames from a network. |
79 | * Most standard network protocols in use share a common architecture, which mostly is | 79 | * Most standard network protocols in use share a common architecture, which mostly is |
80 | * a packet header and then the packet payload. In layered architectures, each lower layer | 80 | * a packet header and then the packet payload. In layered architectures, each lower layer |
81 | * encapsulates data from its upper layer - that is it | 81 | * encapsulates data from its upper layer - that is it |
82 | * treats the data from its upper layer as payload and prepends an own header to the packet, | 82 | * treats the data from its upper layer as payload and prepends an own header to the packet, |
83 | * which - again - is treated as the payload for the layer below. The figure below is an | 83 | * which - again - is treated as the payload for the layer below. The figure below is an |
84 | * example for how such a data frame is composed out of packets, e.g. when sending a mail. | 84 | * example for how such a data frame is composed out of packets, e.g. when sending a mail. |
85 | * | 85 | * |
86 | * <pre> | 86 | * <pre> |
87 | * | User Data | == Mail Data | 87 | * | User Data | == Mail Data |
88 | * | SMTP Header | User Data | == SMTP | 88 | * | SMTP Header | User Data | == SMTP |
89 | * | TCP Header | SMTP Header | User Data | == TCP | 89 | * | TCP Header | SMTP Header | User Data | == TCP |
90 | * | IP Header | TCP Header | SMTP Header | User Data | == IP | 90 | * | IP Header | TCP Header | SMTP Header | User Data | == IP |
91 | * | MAC Header | IP Header | TCP Header | SMTP Header | User Data | == MAC | 91 | * | MAC Header | IP Header | TCP Header | SMTP Header | User Data | == MAC |
92 | * | 92 | * |
93 | * </pre> | 93 | * </pre> |
94 | * | 94 | * |
95 | * The example is trimmed for simplicity, because the MAC (Medium Access Control) layer | 95 | * The example is trimmed for simplicity, because the MAC (Medium Access Control) layer |
96 | * also contains a few more levels of encapsulation. | 96 | * also contains a few more levels of encapsulation. |
97 | * Since the type of the payload is more or less independent from the encapsulating protocol, | 97 | * Since the type of the payload is more or less independent from the encapsulating protocol, |
98 | * the header must be inspected before attempting to decode the payload. Hence, the | 98 | * the header must be inspected before attempting to decode the payload. Hence, the |
99 | * encapsulation level varies and can't be deduced without actually looking into the packets. | 99 | * encapsulation level varies and can't be deduced without actually looking into the packets. |
100 | * | 100 | * |
101 | * For actually working with captured frames, it's useful to identify the packets via names and | 101 | * For actually working with captured frames, it's useful to identify the packets via names and |
102 | * insert them into a parent/child - relationship based on the encapsulation. This is why | 102 | * insert them into a parent/child - relationship based on the encapsulation. This is why |
103 | * all packet classes derive from QObject. The amount of overhead caused by the QObject is | 103 | * all packet classes derive from QObject. The amount of overhead caused by the QObject is |
104 | * not a problem in this case, because we're talking about a theoratical maximum of about | 104 | * not a problem in this case, because we're talking about a theoratical maximum of about |
105 | * 10 packets per captured frame. We need to stuff them into a searchable list anyway and the | 105 | * 10 packets per captured frame. We need to stuff them into a searchable list anyway and the |
106 | * QObject also cares about destroying the sub-, (child-) packets. | 106 | * QObject also cares about destroying the sub-, (child-) packets. |
107 | * | 107 | * |
108 | * This enables us to perform a simple look for packets of a certain type: | 108 | * This enables us to perform a simple look for packets of a certain type: |
109 | * @code | 109 | * @code |
110 | * OPacketCapturer* pcap = new OPacketCapturer(); | 110 | * OPacketCapturer* pcap = new OPacketCapturer(); |
111 | * pcap->open( "eth0" ); | 111 | * pcap->open( "eth0" ); |
112 | * OPacket* p = pcap->next(); | 112 | * OPacket* p = pcap->next(); |
113 | * OIPPacket* ip = (OIPPacket*) p->child( "IP" ); // returns 0, if no such child exists | 113 | * OIPPacket* ip = (OIPPacket*) p->child( "IP" ); // returns 0, if no such child exists |
114 | * odebug << "got ip packet from " << ip->fromIPAddress().toString() << " to " << ip->toIPAddress().toString() << oendl; | 114 | * odebug << "got ip packet from " << ip->fromIPAddress().toString() << " to " << ip->toIPAddress().toString() << oendl; |
115 | * | 115 | * |
116 | */ | 116 | */ |
117 | 117 | ||
118 | class OPacket : public QObject | 118 | class OPacket : public QObject |
119 | { | 119 | { |
120 | Q_OBJECT | 120 | Q_OBJECT |
121 | 121 | ||
122 | friend class OPacketCapturer; | 122 | friend class OPacketCapturer; |
123 | friend QTextStream& operator<<( QTextStream& s, const OPacket& p ); | 123 | friend QTextStream& operator<<( QTextStream& s, const OPacket& p ); |
124 | 124 | ||
125 | public: | 125 | public: |
126 | OPacket( int datalink, packetheaderstruct, const unsigned char*, QObject* parent ); | 126 | OPacket( int datalink, packetheaderstruct, const unsigned char*, QObject* parent ); |
127 | virtual ~OPacket(); | 127 | virtual ~OPacket(); |
128 | 128 | ||
129 | timevalstruct timeval() const; | 129 | timevalstruct timeval() const; |
130 | 130 | ||
131 | int caplen() const; | 131 | int caplen() const; |
132 | int len() const; | 132 | int len() const; |
133 | QString dump( int = 32 ) const; //FIXME: remove that | 133 | QString dump( int = 32 ) const; //FIXME: remove that |
134 | 134 | ||
135 | void updateStats( QMap<QString,int>&, QObjectList* ); //FIXME: Revise | 135 | void updateStats( QMap<QString,int>&, QObjectList* ); //FIXME: Revise |
136 | 136 | ||
137 | QString dumpStructure() const; //FIXME: Revise | 137 | QString dumpStructure() const; //FIXME: Revise |
138 | private: | 138 | private: |
139 | QString _dumpStructure( QObjectList* ) const; //FIXME: Revise | 139 | QString _dumpStructure( QObjectList* ) const; //FIXME: Revise |
140 | 140 | ||
141 | private: | 141 | private: |
142 | const packetheaderstruct _hdr; // pcap packet header | 142 | const packetheaderstruct _hdr; // pcap packet header |
143 | const unsigned char* _data; // pcap packet data | 143 | const unsigned char* _data; // pcap packet data |
144 | const unsigned char* _end; // end of pcap packet data | 144 | const unsigned char* _end; // end of pcap packet data |
145 | private: | 145 | private: |
146 | class Private; | 146 | class Private; |
147 | Private *d; | 147 | Private *d; |
148 | }; | 148 | }; |
149 | 149 | ||
150 | QTextStream& operator<<( QTextStream& s, const OPacket& p ); //FIXME: Revise | 150 | QTextStream& operator<<( QTextStream& s, const OPacket& p ); //FIXME: Revise |
151 | 151 | ||
152 | /*====================================================================================== | 152 | /*====================================================================================== |
153 | * OEthernetPacket - DLT_EN10MB frame | 153 | * OEthernetPacket - DLT_EN10MB frame |
154 | *======================================================================================*/ | 154 | *======================================================================================*/ |
155 | 155 | ||
156 | class OEthernetPacket : public QObject | 156 | class OEthernetPacket : public QObject |
157 | { | 157 | { |
158 | Q_OBJECT | 158 | Q_OBJECT |
159 | 159 | ||
160 | public: | 160 | public: |
161 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); | 161 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); |
162 | virtual ~OEthernetPacket(); | 162 | virtual ~OEthernetPacket(); |
163 | 163 | ||
164 | OMacAddress sourceAddress() const; | 164 | OMacAddress sourceAddress() const; |
165 | OMacAddress destinationAddress() const; | 165 | OMacAddress destinationAddress() const; |
166 | int type() const; | 166 | int type() const; |
167 | 167 | ||
168 | private: | 168 | private: |
169 | const struct ether_header* _ether; | 169 | const struct ether_header* _ether; |
170 | private: | 170 | private: |
171 | class Private; | 171 | class Private; |
172 | Private *d; | 172 | Private *d; |
173 | }; | 173 | }; |
174 | 174 | ||
175 | /*====================================================================================== | 175 | /*====================================================================================== |
176 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame | 176 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame |
177 | *======================================================================================*/ | 177 | *======================================================================================*/ |
178 | 178 | ||
179 | class OPrismHeaderPacket : public QObject | 179 | class OPrismHeaderPacket : public QObject |
180 | { | 180 | { |
181 | Q_OBJECT | 181 | Q_OBJECT |
182 | 182 | ||
183 | public: | 183 | public: |
184 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); | 184 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); |
185 | virtual ~OPrismHeaderPacket(); | 185 | virtual ~OPrismHeaderPacket(); |
186 | 186 | ||
187 | unsigned int signalStrength() const; | 187 | unsigned int signalStrength() const; |
188 | 188 | ||
189 | private: | 189 | private: |
190 | const struct prism_hdr* _header; | 190 | const struct prism_hdr* _header; |
191 | class Private; | 191 | class Private; |
192 | Private *d; | 192 | Private *d; |
193 | }; | 193 | }; |
194 | 194 | ||
195 | /*====================================================================================== | 195 | /*====================================================================================== |
196 | * OWaveLanPacket - DLT_IEEE802_11 frame | 196 | * OWaveLanPacket - DLT_IEEE802_11 frame |
197 | *======================================================================================*/ | 197 | *======================================================================================*/ |
198 | 198 | ||
199 | class OWaveLanPacket : public QObject | 199 | class OWaveLanPacket : public QObject |
200 | { | 200 | { |
201 | Q_OBJECT | 201 | Q_OBJECT |
202 | 202 | ||
203 | public: | 203 | public: |
204 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); | 204 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); |
205 | virtual ~OWaveLanPacket(); | 205 | virtual ~OWaveLanPacket(); |
206 | 206 | ||
207 | int duration() const; | 207 | int duration() const; |
208 | bool fromDS() const; | 208 | bool fromDS() const; |
209 | bool toDS() const; | 209 | bool toDS() const; |
210 | virtual OMacAddress macAddress1() const; | 210 | virtual OMacAddress macAddress1() const; |
211 | virtual OMacAddress macAddress2() const; | 211 | virtual OMacAddress macAddress2() const; |
212 | virtual OMacAddress macAddress3() const; | 212 | virtual OMacAddress macAddress3() const; |
213 | virtual OMacAddress macAddress4() const; | 213 | virtual OMacAddress macAddress4() const; |
214 | bool usesPowerManagement() const; | 214 | bool usesPowerManagement() const; |
215 | int type() const; | 215 | int type() const; |
216 | int subType() const; | 216 | int subType() const; |
217 | int version() const; | 217 | int version() const; |
218 | bool usesWep() const; | 218 | bool usesWep() const; |
219 | 219 | ||
220 | private: | 220 | private: |
221 | const struct ieee_802_11_header* _wlanhdr; | 221 | const struct ieee_802_11_header* _wlanhdr; |
222 | class Private; | 222 | class Private; |
223 | Private *d; | 223 | Private *d; |
224 | }; | 224 | }; |
225 | 225 | ||
226 | 226 | ||
227 | /*====================================================================================== | 227 | /*====================================================================================== |
228 | * OWaveLanManagementPacket - type: management (T_MGMT) | 228 | * OWaveLanManagementPacket - type: management (T_MGMT) |
229 | *======================================================================================*/ | 229 | *======================================================================================*/ |
230 | 230 | ||
231 | class OWaveLanManagementPacket : public QObject | 231 | class OWaveLanManagementPacket : public QObject |
232 | { | 232 | { |
233 | Q_OBJECT | 233 | Q_OBJECT |
234 | 234 | ||
235 | public: | 235 | public: |
236 | OWaveLanManagementPacket( const unsigned char*, const struct ieee_802_11_mgmt_header*, OWaveLanPacket* parent = 0 ); | 236 | OWaveLanManagementPacket( const unsigned char*, const struct ieee_802_11_mgmt_header*, OWaveLanPacket* parent = 0 ); |
237 | virtual ~OWaveLanManagementPacket(); | 237 | virtual ~OWaveLanManagementPacket(); |
238 | 238 | ||
239 | QString managementType() const; | 239 | QString managementType() const; |
240 | 240 | ||
241 | int beaconInterval() const; | 241 | int beaconInterval() const; |
242 | int capabilities() const; // generic | 242 | int capabilities() const; // generic |
243 | 243 | ||
244 | bool canESS() const; | 244 | bool canESS() const; |
245 | bool canIBSS() const; | 245 | bool canIBSS() const; |
246 | bool canCFP() const; | 246 | bool canCFP() const; |
247 | bool canCFP_REQ() const; | 247 | bool canCFP_REQ() const; |
248 | bool canPrivacy() const; | 248 | bool canPrivacy() const; |
249 | 249 | ||
250 | private: | 250 | private: |
251 | const struct ieee_802_11_mgmt_header* _header; | 251 | const struct ieee_802_11_mgmt_header* _header; |
252 | const struct ieee_802_11_mgmt_body* _body; | 252 | const struct ieee_802_11_mgmt_body* _body; |
253 | class Private; | 253 | class Private; |
254 | Private *d; | 254 | Private *d; |
255 | }; | 255 | }; |
256 | 256 | ||
257 | 257 | ||
258 | /*====================================================================================== | 258 | /*====================================================================================== |
259 | * OWaveLanManagementSSID | 259 | * OWaveLanManagementSSID |
260 | *======================================================================================*/ | 260 | *======================================================================================*/ |
261 | 261 | ||
262 | class OWaveLanManagementSSID : public QObject | 262 | class OWaveLanManagementSSID : public QObject |
263 | { | 263 | { |
264 | Q_OBJECT | 264 | Q_OBJECT |
265 | 265 | ||
266 | public: | 266 | public: |
267 | OWaveLanManagementSSID( const unsigned char*, const struct ssid_t*, QObject* parent = 0 ); | 267 | OWaveLanManagementSSID( const unsigned char*, const struct ssid_t*, QObject* parent = 0 ); |
268 | virtual ~OWaveLanManagementSSID(); | 268 | virtual ~OWaveLanManagementSSID(); |
diff --git a/libopie2/opienet/ostation.cpp b/libopie2/opienet/ostation.cpp index b5ac325..88ad808 100644 --- a/libopie2/opienet/ostation.cpp +++ b/libopie2/opienet/ostation.cpp | |||
@@ -1,72 +1,72 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | =. | 4 | =. |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <opie2/ostation.h> | 31 | #include <opie2/ostation.h> |
32 | #include <opie2/odebug.h> | 32 | #include <opie2/odebug.h> |
33 | 33 | ||
34 | 34 | ||
35 | using namespace Opie::Core; | 35 | using namespace Opie::Core; |
36 | 36 | ||
37 | namespace Opie { | 37 | namespace Opie { |
38 | namespace Net { | 38 | namespace Net { |
39 | /*====================================================================================== | 39 | /*====================================================================================== |
40 | * OStation | 40 | * OStation |
41 | *======================================================================================*/ | 41 | *======================================================================================*/ |
42 | 42 | ||
43 | OStation::OStation() | 43 | OStation::OStation() |
44 | { | 44 | { |
45 | odebug << "OStation::OStation()" << oendl; | 45 | odebug << "OStation::OStation()" << oendl; |
46 | 46 | ||
47 | type = "<unknown>"; | 47 | type = "<unknown>"; |
48 | macAddress = OMacAddress::unknown; | 48 | macAddress = OMacAddress::unknown; |
49 | ssid = "<unknown>"; | 49 | ssid = "<unknown>"; |
50 | channel = 0; | 50 | channel = 0; |
51 | apAddress = OMacAddress::unknown; | 51 | apAddress = OMacAddress::unknown; |
52 | 52 | ||
53 | } | 53 | } |
54 | 54 | ||
55 | 55 | ||
56 | OStation::~OStation() | 56 | OStation::~OStation() |
57 | { | 57 | { |
58 | odebug << "OStation::~OStation()" << oendl; | 58 | odebug << "OStation::~OStation()" << oendl; |
59 | } | 59 | } |
60 | 60 | ||
61 | 61 | ||
62 | void OStation::dump() | 62 | void OStation::dump() |
63 | { | 63 | { |
64 | odebug << "------- OStation::dump() ------------" << oendl; | 64 | odebug << "------- OStation::dump() ------------" << oendl; |
65 | odebug << "type: " << type << "" << oendl; | 65 | odebug << "type: " << type << "" << oendl; |
66 | odebug << "mac: " << macAddress.toString() << "" << oendl; | 66 | odebug << "mac: " << macAddress.toString() << "" << oendl; |
67 | odebug << "ap: " << apAddress.toString() << "" << oendl; | 67 | odebug << "ap: " << apAddress.toString() << "" << oendl; |
68 | odebug << "ip: " << ipAddress.toString() << "" << oendl; | 68 | odebug << "ip: " << ipAddress.toString() << "" << oendl; |
69 | } | 69 | } |
70 | 70 | ||
71 | } | 71 | } |
72 | } | 72 | } |
diff --git a/libopie2/opienet/ostation.h b/libopie2/opienet/ostation.h index 68f1114..bdc653f 100644 --- a/libopie2/opienet/ostation.h +++ b/libopie2/opienet/ostation.h | |||
@@ -1,82 +1,82 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | Copyright (C) 2003 by Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | =. | 4 | =. |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #ifndef OSTATION_H | 31 | #ifndef OSTATION_H |
32 | #define OSTATION_H | 32 | #define OSTATION_H |
33 | 33 | ||
34 | #include <opie2/onetutils.h> | 34 | #include <opie2/onetutils.h> |
35 | 35 | ||
36 | #include <qlist.h> | 36 | #include <qlist.h> |
37 | #include <qstring.h> | 37 | #include <qstring.h> |
38 | #include <qhostaddress.h> | 38 | #include <qhostaddress.h> |
39 | #include <qobject.h> | 39 | #include <qobject.h> |
40 | 40 | ||
41 | #include <sys/types.h> | 41 | #include <sys/types.h> |
42 | 42 | ||
43 | namespace Opie { | 43 | namespace Opie { |
44 | namespace Net { | 44 | namespace Net { |
45 | 45 | ||
46 | class OStation; | 46 | class OStation; |
47 | 47 | ||
48 | 48 | ||
49 | typedef QList<OStation> OStationList; | 49 | typedef QList<OStation> OStationList; |
50 | 50 | ||
51 | /*====================================================================================== | 51 | /*====================================================================================== |
52 | * OStation | 52 | * OStation |
53 | *======================================================================================*/ | 53 | *======================================================================================*/ |
54 | 54 | ||
55 | class OStation | 55 | class OStation |
56 | { | 56 | { |
57 | public: | 57 | public: |
58 | OStation(); | 58 | OStation(); |
59 | ~OStation(); | 59 | ~OStation(); |
60 | 60 | ||
61 | void dump(); | 61 | void dump(); |
62 | 62 | ||
63 | /* Ethernet */ | 63 | /* Ethernet */ |
64 | QString type; | 64 | QString type; |
65 | OMacAddress macAddress; | 65 | OMacAddress macAddress; |
66 | QHostAddress ipAddress; | 66 | QHostAddress ipAddress; |
67 | 67 | ||
68 | /* WaveLan */ | 68 | /* WaveLan */ |
69 | QString ssid; | 69 | QString ssid; |
70 | OMacAddress apAddress; | 70 | OMacAddress apAddress; |
71 | int channel; | 71 | int channel; |
72 | bool encrypted; | 72 | bool encrypted; |
73 | private: | 73 | private: |
74 | class Private; | 74 | class Private; |
75 | Private *d; | 75 | Private *d; |
76 | }; | 76 | }; |
77 | 77 | ||
78 | } | 78 | } |
79 | } | 79 | } |
80 | 80 | ||
81 | #endif // OSTATION_H | 81 | #endif // OSTATION_H |
82 | 82 | ||