-rw-r--r-- | libopie2/opienet/omanufacturerdb.cpp | 13 | ||||
-rwxr-xr-x | libopie2/tools/regen.py | 230 | ||||
-rw-r--r-- | noncore/net/wellenreiter/ChangeLog | 9 |
3 files changed, 221 insertions, 31 deletions
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp index 595633d..f61270b 100644 --- a/libopie2/opienet/omanufacturerdb.cpp +++ b/libopie2/opienet/omanufacturerdb.cpp | |||
@@ -1,118 +1,127 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | (C) 2003 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; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
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 "omanufacturerdb.h" | 31 | #include "omanufacturerdb.h" |
32 | 32 | ||
33 | /* OPIE CORE */ | 33 | /* OPIE CORE */ |
34 | #include <opie2/odebug.h> | 34 | #include <opie2/odebug.h> |
35 | 35 | ||
36 | /* QT */ | 36 | /* QT */ |
37 | #include <qapplication.h> | 37 | #include <qapplication.h> |
38 | #include <qstring.h> | 38 | #include <qstring.h> |
39 | #include <qfile.h> | 39 | #include <qfile.h> |
40 | #include <qtextstream.h> | 40 | #include <qtextstream.h> |
41 | 41 | ||
42 | #define OPIE_IMPROVE_GUI_LATENCY 1 | 42 | #define OPIE_IMPROVE_GUI_LATENCY 1 |
43 | 43 | ||
44 | OManufacturerDB* OManufacturerDB::_instance = 0; | 44 | OManufacturerDB* OManufacturerDB::_instance = 0; |
45 | 45 | ||
46 | OManufacturerDB* OManufacturerDB::instance() | 46 | OManufacturerDB* OManufacturerDB::instance() |
47 | { | 47 | { |
48 | if ( !OManufacturerDB::_instance ) | 48 | if ( !OManufacturerDB::_instance ) |
49 | { | 49 | { |
50 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; | 50 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; |
51 | _instance = new OManufacturerDB(); | 51 | _instance = new OManufacturerDB(); |
52 | } | 52 | } |
53 | return _instance; | 53 | return _instance; |
54 | } | 54 | } |
55 | 55 | ||
56 | 56 | ||
57 | OManufacturerDB::OManufacturerDB() | 57 | OManufacturerDB::OManufacturerDB() |
58 | { | 58 | { |
59 | QString filename( "/etc/manufacturers" ); | 59 | QString filename( "/etc/manufacturers" ); |
60 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 60 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
61 | if ( !QFile::exists( filename ) ) | 61 | if ( !QFile::exists( filename ) ) |
62 | { | 62 | { |
63 | filename = "/opt/QtPalmtop/etc/manufacturers"; | 63 | filename = "/opt/QtPalmtop/etc/manufacturers"; |
64 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 64 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
65 | if ( !QFile::exists( filename ) ) | 65 | if ( !QFile::exists( filename ) ) |
66 | { | 66 | { |
67 | filename = "/usr/share/wellenreiter/manufacturers"; | 67 | filename = "/usr/share/wellenreiter/manufacturers"; |
68 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 68 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | QFile file( filename ); | 72 | QFile file( filename ); |
73 | bool hasFile = file.open( IO_ReadOnly ); | 73 | bool hasFile = file.open( IO_ReadOnly ); |
74 | if (!hasFile) | 74 | if (!hasFile) |
75 | { | 75 | { |
76 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; | 76 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; |
77 | } | 77 | } |
78 | else | 78 | else |
79 | { | 79 | { |
80 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; | 80 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; |
81 | QTextStream s( &file ); | 81 | QTextStream s( &file ); |
82 | QString addr; | 82 | QString addr; |
83 | QString manu; | 83 | QString manu; |
84 | QString extManu; | 84 | QString extManu; |
85 | #ifdef OPIE_IMPROVE_GUI_LATENCY | ||
86 | int counter = 0; | ||
87 | #endif | ||
85 | while (!s.atEnd()) | 88 | while (!s.atEnd()) |
86 | { | 89 | { |
87 | s >> addr; | 90 | s >> addr; |
88 | s >> manu; | 91 | s >> manu; |
89 | s >> extManu; | 92 | s >> extManu; |
90 | 93 | ||
91 | manufacturers.insert( addr, manu ); | 94 | manufacturers.insert( addr, manu ); |
92 | manufacturersExt.insert( addr, extManu ); | 95 | manufacturersExt.insert( addr, extManu ); |
93 | odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; | 96 | // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; |
94 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 97 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
95 | if ( qApp ) qApp->processEvents(); | 98 | counter++; |
99 | if ( counter == 50 ) | ||
100 | { | ||
101 | qApp->processEvents(); | ||
102 | counter = 0; | ||
103 | } | ||
96 | #endif | 104 | #endif |
97 | } | 105 | } |
106 | odebug << "OManufacturerDB: manufacturer list completed." << oendl; | ||
98 | } | 107 | } |
99 | } | 108 | } |
100 | 109 | ||
101 | 110 | ||
102 | OManufacturerDB::~OManufacturerDB() | 111 | OManufacturerDB::~OManufacturerDB() |
103 | { | 112 | { |
104 | } | 113 | } |
105 | 114 | ||
106 | 115 | ||
107 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const | 116 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const |
108 | { | 117 | { |
109 | return manufacturers[macaddr.upper().left(8)]; | 118 | return manufacturers[macaddr.upper().left(8)]; |
110 | } | 119 | } |
111 | 120 | ||
112 | 121 | ||
113 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const | 122 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const |
114 | { | 123 | { |
115 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); | 124 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); |
116 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; | 125 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; |
117 | } | 126 | } |
118 | 127 | ||
diff --git a/libopie2/tools/regen.py b/libopie2/tools/regen.py index 3779896..89385e1 100755 --- a/libopie2/tools/regen.py +++ b/libopie2/tools/regen.py | |||
@@ -1,96 +1,272 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | 2 | ||
3 | # | 3 | """Regenerate C++ mapping classes""" |
4 | # regenerate ioctl_table.h | ||
5 | # | ||
6 | 4 | ||
7 | import sys | 5 | #---------------------------------------------------------------------------# |
8 | import os | 6 | # # |
9 | result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' ).readlines() | 7 | #---------------------------------------------------------------------------# |
8 | |||
9 | def regenDebugMapper( basename ): | ||
10 | """ | ||
11 | Debug Mapper - maps ioctl numbers to names, e.g. 0x4x5a -> SIOCGIWNAME | ||
12 | """ | ||
13 | |||
14 | result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' ).readlines() | ||
10 | 15 | ||
11 | try: | 16 | try: |
12 | tablehfile = file( sys.argv[1]+".h", "w" ) | 17 | tablehfile = file( basename+".h", "w" ) |
13 | except: | 18 | except: |
14 | tablehfile = sys.stdout | 19 | tablehfile = sys.stdout |
15 | 20 | ||
16 | try: | 21 | try: |
17 | tablecfile = file( sys.argv[1]+".cpp", "w" ) | 22 | tablecfile = file( basename+".cpp", "w" ) |
18 | except: | 23 | except: |
19 | tablecfile = sys.stdout | 24 | tablecfile = sys.stdout |
20 | 25 | ||
21 | print >>tablehfile,""" | 26 | print >>tablehfile,""" |
22 | /* | 27 | /* |
23 | * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de> | 28 | * debug value mapper - generated by %s - (C) Michael 'Mickey' Lauer <mickey@vanille.de> |
24 | */ | 29 | */ |
25 | 30 | ||
26 | #ifndef DEBUGMAPPER_H | 31 | #ifndef DEBUGMAPPER_H |
27 | #define DEBUGMAPPER_H | 32 | #define DEBUGMAPPER_H |
28 | 33 | ||
29 | #include <qstring.h> | 34 | #include <qstring.h> |
30 | #include <qintdict.h> | 35 | #include <qintdict.h> |
31 | 36 | ||
32 | typedef QIntDict<QString> IntStringMap; | 37 | typedef QIntDict<QString> IntStringMap; |
33 | 38 | ||
34 | class DebugMapper | 39 | class DebugMapper |
35 | { | 40 | { |
36 | public: | 41 | public: |
37 | DebugMapper(); | 42 | DebugMapper(); |
38 | ~DebugMapper(); | 43 | ~DebugMapper(); |
39 | 44 | ||
40 | const QString& map( int value ) const; | 45 | const QString& map( int value ) const; |
41 | private: | 46 | private: |
42 | IntStringMap _map; | 47 | IntStringMap _map; |
43 | }; | 48 | }; |
44 | 49 | ||
45 | #endif | 50 | #endif |
46 | """ | 51 | """ % sys.argv[0] |
47 | 52 | ||
48 | print >>tablecfile,""" | 53 | print >>tablecfile,""" |
49 | /* | 54 | /* |
50 | * debug value mapper - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de> | 55 | * debug value mapper - generated by %s - (C) Michael 'Mickey' Lauer <mickey@vanille.de> |
51 | */ | 56 | */ |
52 | 57 | ||
53 | #include <opie2/odebug.h> | 58 | #include <opie2/odebug.h> |
54 | 59 | ||
55 | #include "%s" | 60 | #include "%s" |
56 | 61 | ||
57 | DebugMapper::DebugMapper() | 62 | DebugMapper::DebugMapper() |
58 | { | 63 | { |
59 | odebug << "DebugMapper::DebugMapper()" << oendl; | 64 | odebug << "DebugMapper::DebugMapper()" << oendl; |
60 | 65 | ||
61 | """ % (tablehfile.name) | 66 | """ % ( sys.argv[0], tablehfile.name ) |
62 | 67 | ||
63 | for line in result: | 68 | for line in result: |
64 | l = line.split() | 69 | l = line.split() |
65 | if not l[0].startswith( "#define" ) or not l[2].startswith( "0x" ): | 70 | if not l[0].startswith( "#define" ) or not l[2].startswith( "0x" ): |
66 | print >>sys.stderr, "can't parse line: %s" % l | 71 | print >>sys.stderr, "can't parse line: %s" % l |
67 | continue | 72 | continue |
68 | print >>tablecfile, " _map.insert( %s, new QString(\"%s\") );" % ( l[2], l[1] ) | 73 | print >>tablecfile, " _map.insert( %s, new QString(\"%s\") );" % ( l[2], l[1] ) |
69 | 74 | ||
70 | 75 | ||
71 | print >>tablecfile,""" | 76 | print >>tablecfile,""" |
72 | }; | 77 | }; |
73 | 78 | ||
74 | 79 | ||
75 | DebugMapper::~DebugMapper() | 80 | DebugMapper::~DebugMapper() |
76 | { | 81 | { |
77 | odebug << "DebugMapper::~DebugMapper()" << oendl; | 82 | odebug << "DebugMapper::~DebugMapper()" << oendl; |
78 | } | 83 | } |
79 | 84 | ||
80 | 85 | ||
81 | const QString& DebugMapper::map( int value ) const | 86 | const QString& DebugMapper::map( int value ) const |
82 | { | 87 | { |
83 | QString* result = _map[ value ]; | 88 | QString* result = _map[ value ]; |
84 | 89 | ||
85 | if ( !result ) | 90 | if ( !result ) |
86 | { | 91 | { |
87 | owarn << "DebugMapper::map() - value " << value << " is not found." << oendl; | 92 | owarn << "DebugMapper::map() - value " << value << " is not found." << oendl; |
88 | return QString::null; | 93 | return QString::null; |
89 | } | 94 | } |
90 | else | 95 | else |
91 | { | 96 | { |
92 | return *result; | 97 | return *result; |
93 | } | 98 | } |
94 | } | 99 | } |
95 | 100 | ||
96 | """ | 101 | """ |
102 | |||
103 | #---------------------------------------------------------------------------# | ||
104 | # # | ||
105 | #---------------------------------------------------------------------------# | ||
106 | |||
107 | def regenManufacturerDB( basename ): | ||
108 | |||
109 | try: | ||
110 | h = file( basename+".h", "w" ) | ||
111 | except: | ||
112 | h = sys.stdout | ||
113 | |||
114 | try: | ||
115 | cpp = file( basename+".cpp", "w" ) | ||
116 | except: | ||
117 | cpp = sys.stdout | ||
118 | |||
119 | print >>h,""" | ||
120 | #ifndef OMANUFACTURERDB_H | ||
121 | #define OMANUFACTURERDB_H | ||
122 | |||
123 | #include <qmap.h> | ||
124 | |||
125 | /** | ||
126 | * @brief A Ethernet card vendor database. | ||
127 | * | ||
128 | * This class encapsulates the lookup of Ethernet vendor given a | ||
129 | * certain Mac Address. Only the first three bytes define the vendor. | ||
130 | */ | ||
131 | class OManufacturerDB | ||
132 | { | ||
133 | public: | ||
134 | /** | ||
135 | * @returns the one-and-only @ref OManufacturerDB instance. | ||
136 | */ | ||
137 | static OManufacturerDB* instance(); | ||
138 | /** | ||
139 | * @returns the short manufacturer string given a @a macaddr. | ||
140 | */ | ||
141 | const QString& lookup( const QString& macaddr ) const; | ||
142 | /** | ||
143 | * @returns the enhanced manufacturer string given a @a macaddr. | ||
144 | */ | ||
145 | const QString& lookupExt( const QString& macaddr ) const; | ||
146 | |||
147 | protected: | ||
148 | OManufacturerDB(); | ||
149 | virtual ~OManufacturerDB(); | ||
150 | |||
151 | private: | ||
152 | QMap<QString, QString> manufacturers; | ||
153 | QMap<QString, QString> manufacturersExt; | ||
154 | static OManufacturerDB* _instance; | ||
155 | }; | ||
156 | |||
157 | #endif | ||
158 | """ | ||
159 | |||
160 | print >>cpp,""" | ||
161 | #include "%s.h" | ||
162 | |||
163 | /* OPIE CORE */ | ||
164 | #include <opie2/odebug.h> | ||
165 | |||
166 | /* QT */ | ||
167 | #include <qapplication.h> | ||
168 | #include <qstring.h> | ||
169 | |||
170 | #define OPIE_IMPROVE_GUI_LATENCY 1 | ||
171 | |||
172 | OManufacturerDB* OManufacturerDB::_instance = 0; | ||
173 | |||
174 | OManufacturerDB* OManufacturerDB::instance() | ||
175 | { | ||
176 | if ( !OManufacturerDB::_instance ) | ||
177 | { | ||
178 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; | ||
179 | _instance = new OManufacturerDB(); | ||
180 | } | ||
181 | return _instance; | ||
182 | } | ||
183 | |||
184 | |||
185 | OManufacturerDB::OManufacturerDB() | ||
186 | { | ||
187 | """ % basename | ||
188 | |||
189 | count = 0 | ||
190 | for line in sys.stdin: | ||
191 | if line[0] == "#": # skip comments | ||
192 | continue | ||
193 | #print line.strip() | ||
194 | entries = line.strip().split() | ||
195 | #print "number of entries =", len( entries ) | ||
196 | #print entries | ||
197 | if len( entries ) < 2: | ||
198 | continue | ||
199 | elif len( entries ) == 2: | ||
200 | count += 1 | ||
201 | print "2-line detected." | ||
202 | print >>cpp, ' manufacturers.insert( "%s", "%s" );' % ( entries[0], entries[1] ) | ||
203 | print >>cpp, ' manufacturersExt.insert( "%s", "%s" );' % ( entries[0], entries[1] ) | ||
204 | elif len( entries ) > 2: | ||
205 | count += 1 | ||
206 | print "3-line detected." | ||
207 | print >>cpp, ' manufacturers.insert( "%s", "%s" );' % ( entries[0], entries[1] ) | ||
208 | print >>cpp, ' manufacturersExt.insert( "%s", "%s" );' % ( entries[0], "_".join( entries[3:] ) ) | ||
209 | else: | ||
210 | assert( false ) | ||
211 | if not (count % 1000): | ||
212 | print >>cpp,""" | ||
213 | #ifdef OPIE_IMPROVE_GUI_LATENCY | ||
214 | if (qApp) qApp->processEvents(); | ||
215 | #endif | ||
216 | """ | ||
217 | print "successfully parsed", count, "manufacturer lines" | ||
218 | print >>cpp,""" | ||
219 | } | ||
220 | |||
221 | |||
222 | OManufacturerDB::~OManufacturerDB() | ||
223 | { | ||
224 | } | ||
225 | |||
226 | |||
227 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const | ||
228 | { | ||
229 | return manufacturers[macaddr.upper().left(8)]; | ||
230 | } | ||
231 | |||
232 | |||
233 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const | ||
234 | { | ||
235 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); | ||
236 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; | ||
237 | } | ||
238 | """ | ||
239 | |||
240 | #---------------------------------------------------------------------------# | ||
241 | # # | ||
242 | #---------------------------------------------------------------------------# | ||
243 | |||
244 | #---------------------------------------------------------------------------# | ||
245 | # # | ||
246 | #---------------------------------------------------------------------------# | ||
247 | |||
248 | #---------------------------------------------------------------------------# | ||
249 | # # | ||
250 | #---------------------------------------------------------------------------# | ||
251 | |||
252 | import sys | ||
253 | import os | ||
254 | import copy | ||
255 | |||
256 | if __name__ == "__main__": | ||
257 | if len( sys.argv ) != 3: | ||
258 | print """ | ||
259 | Usage: %s <table> <basename> | ||
260 | |||
261 | Available tables: %s | ||
262 | """ % ( sys.argv[0], [ str(k)[5:] for k in copy.copy( locals() ) if k.startswith( "regen" ) ] ) | ||
263 | sys.exit( -1 ) | ||
264 | |||
265 | try: | ||
266 | func = locals()["regen%s" % sys.argv[1]] | ||
267 | except KeyError: | ||
268 | print "Table '%s' unknown." % sys.argv[1] | ||
269 | sys.exit( -1 ) | ||
270 | else: | ||
271 | func( sys.argv[2] ) | ||
272 | sys.exit( 0 ) \ No newline at end of file | ||
diff --git a/noncore/net/wellenreiter/ChangeLog b/noncore/net/wellenreiter/ChangeLog index 1ce25d5..55e13fc 100644 --- a/noncore/net/wellenreiter/ChangeLog +++ b/noncore/net/wellenreiter/ChangeLog | |||
@@ -1,67 +1,72 @@ | |||
1 | 2004-??-?? Michael Lauer <mickey@Vanille.de> | ||
2 | |||
3 | * Improved the speed reading the manufacturer list | ||
4 | * GPS coordinates are now presented in the DMS (as opposed to decimal) format | ||
5 | |||
1 | 2003-12-18 Michael Lauer <mickey@Vanille.de> | 6 | 2003-12-18 Michael Lauer <mickey@Vanille.de> |
2 | 7 | ||
3 | * Released as Version 1.0.2 (Development Snapshot) | 8 | * Released as Version 1.0.2 (Development Snapshot) |
4 | * Add automatic uploading of capture files to "The Capture Dump" site at | 9 | * Added automatic uploading of capture files to "The Capture Dump" site at |
5 | http://www.Vanille.de/projects/capturedump.spy | 10 | http://www.Vanille.de/projects/capturedump.spy |
6 | * Initial reading of the manufacturer database happens now in background | 11 | * Initial reading of the manufacturer database happens now in background |
7 | * Remove deprecated setMonitorMode() API ==> Use setMode( "monitor" ) now. | 12 | * Removed deprecated setMonitorMode() API ==> Use setMode( "monitor" ) now. |
8 | The monitor mode now tries to use the standard IW_MODE_MONITOR first. If that | 13 | The monitor mode now tries to use the standard IW_MODE_MONITOR first. If that |
9 | doesn't work, it falls back to using the proprietary iwpriv commands | 14 | doesn't work, it falls back to using the proprietary iwpriv commands |
10 | 15 | ||
11 | 2003-11-30 Michael Lauer <mickey@Vanille.de> | 16 | 2003-11-30 Michael Lauer <mickey@Vanille.de> |
12 | 17 | ||
13 | * Released as Version 1.0.1 (Development Snapshot) | 18 | * Released as Version 1.0.1 (Development Snapshot) |
14 | * Fixed ARP decoding for wired networks. | 19 | * Fixed ARP decoding for wired networks. |
15 | Interestingly, 802.11 encapsulates these in IP packets, while wired ethernet just tags the type_of_protocol. | 20 | Interestingly, 802.11 encapsulates these in IP packets, while wired ethernet just tags the type_of_protocol. |
16 | * Added reading GPS data from a gps daemon. | 21 | * Added reading GPS data from a gps daemon. |
17 | * Started preparations for utilizing Wellenreiter II in wired networks. | 22 | * Started preparations for utilizing Wellenreiter II in wired networks. |
18 | * Implemented persistant configuration interface and retriggerable auto detection. | 23 | * Implemented persistant configuration interface and retriggerable auto detection. |
19 | * Added QCOP interface for talking to opie-networksettings. | 24 | * Added QCOP interface for talking to opie-networksettings. |
20 | * Added parsing of DHCP packets and detecting DHCP servers. | 25 | * Added parsing of DHCP packets and detecting DHCP servers. |
21 | * Overhauled the configuration window and started with the customizable event system. | 26 | * Overhauled the configuration window and started with the customizable event system. |
22 | * Added disabling the screensaver. | 27 | * Added disabling the screensaver. |
23 | * Added automatic opening and scrolling to the network tree if a new station appears. | 28 | * Added automatic opening and scrolling to the network tree if a new station appears. |
24 | 29 | ||
25 | 2003-05-10 Michael Lauer <mickey@Vanille.de> | 30 | 2003-05-10 Michael Lauer <mickey@Vanille.de> |
26 | 31 | ||
27 | * Released as Version 1.0 (Stable) | 32 | * Released as Version 1.0 (Stable) |
28 | * Added restarting the dhcp client if having killed it before. | 33 | * Added restarting the dhcp client if having killed it before. |
29 | * Decouple dump files from live capture to shift control over 'what' is dumped to applications. | 34 | * Decouple dump files from live capture to shift control over 'what' is dumped to applications. |
30 | 35 | ||
31 | 2003-05-05 Michael Lauer <mickey@Vanille.de> | 36 | 2003-05-05 Michael Lauer <mickey@Vanille.de> |
32 | 37 | ||
33 | * Released as Version 1.0-RC1 (Release Candidate) | 38 | * Released as Version 1.0-RC1 (Release Candidate) |
34 | * Fixed rare segfaults while sniffing and operating the GUI simultaenously. | 39 | * Fixed rare segfaults while sniffing and operating the GUI simultaenously. |
35 | * Parse more data packets and detect more participating stations. | 40 | * Parse more data packets and detect more participating stations. |
36 | * Added live graph window showing the signal strength on all channels. | 41 | * Added live graph window showing the signal strength on all channels. |
37 | * Added parsing ARP packets and identifying IP addresses of participating stations. | 42 | * Added parsing ARP packets and identifying IP addresses of participating stations. |
38 | * Added parsing with optionally enabled PRISM headers (signal strength). | 43 | * Added parsing with optionally enabled PRISM headers (signal strength). |
39 | 44 | ||
40 | 2003-04-12 Michael Lauer <mickey@Vanille.de> | 45 | 2003-04-12 Michael Lauer <mickey@Vanille.de> |
41 | 46 | ||
42 | * Released as Version 1.0 (Beta) | 47 | * Released as Version 1.0 (Beta) |
43 | * GUI enhancements in the Menubar and the Toolbar. | 48 | * GUI enhancements in the Menubar and the Toolbar. |
44 | * Improved keyboard handling. | 49 | * Improved keyboard handling. |
45 | * Added sanity checks for running Wellenreiter II as non-root or with dhcp clients in the background. | 50 | * Added sanity checks for running Wellenreiter II as non-root or with dhcp clients in the background. |
46 | * Add writing and replaying of libpcap compatible capture files. | 51 | * Add writing and replaying of libpcap compatible capture files. |
47 | 52 | ||
48 | 2003-04-08 Michael Lauer <mickey@Vanille.de> | 53 | 2003-04-08 Michael Lauer <mickey@Vanille.de> |
49 | 54 | ||
50 | * Released as Version 0.2 (Alpha) | 55 | * Released as Version 0.2 (Alpha) |
51 | * Closed memory leak in packet capturer. | 56 | * Closed memory leak in packet capturer. |
52 | * Fixed client stations appearing under essid as access points. | 57 | * Fixed client stations appearing under essid as access points. |
53 | * Fixed false WEP reporting in some cases. | 58 | * Fixed false WEP reporting in some cases. |
54 | * Started with inspecting data packages. | 59 | * Started with inspecting data packages. |
55 | * Add detecting associated client stations in infrastructural networks (if they transmit data). | 60 | * Add detecting associated client stations in infrastructural networks (if they transmit data). |
56 | * Worked around buggy hostap drivers writing past fixed-length-structures on arm. | 61 | * Worked around buggy hostap drivers writing past fixed-length-structures on arm. |
57 | * Added dynamic checking of available private ioctls. | 62 | * Added dynamic checking of available private ioctls. |
58 | * Added a saveable hex window for packet dissection. | 63 | * Added a saveable hex window for packet dissection. |
59 | 64 | ||
60 | 2003-03-30 Michael Lauer <mickey@Vanille.de> | 65 | 2003-03-30 Michael Lauer <mickey@Vanille.de> |
61 | 66 | ||
62 | * Released as Version 0.1 (Alpha) | 67 | * Released as Version 0.1 (Alpha) |
63 | 68 | ||
64 | 2003-03-25 Michael Lauer <mickey@Vanille.de> | 69 | 2003-03-25 Michael Lauer <mickey@Vanille.de> |
65 | 70 | ||
66 | * Rewrote Wellenreiter II from scratch - including the sniffing engine. | 71 | * Rewrote Wellenreiter II from scratch - including the sniffing engine. |
67 | * Beacon inspection works and finds ad-hoc networks and managed networks. | 72 | * Beacon inspection works and finds ad-hoc networks and managed networks. |