Files

77 lines
1.3 KiB
C
Raw Permalink Normal View History

/*
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 */