summaryrefslogtreecommitdiff
path: root/libopie2/opienet/opcap.cpp
Unidiff
Diffstat (limited to 'libopie2/opienet/opcap.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opienet/opcap.cpp65
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
292OARPPacket::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
302OARPPacket::~OARPPacket()
303{
304}
305
306
307QString 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
323QHostAddress OARPPacket::senderIPV4Address() const
324{
325 return EXTRACT_32BITS( &_arphdr->ar_sip );
326}
327
328
329QHostAddress OARPPacket::targetIPV4Address() const
330{
331 return EXTRACT_32BITS( &_arphdr->ar_tip );
332}
333
334
335OMacAddress OARPPacket::senderMacAddress() const
336{
337 return OMacAddress( _arphdr->ar_sha );
338}
339
340
341OMacAddress 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 }