odyssey/sources/hba_rule.h

59 lines
1.3 KiB
C

#ifndef ODYSSEY_HBA_RULE_H
#define ODYSSEY_HBA_RULE_H
/*
* Odyssey.
*
* Scalable PostgreSQL connection pooler.
*/
#define OD_HBA_NAME_ALL 1
#define OD_HBA_NAME_SAMEUSER 2
typedef struct od_hba_rule od_hba_rule_t;
typedef enum {
OD_CONFIG_HBA_LOCAL,
OD_CONFIG_HBA_HOST,
OD_CONFIG_HBA_HOSTSSL,
OD_CONFIG_HBA_HOSTNOSSL
} od_hba_rule_conn_type_t;
typedef enum {
OD_CONFIG_HBA_ALLOW,
OD_CONFIG_HBA_DENY,
} od_hba_rule_auth_method_t;
typedef struct od_hba_rule_name_item od_hba_rule_name_item_t;
struct od_hba_rule_name_item {
char *value;
od_list_t link;
};
typedef struct od_hba_rule_name od_hba_rule_name_t;
struct od_hba_rule_name {
unsigned int flags;
od_list_t values;
};
struct od_hba_rule {
od_hba_rule_conn_type_t connection_type;
od_hba_rule_name_t database;
od_hba_rule_name_t user;
od_address_range_t address_range;
od_hba_rule_auth_method_t auth_method;
od_list_t link;
};
typedef od_list_t od_hba_rules_t;
od_hba_rule_name_item_t *od_hba_rule_name_item_add(od_hba_rule_name_t *name);
od_hba_rule_t *od_hba_rule_create();
void od_hba_rule_free(od_hba_rule_t *hba);
void od_hba_rules_init(od_hba_rules_t *rules);
void od_hba_rules_free(od_hba_rules_t *rules);
void od_hba_rules_add(od_hba_rules_t *rules, od_hba_rule_t *rule);
#endif /* ODYSSEY_HBA_RULE_H */