77 lines
1.3 KiB
C
77 lines
1.3 KiB
C
|
|
/*
|
||
|
|
zones.h keep list of zones to handle with backend info.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef ZONES_H
|
||
|
|
#define ZONES_H
|
||
|
|
struct zinfo_t;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* zone entry information
|
||
|
|
*/
|
||
|
|
struct zone_entry_t {
|
||
|
|
/** rbtree node info */
|
||
|
|
ldns_rbnode_t node;
|
||
|
|
/** zone name */
|
||
|
|
ldns_rdf* zname;
|
||
|
|
/** zone name in text */
|
||
|
|
char* zstr;
|
||
|
|
/** zone class */
|
||
|
|
uint16_t zclass;
|
||
|
|
/** zone info */
|
||
|
|
struct zinfo_t* zinfo;
|
||
|
|
|
||
|
|
/** next in linked list */
|
||
|
|
struct zone_entry_t* next;
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Keep zones information.
|
||
|
|
*/
|
||
|
|
struct zones_t {
|
||
|
|
/** tree of zone_entry, sorted by zname, zclass */
|
||
|
|
ldns_rbtree_t* ztree;
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* create new empty zones struct
|
||
|
|
*/
|
||
|
|
struct zones_t* zones_create(void);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Read all the zone entry storage
|
||
|
|
*/
|
||
|
|
void zones_read(struct zones_t* zones);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Find zone entry given the name
|
||
|
|
* or NULL if doesn't exist
|
||
|
|
*/
|
||
|
|
struct zone_entry_t* zones_find(struct zones_t* zones, const char* name,
|
||
|
|
uint16_t fclass);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* find a zone based on rdf
|
||
|
|
*/
|
||
|
|
struct zone_entry_t* zones_find_rdf(struct zones_t* zones, ldns_rdf* name,
|
||
|
|
uint16_t fclass);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Insert new entry for zone name, returns new entry.
|
||
|
|
* or NULL if out of memory.
|
||
|
|
*/
|
||
|
|
struct zone_entry_t* zones_insert(struct zones_t* zones, const char* name,
|
||
|
|
uint16_t nclass);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* free a zone entry
|
||
|
|
*/
|
||
|
|
void zone_entry_free(struct zone_entry_t* entry);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* free zones data structure
|
||
|
|
*/
|
||
|
|
void zones_free(struct zones_t* zones);
|
||
|
|
|
||
|
|
#endif /* ZONES_H */
|