1 /* 2 * Mod Defender for HAProxy 3 * 4 * Copyright 2017 HAProxy Technologies, Dragan Dosen <ddosen@haproxy.com> 5 * 6 * Based on "A Random IP reputation service acting as a Stream Processing Offload Agent" 7 * Copyright 2016 HAProxy Technologies, Christopher Faulet <cfaulet@haproxy.com> 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License 11 * as published by the Free Software Foundation; either version 12 * 3 of the License, or (at your option) any later version. 13 * 14 */ 15 #ifndef __SPOA_H__ 16 #define __SPOA_H__ 17 18 #include <sys/time.h> 19 #undef LIST_HEAD 20 21 #include <event2/util.h> 22 #include <event2/event.h> 23 #include <event2/event_struct.h> 24 #include <event2/thread.h> 25 26 #define LOG(worker, fmt, args...) \ 27 do { \ 28 struct timeval now; \ 29 \ 30 gettimeofday(&now, NULL); \ 31 fprintf(stderr, "%ld.%06ld [%02d] " fmt "\n", \ 32 now.tv_sec, now.tv_usec, (worker)->id, ##args); \ 33 } while (0) 34 35 struct worker { 36 pthread_t thread; 37 int id; 38 struct event_base *base; 39 struct event *monitor_event; 40 41 struct list engines; 42 43 unsigned int nbclients; 44 struct list clients; 45 46 struct list frames; 47 }; 48 49 extern struct worker null_worker; 50 51 #endif /* __SPOA_H__ */ 52