You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
/* Copyright 2016 Alex 'AdUser' Z (ad_user@runbox.com) |
|
* |
|
* This program is free software; you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License version 2 as |
|
* published by the Free Software Foundation. |
|
*/ |
|
#ifndef F2B_MATCHES_H_ |
|
#define F2B_MATCHES_H_ |
|
|
|
/** |
|
* @file |
|
* This file contains definition of ipaddr matches struct and related routines |
|
*/ |
|
|
|
/** matches container */ |
|
typedef struct { |
|
size_t hits; /**< how many times this ip matched by filter */ |
|
size_t max; /**< max matches that this in struct can contain */ |
|
size_t used; /**< currently used matches count */ |
|
time_t *times; /**< dynamic unix timestamps array */ |
|
} f2b_matches_t; |
|
|
|
/** |
|
* @brief Init matches struct, allocate memory for @a hits |
|
* @param m Pointer to struct |
|
* @param max Max expected matches count |
|
* @returns true on success, false otherwise |
|
*/ |
|
bool f2b_matches_create (f2b_matches_t *m, size_t max); |
|
/** |
|
* @brief Destroy matches struct and free memory |
|
* @param m Pointer to struct |
|
*/ |
|
void f2b_matches_destroy(f2b_matches_t *m); |
|
/** |
|
* @brief Push new match time to struct |
|
* @param m Pointer to struct |
|
* @param t Match time |
|
* @returns true on success, false if capacity exceeded |
|
*/ |
|
bool f2b_matches_append (f2b_matches_t *m, time_t t); |
|
/** |
|
* @brief Remove matches before given time |
|
* @param m Pointer to struct |
|
* @param t Start time |
|
*/ |
|
void f2b_matches_expire (f2b_matches_t *m, time_t t); |
|
|
|
#endif /* F2B_MATCHES_H_ */
|
|
|