ruleparam_db.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef PASSDB_SLIM_RULEPARAM_DB_H
  2. #define PASSDB_SLIM_RULEPARAM_DB_H
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <time.h>
  7. #include <sys/time.h>
  8. #include <unistd.h>
  9. #include <errno.h>
  10. #include "../common/common_defs.h"
  11. #include "../commhub/commhub.h"
  12. #include "../commhub/client_utils.h"
  13. #define RULEPARAM_DB_FILE DATABASE_FILE_PATH "ruleparam.db"
  14. #define RULEPARAM_DB_NOT_FOUND (-1)
  15. #define RULEPARAM_DB_FULL (-2)
  16. #define RULEPARAM_DB_EMPTY (-3)
  17. #define RULEPARAM_DB_DUP (-4)
  18. #define RULEPARAM_DB_SANITY (-5)
  19. #define RULEPARAM_DB_MAX ( 2048 )
  20. typedef struct passdb_slim_ruleparam_t {
  21. int id;
  22. int reference_count;
  23. char name[RULENAME_LEN];
  24. char param[PARAM_LEN];
  25. struct passdb_slim_ruleparam_t *next;
  26. } passdb_slim_ruleparam;
  27. typedef struct passdb_slim_ruleparam_db_context_t {
  28. int n;
  29. passdb_slim_ruleparam *head;
  30. char *db_filename;
  31. int sync_counter;
  32. int sync_every_n;
  33. int n_filename_history; // We want to store some historic ruleparams, which we
  34. int pos_filename_history; // rotate through.
  35. unsigned long long seq;
  36. } ruleparam_db_ctx;
  37. passdb_slim_ruleparam *_alloc_ruleparam_db_nod(int id, char *name, char *param);
  38. int ruleparam_db_init( ruleparam_db_ctx * );
  39. ruleparam_db_ctx * ruleparam_db_alloc( );
  40. int ruleparam_db_load( ruleparam_db_ctx **, char * );
  41. int ruleparam_db_free( ruleparam_db_ctx * );
  42. int ruleparam_db_debug_dump( ruleparam_db_ctx *);
  43. //int ruleparam_db_save( ruleparam_db_ctx *, char * );
  44. int ruleparam_db_save( ruleparam_db_ctx * );
  45. //int ruleparam_db_rate_limited_sync( ruleparam_db_ctx *, char * );
  46. int ruleparam_db_rate_limited_sync( ruleparam_db_ctx * );
  47. int ruleparam_db_add( ruleparam_db_ctx *, char *, char *);
  48. int ruleparam_db_remove( ruleparam_db_ctx *, int );
  49. int ruleparam_db_find( ruleparam_db_ctx *, char *, char *);
  50. int ruleparam_db_reference_count( ruleparam_db_ctx *, char *, char *);
  51. int ruleparam_db_get( char *, char *, ruleparam_db_ctx *, int );
  52. int ruleparam_db_find_free_id( ruleparam_db_ctx * );
  53. int ruleparam_db_update( ruleparam_db_ctx *ctx, char *name, char *param, int delta_ref_count );
  54. int ruleparam_db_clean( ruleparam_db_ctx *ctx );
  55. int ruleparam_db_consistency_check( ruleparam_db_ctx *ctx );
  56. passdb_slim_ruleparam *ruleparam_db_get_node( ruleparam_db_ctx *ctx, int id );
  57. int format_new_ruleparamdb(char *);
  58. void ruleparam_db_dump(ruleparam_db_ctx *ctx);
  59. #endif