|
tracedump
single application IP packet sniffer
|
#include <pthread.h>#include <sys/socket.h>#include <net/ethernet.h>#include <linux/filter.h>#include <linux/if_packet.h>#include <sys/time.h>#include <sys/ioctl.h>#include "tracedump.h"Go to the source code of this file.
Defines | |
| #define | __ACCEPT ((uint8_t) -1) |
| #define | __DROP ((uint8_t) -2) |
| #define | __RET1 ((uint8_t) -3) |
| #define | __RET2 ((uint8_t) -4) |
| #define | SUBST_JMP(from, to) |
Functions | |
| static void * | sniffer_thread (void *arg) |
| static int | gencode_check_ports (thash *ports, bool outbound, struct sock_filter *filter, int loc_drop, int loc_accept) |
| static struct sock_fprog * | gencode_alloc (struct tracedump *td) |
| void | pcap_init (struct tracedump *td) |
| Initialize PCAP and set the "null filter". | |
| void | pcap_deinit (struct tracedump *td) |
| Reverse of pcap_init() | |
| void | pcap_update (struct tracedump *td) |
| Update the BPF filter on the sniffer socket. | |
Variables | |
| static struct sock_filter | check_ip [] |
| static struct sock_filter | check_type_outbound [] |
| static struct sock_filter | check_type_inbound [] |
| static struct sock_filter | check_ports [3] |
| static struct sock_filter | end [] |
| #define __DROP ((uint8_t) -2) |
Definition at line 217 of file pcap.c.
Referenced by gencode_alloc().
| #define __RET1 ((uint8_t) -3) |
Definition at line 218 of file pcap.c.
Referenced by gencode_alloc().
| #define __RET2 ((uint8_t) -4) |
Definition at line 219 of file pcap.c.
Referenced by gencode_alloc().
| #define SUBST_JMP | ( | from, | |
| to | |||
| ) |
if (fp->filter[i+j].jt == (from)) \ fp->filter[i+j].jt = (to) - i - j - 1; \ if (fp->filter[i+j].jf == (from)) \ fp->filter[i+j].jf = (to) - i - j - 1;
Referenced by gencode_alloc().
| static struct sock_fprog * gencode_alloc | ( | struct tracedump * | td | ) | [static, read] |
Definition at line 324 of file pcap.c.
Referenced by pcap_update().
| static int gencode_check_ports | ( | thash * | ports, |
| bool | outbound, | ||
| struct sock_filter * | filter, | ||
| int | loc_drop, | ||
| int | loc_accept | ||
| ) | [static] |
Definition at line 268 of file pcap.c.
Referenced by gencode_alloc().
| void pcap_deinit | ( | struct tracedump * | td | ) |
| void pcap_init | ( | struct tracedump * | td | ) |
| void pcap_update | ( | struct tracedump * | td | ) |
Update the BPF filter on the sniffer socket.
Definition at line 92 of file pcap.c.
Referenced by gc_thread(), handle_socket(), and pcap_init().
| void * sniffer_thread | ( | void * | arg | ) | [static] |
Definition at line 117 of file pcap.c.
Referenced by pcap_init().
struct sock_filter check_ip[] [static] |
{
BPF_STMT(BPF_LD + BPF_ABS, SKF_AD_OFF + SKF_AD_PROTOCOL),
BPF_JUMP(BPF_JMP + BPF_JEQ, ETH_P_IP, 0, __DROP),
BPF_STMT(BPF_LD + BPF_H + BPF_ABS, SKF_NET_OFF + 6),
BPF_JUMP(BPF_JMP + BPF_JSET, 0x1fff, __DROP, 0),
BPF_STMT(BPF_LDX + BPF_B + BPF_MSH, SKF_NET_OFF + 0),
}
Definition at line 221 of file pcap.c.
Referenced by gencode_alloc().
struct sock_filter check_ports[3] [static] |
{
BPF_STMT(BPF_LD + BPF_H + BPF_IND, SKF_NET_OFF + 0),
BPF_JUMP(BPF_JMP + BPF_JEQ, 0, __ACCEPT, 0),
BPF_STMT(BPF_JMP + BPF_JA, __DROP),
}
Definition at line 257 of file pcap.c.
Referenced by gencode_alloc(), and gencode_check_ports().
struct sock_filter check_type_inbound[] [static] |
{
BPF_STMT(BPF_LD + BPF_H + BPF_ABS, SKF_AD_OFF + SKF_AD_PKTTYPE),
BPF_JUMP(BPF_JMP + BPF_JEQ, PACKET_HOST, 2, __DROP),
BPF_JUMP(BPF_JMP + BPF_JEQ, PACKET_BROADCAST, 1, __DROP),
BPF_JUMP(BPF_JMP + BPF_JEQ, PACKET_MULTICAST, 0, __DROP),
BPF_STMT(BPF_LD + BPF_B + BPF_ABS, SKF_NET_OFF + 9),
BPF_JUMP(BPF_JMP + BPF_JEQ, IPPROTO_TCP, __RET1, 0),
BPF_JUMP(BPF_JMP + BPF_JEQ, IPPROTO_UDP, 0, __DROP),
}
Definition at line 245 of file pcap.c.
Referenced by gencode_alloc().
struct sock_filter check_type_outbound[] [static] |
{
BPF_STMT(BPF_LD + BPF_H + BPF_ABS, SKF_AD_OFF + SKF_AD_PKTTYPE),
BPF_JUMP(BPF_JMP + BPF_JEQ, PACKET_OUTGOING, 0, __RET1),
BPF_STMT(BPF_LD + BPF_B + BPF_ABS, SKF_NET_OFF + 9),
BPF_JUMP(BPF_JMP + BPF_JEQ, IPPROTO_TCP, __RET2, 0),
BPF_JUMP(BPF_JMP + BPF_JEQ, IPPROTO_UDP, 0, __DROP),
}
Definition at line 234 of file pcap.c.
Referenced by gencode_alloc().
struct sock_filter end[] [static] |
{
BPF_STMT(BPF_RET, UINT16_MAX),
}
Definition at line 263 of file pcap.c.
Referenced by gencode_alloc().
1.7.3