author | mickeyl <mickeyl> | 2003-10-06 18:08:05 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-10-06 18:08:05 (UTC) |
commit | b8ac6724a0aaed78a1df712d87110fe39b16955f (patch) (unidiff) | |
tree | f8607b34284882bd4ce99281d0377f83b6b2c086 /noncore | |
parent | 42aefe8bc6a8089b771d6f109fed22a770295cc8 (diff) | |
download | opie-b8ac6724a0aaed78a1df712d87110fe39b16955f.zip opie-b8ac6724a0aaed78a1df712d87110fe39b16955f.tar.gz opie-b8ac6724a0aaed78a1df712d87110fe39b16955f.tar.bz2 |
fix ARP decoding for wired networks. Interestingly, 802.11 encapsulates
these in IP packets, while wired ethernet just tags the type_of_protocol.
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 16 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.h | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 9460f56..60bf231 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -235,3 +235,3 @@ void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAd | |||
235 | 235 | ||
236 | void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest ) | 236 | void Wellenreiter::handleARPData( OPacket* p, OARPPacket*, OMacAddress& source, OMacAddress& dest ) |
237 | { | 237 | { |
@@ -251,2 +251,8 @@ void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, | |||
251 | } | 251 | } |
252 | } | ||
253 | |||
254 | |||
255 | void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest ) | ||
256 | { | ||
257 | //TODO: Implement more IP based protocols | ||
252 | 258 | ||
@@ -351,2 +357,10 @@ void Wellenreiter::receivePacket( OPacket* p ) | |||
351 | 357 | ||
358 | // check for an arp frame since arp frames come in two flavours: | ||
359 | // 802.11 encapsulates ARP data within IP packets while wired ethernet doesn't. | ||
360 | OARPPacket* arp = static_cast<OARPPacket*>( childIfToParse( p, "ARP" ) ); | ||
361 | if ( arp ) | ||
362 | { | ||
363 | handleARPData( p, arp, source, dest ); | ||
364 | } | ||
365 | |||
352 | // check for a ip frame | 366 | // check for a ip frame |
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index ed96375..25a5e8d 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h | |||
@@ -31,2 +31,3 @@ class OWaveLanDataPacket; | |||
31 | class OEthernetPacket; | 31 | class OEthernetPacket; |
32 | class OARPPacket; | ||
32 | class OMacAddress; | 33 | class OMacAddress; |
@@ -75,2 +76,3 @@ class Wellenreiter : public WellenreiterBase { | |||
75 | void handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ); | 76 | void handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ); |
77 | void handleARPData( OPacket* p, OARPPacket* arp, OMacAddress& from, OMacAddress& to ); | ||
76 | void handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& from, OMacAddress& to ); | 78 | void handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& from, OMacAddress& to ); |