-rw-r--r-- | libopie2/opienet/opcap.cpp | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index 675818e..e2ab6d7 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp | |||
@@ -160,3 +160,2 @@ OEthernetPacket::OEthernetPacket( const unsigned char* end, const struct ether_h | |||
160 | :QObject( parent, "Ethernet" ), _ether( data ) | 160 | :QObject( parent, "Ethernet" ), _ether( data ) |
161 | |||
162 | { | 161 | { |
@@ -211,3 +210,2 @@ OIPPacket::OIPPacket( const unsigned char* end, const struct iphdr* data, QObjec | |||
211 | :QObject( parent, "IP" ), _iphdr( data ) | 210 | :QObject( parent, "IP" ), _iphdr( data ) |
212 | |||
213 | { | 211 | { |
@@ -289,2 +287,62 @@ int OIPPacket::checksum() const | |||
289 | /*====================================================================================== | 287 | /*====================================================================================== |
288 | * OARPPacket | ||
289 | *======================================================================================*/ | ||
290 | |||
291 | |||
292 | OARPPacket::OARPPacket( const unsigned char* end, const struct myarphdr* data, QObject* parent ) | ||
293 | :QObject( parent, "ARP" ), _arphdr( data ) | ||
294 | { | ||
295 | qDebug( "OARPPacket::OARPPacket(): decoding ARP header..." ); | ||
296 | qDebug( "ARP type seems to be %02d - '%s'", EXTRACT_16BITS( &_arphdr->ar_op ), (const char*) type() ); | ||
297 | qDebug( "Sender: MAC %s = IP %s", (const char*) senderMacAddress().toString(), (const char*) senderIPV4Address().toString() ); | ||
298 | qDebug( "Target: MAC %s = IP %s", (const char*) targetMacAddress().toString(), (const char*) targetIPV4Address().toString() ); | ||
299 | } | ||
300 | |||
301 | |||
302 | OARPPacket::~OARPPacket() | ||
303 | { | ||
304 | } | ||
305 | |||
306 | |||
307 | QString OARPPacket::type() const | ||
308 | { | ||
309 | switch ( EXTRACT_16BITS( &_arphdr->ar_op ) ) | ||
310 | { | ||
311 | case 1: return "REQUEST"; | ||
312 | case 2: return "REPLY"; | ||
313 | case 3: return "RREQUEST"; | ||
314 | case 4: return "RREPLY"; | ||
315 | case 8: return "InREQUEST"; | ||
316 | case 9: return "InREPLY"; | ||
317 | case 10: return "NAK"; | ||
318 | default: qWarning( "OARPPacket::type(): invalid ARP type!" ); return "<unknown>"; | ||
319 | } | ||
320 | } | ||
321 | |||
322 | |||
323 | QHostAddress OARPPacket::senderIPV4Address() const | ||
324 | { | ||
325 | return EXTRACT_32BITS( &_arphdr->ar_sip ); | ||
326 | } | ||
327 | |||
328 | |||
329 | QHostAddress OARPPacket::targetIPV4Address() const | ||
330 | { | ||
331 | return EXTRACT_32BITS( &_arphdr->ar_tip ); | ||
332 | } | ||
333 | |||
334 | |||
335 | OMacAddress OARPPacket::senderMacAddress() const | ||
336 | { | ||
337 | return OMacAddress( _arphdr->ar_sha ); | ||
338 | } | ||
339 | |||
340 | |||
341 | OMacAddress OARPPacket::targetMacAddress() const | ||
342 | { | ||
343 | return OMacAddress( _arphdr->ar_tha ); | ||
344 | } | ||
345 | |||
346 | |||
347 | /*====================================================================================== | ||
290 | * OUDPPacket | 348 | * OUDPPacket |
@@ -732,3 +790,4 @@ OLLCPacket::OLLCPacket( const unsigned char* end, const struct ieee_802_11_802_2 | |||
732 | case ETH_P_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; | 790 | case ETH_P_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; |
733 | default: qDebug( "OLLCPacket::OLLCPacket(): Unknown Encapsulation Type" ); | 791 | case ETH_P_ARP: new OARPPacket( end, (const struct myarphdr*) (data+1), this ); break; |
792 | default: qWarning( "OLLCPacket::OLLCPacket(): Unknown Encapsulation (type=%04X)", EXTRACT_16BITS( &_header->type ) ); | ||
734 | } | 793 | } |