Added headers with license text
[sniffer.git] / sniffer.h
blobedc9a237cfb76827fde077dca584c545bba53a47
1 // Copyright (c) 2012, Miriam Ruiz <miriam@debian.org>. All rights reserved.
2 //
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions are met:
5 //
6 // 1. Redistributions of source code must retain the above copyright notice,
7 // this list of conditions and the following disclaimer.
8 //
9 // 2. Redistributions in binary form must reproduce the above copyright
10 // notice, this list of conditions and the following disclaimer in the
11 // documentation and/or other materials provided with the distribution.
12 //
13 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS", AND ANY EXPRESS
14 // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
16 // NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 #ifndef SNIFFER_H_35C874BC_4DD1_11E2_AD2F_1BC708A5F99E_
25 #define SNIFFER_H_35C874BC_4DD1_11E2_AD2F_1BC708A5F99E_
27 struct pcap_pkthdr;
29 #include "ip_port_connection.h"
30 #include <map>
31 #include <iostream>
33 namespace filter {
35 class Sniffer {
37 public:
38 Sniffer() {
41 virtual ~Sniffer() {
44 void loop(const char* devname);
46 void printConnections(std::ostream& out);
48 protected:
49 virtual void newPacket(const unsigned char * buffer, int size);
51 typedef IpPortConnection<in_addr_t,u_int16_t> Connection;
53 class Status {
56 typedef std::map<Connection,Status> ConnectionStatusMap;
57 ConnectionStatusMap connections;
58 private:
59 static void process_packet(unsigned char* arg, const struct pcap_pkthdr * header, const unsigned char * buffer);
64 #endif // SNIFFER_H_35C874BC_4DD1_11E2_AD2F_1BC708A5F99E_