1 /* Copyright (C) 2016 Open Information Security Foundation 2 * 3 * You can copy, redistribute or modify this Program under the terms of 4 * the GNU General Public License version 2 as published by the Free 5 * Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * version 2 along with this program; if not, write to the Free Software 14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 15 * 02110-1301, USA. 16 */ 17 18 /** 19 * \file 20 * 21 * \author Paulo Pacheco <fooinha@gmail.com> 22 */ 23 24 #ifndef __UTIL_LOG_REDIS_H__ 25 #define __UTIL_LOG_REDIS_H__ 26 27 #ifdef HAVE_LIBHIREDIS 28 #include <hiredis/hiredis.h> 29 30 31 #ifdef HAVE_LIBEVENT 32 #include <hiredis/async.h> 33 #endif /* HAVE_LIBEVENT */ 34 35 #include "conf.h" /* ConfNode */ 36 37 enum RedisMode { REDIS_LIST, REDIS_CHANNEL }; 38 39 typedef struct RedisSetup_ { 40 enum RedisMode mode; 41 const char *command; 42 const char *key; 43 const char *server; 44 uint16_t port; 45 int is_async; 46 int batch_size; 47 } RedisSetup; 48 49 typedef struct SCLogRedisContext_ { 50 redisContext *sync; 51 #if HAVE_LIBEVENT 52 redisAsyncContext *async; 53 struct event_base *ev_base; 54 int connected; 55 #endif /* HAVE_LIBEVENT */ 56 time_t tried; 57 int batch_count; 58 time_t last_push; 59 } SCLogRedisContext; 60 61 void SCLogRedisInit(void); 62 int SCConfLogOpenRedis(ConfNode *, void *); 63 int LogFileWriteRedis(void *, const char *, size_t); 64 65 #endif /* HAVE_LIBHIREDIS */ 66 #endif /* __UTIL_LOG_REDIS_H__ */ 67