summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/opcap.cpp19
-rw-r--r--libopie2/opienet/opcap.h20
2 files changed, 37 insertions, 2 deletions
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp
index 523be3e..bef9182 100644
--- a/libopie2/opienet/opcap.cpp
+++ b/libopie2/opienet/opcap.cpp
@@ -1034,24 +1034,43 @@ bool OPacketCapturer::open( const QFile& file )
1034} 1034}
1035 1035
1036 1036
1037bool OPacketCapturer::isOpen() const 1037bool OPacketCapturer::isOpen() const
1038{ 1038{
1039 return _open; 1039 return _open;
1040} 1040}
1041 1041
1042 1042
1043void OPacketCapturer::readyToReceive() 1043void OPacketCapturer::readyToReceive()
1044{ 1044{
1045 qDebug( "OPacketCapturer::readyToReceive(): about to emit 'receivePacket(p)'" ); 1045 qDebug( "OPacketCapturer::readyToReceive(): about to emit 'receivePacket(p)'" );
1046 OPacket* p = next(); 1046 OPacket* p = next();
1047 emit receivedPacket( p ); 1047 emit receivedPacket( p );
1048 // emit is synchronous - packet has been dealt with, now it's safe to delete 1048 // emit is synchronous - packet has been dealt with, now it's safe to delete
1049 delete p; 1049 delete p;
1050} 1050}
1051 1051
1052 1052
1053const QMap<QString,int>& OPacketCapturer::statistics() const 1053const QMap<QString,int>& OPacketCapturer::statistics() const
1054{ 1054{
1055 return _stats; 1055 return _stats;
1056} 1056}
1057 1057
1058
1059int OPacketCapturer::snapShot() const
1060{
1061 return pcap_snapshot( _pch );
1062}
1063
1064
1065bool OPacketCapturer::swapped() const
1066{
1067 return pcap_is_swapped( _pch );
1068}
1069
1070
1071QString OPacketCapturer::version() const
1072{
1073 return QString().sprintf( "%s.%s", pcap_major_version( _pch ), pcap_minor_version( _pch ) );
1074}
1075
1076
diff --git a/libopie2/opienet/opcap.h b/libopie2/opienet/opcap.h
index 5a50d9b..ad5b07c 100644
--- a/libopie2/opienet/opcap.h
+++ b/libopie2/opienet/opcap.h
@@ -521,70 +521,86 @@ class OPacketCapturer : public QObject
521 OPacketCapturer( QObject* parent = 0, const char* name = 0 ); 521 OPacketCapturer( QObject* parent = 0, const char* name = 0 );
522 /** 522 /**
523 * Destructor. 523 * Destructor.
524 */ 524 */
525 ~OPacketCapturer(); 525 ~OPacketCapturer();
526 /** 526 /**
527 * Setting the packet capturer to use blocking IO calls can be useful when 527 * Setting the packet capturer to use blocking IO calls can be useful when
528 * not using the socket notifier, e.g. without an application object. 528 * not using the socket notifier, e.g. without an application object.
529 */ 529 */
530 void setBlocking( bool ); 530 void setBlocking( bool );
531 /** 531 /**
532 * @returns true if the packet capturer uses blocking IO calls. 532 * @returns true if the packet capturer uses blocking IO calls.
533 */ 533 */
534 bool blocking() const; 534 bool blocking() const;
535 /** 535 /**
536 * Closes the packet capturer. This is automatically done in the destructor. 536 * Closes the packet capturer. This is automatically done in the destructor.
537 */ 537 */
538 void close(); 538 void close();
539 /** 539 /**
540 * @returns the data link type. 540 * @returns the data link type.
541 * @see <pcap.h> for possible values. 541 * @see <pcap.h> for possible values.
542 */ 542 */
543 int dataLink() const; 543 int dataLink() const;
544 /** 544 /**
545 * @returns the filedescriptor of the packet capturer. This is only useful, if 545 * @returns the file descriptor of the packet capturer. This is only useful, if
546 * not using the socket notifier, e.g. without an application object. 546 * not using the socket notifier, e.g. without an application object.
547 */ 547 */
548 int fileno() const; 548 int fileno() const;
549 /** 549 /**
550 * @returns the next @ref OPacket from the packet capturer. 550 * @returns the next @ref OPacket from the packet capturer.
551 * @note If blocking mode is true then this call might block. 551 * @note If blocking mode is true then this call might block.
552 */ 552 */
553 OPacket* next(); 553 OPacket* next();
554 /** 554 /**
555 * Open the packet capturer to capture packets in live-mode from @a interface. 555 * Open the packet capturer to capture packets in live-mode from @a interface.
556 * If a @a filename is given, all captured packets are output to a tcpdump-compatible capture file. 556 * If a @a filename is given, all captured packets are output to a tcpdump-compatible capture file.
557 */ 557 */
558 bool open( const QString& interface, const QString& filename = QString::null ); 558 bool open( const QString& interface, const QString& filename = QString::null );
559 /** 559 /**
560 * Open the packet capturer to capture packets in offline-mode from @a file. 560 * Open the packet capturer to capture packets in offline-mode from @a file.
561 */ 561 */
562 bool open( const QFile& file ); 562 bool open( const QFile& file );
563 /** 563 /**
564 * @returns true if the packet capturer is open 564 * @returns true if the packet capturer is open
565 */ 565 */
566 bool isOpen() const; 566 bool isOpen() const;
567 567 /**
568 * @returns the snapshot length of this packet capturer
569 */
570 int snapShot() const;
571 /**
572 * @returns true if the input capture file has a different byte-order
573 * than the byte-order of the running system.
574 */
575 bool swapped() const;
576 /**
577 * @returns the libpcap version string used to write the input capture file.
578 */
579 QString version() const;
580 /**
581 * @returns the packet statistic database.
582 * @see QMap
583 */
568 const QMap<QString,int>& statistics() const; 584 const QMap<QString,int>& statistics() const;
569 585
570 signals: 586 signals:
571 /** 587 /**
572 * This signal is emitted, when a packet has been received. 588 * This signal is emitted, when a packet has been received.
573 */ 589 */
574 void receivedPacket( OPacket* ); 590 void receivedPacket( OPacket* );
575 591
576 protected slots: 592 protected slots:
577 void readyToReceive(); 593 void readyToReceive();
578 594
579 protected: 595 protected:
580 QString _name; // devicename 596 QString _name; // devicename
581 bool _open; // check this before doing pcap calls 597 bool _open; // check this before doing pcap calls
582 pcap_t* _pch; // pcap library handle 598 pcap_t* _pch; // pcap library handle
583 pcap_dumper_t* _pcd; // pcap dumper handle 599 pcap_dumper_t* _pcd; // pcap dumper handle
584 QSocketNotifier* _sn; // socket notifier for main loop 600 QSocketNotifier* _sn; // socket notifier for main loop
585 mutable char _errbuf[PCAP_ERRBUF_SIZE]; // holds error strings from libpcap 601 mutable char _errbuf[PCAP_ERRBUF_SIZE]; // holds error strings from libpcap
586 QMap<QString, int> _stats; // statistics; 602 QMap<QString, int> _stats; // statistics;
587}; 603};
588 604
589#endif // OPCAP_H 605#endif // OPCAP_H
590 606