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.

50 lines
1.4 KiB

9 years ago
/* 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_ */