1 #ifndef ETTERLOG_FUNCTIONS_H
2 #define ETTERLOG_FUNCTIONS_H
3 
4 #include <ec_log.h>
5 #include <ec_profiles.h>
6 
7 /* el_parser */
8 EC_API_EXTERN void parse_options(int argc, char **argv);
9 
10 /* el_analyze */
11 EC_API_EXTERN void analyze(void);
12 EC_API_EXTERN void create_hosts_list(void);
13 
14 /* el_main */
15 EC_API_EXTERN void progress(int value, int max);
16 EC_API_EXTERN void set_color(int color);
17 EC_API_EXTERN void reset_color(void);
18 
19 /* el_log */
20 EC_API_EXTERN void open_log(char *file);
21 EC_API_EXTERN int get_header(struct log_global_header *hdr);
22 EC_API_EXTERN int get_packet(struct log_header_packet *pck, u_char **buf);
23 EC_API_EXTERN int get_info(struct log_header_info *inf, struct dissector_info *buf);
24 EC_API_EXTERN void concatenate(int argc, char **argv);
25 
26 /* el_display */
27 EC_API_EXTERN void display(void);
28 EC_API_EXTERN void set_display_regex(char *regex);
29 
30 /* el_conn */
31 EC_API_EXTERN void conn_table_create(void);
32 EC_API_EXTERN void conn_table_display(void);
33 EC_API_EXTERN void conn_decode(void);
34 EC_API_EXTERN void filcon_compile(char *conn);
35 EC_API_EXTERN int is_conn(struct log_header_packet *pck, int *versus);
36 #define VERSUS_SOURCE   0
37 #define VERSUS_DEST     1
38 
39 /* el_target */
40 EC_API_EXTERN void target_compile(char *target);
41 EC_API_EXTERN int is_target_pck(struct log_header_packet *pck);
42 EC_API_EXTERN int is_target_info(struct host_profile *hst);
43 EC_API_EXTERN int find_user(struct host_profile *hst, char *user);
44 
45 /* el_profiles */
46 EC_API_EXTERN int profile_add_info(struct log_header_info *inf, struct dissector_info *buf);
47 EC_API_EXTERN void *get_host_list_ptr(void);
48 
49 /* el_stream */
50 struct so_list {
51    int side;
52    struct packet_object po;
53    TAILQ_ENTRY(so_list) next;
54 };
55 
56 struct so_offset {
57    struct so_list *so_curr;
58    size_t po_off;
59 };
60 
61 struct stream_object {
62    TAILQ_HEAD (so_list_head, so_list) so_head;
63    struct so_offset side1;
64    struct so_offset side2;
65 };
66 
67 EC_API_EXTERN void stream_init(struct stream_object *so);
68 EC_API_EXTERN int stream_add(struct stream_object *so, struct log_header_packet *pck, char *buf);
69 EC_API_EXTERN struct so_list * stream_search(struct stream_object *so, const char *buf, size_t buflen, int mode);
70 EC_API_EXTERN int stream_read(struct stream_object *so, u_char *buf, size_t size, int mode);
71    #define STREAM_SIDE1 0
72    #define STREAM_SIDE2 ~0
73 EC_API_EXTERN int stream_move(struct stream_object *so, size_t offset, int whence, int mode);
74 
75 /* el_decode */
76 
77 enum {
78    APP_LAYER_TCP = 51,
79    APP_LAYER_UDP = 52,
80 };
81 
82 #define FUNC_EXTRACTOR(func) int func(struct stream_object *so)
83 #define FUNC_EXTRACTOR_PTR(func) int (*func)(struct stream_object *so)
84 #define EXECUTE_EXTRACTOR(x, so, ret) do{ \
85    if (x) \
86       ret += x(so); \
87 }while(0)
88 
89 #define STREAM so
90 
91 EC_API_EXTERN int decode_stream(struct stream_object *so);
92    #define STREAM_SKIPPED  0
93    #define STREAM_DECODED  1
94 EC_API_EXTERN void add_extractor(u_int8 level, u_int32 type, FUNC_EXTRACTOR_PTR(extractor));
95 EC_API_EXTERN void * get_extractor(u_int8 level, u_int32 type);
96 EC_API_EXTERN int decode_to_file(char *host, char *proto, char *file);
97 
98 #endif
99 
100 /* EOF */
101 
102 // vim:ts=3:expandtab
103 
104