Skip to content
Snippets Groups Projects
Commit 4b1a9988 authored by Jan Kadlec's avatar Jan Kadlec
Browse files

API completed, compilable. Will have to change manipulation with rdata as does...

API completed, compilable. Will have to change manipulation with rdata as does not use its API as it should.
parent 14b85fbd
No related branches found
No related tags found
No related merge requests found
......@@ -12,12 +12,11 @@
#include "rrset.h"
#include "common.h"
static unsigned
dnslib_rrset_t *dnslib_rrset_new( dnslib_dname_t *owner, uint16_t type,
uint16_t rclass, uint32_t ttl )
{
if ((dnslib_rrset_t *ret = malloc(sizeof(dnslib_rrset_t))) == NULL) {
dnslib_rrset_t *ret = malloc(sizeof(dnslib_rrset_t));
if (ret == NULL) {
ERR_ALLOC_FAILED;
return NULL;
}
......@@ -28,24 +27,21 @@ dnslib_rrset_t *dnslib_rrset_new( dnslib_dname_t *owner, uint16_t type,
return NULL;
}
/* allocating space for one RDATA entry by defaut */
if ((ret->rdata = dnslib_rdata_new(1)) == NULL) {
ERR_ALLOC_FAILED;
return NULL;
}
ret->rdata = NULL;
ret->owner = owner;
ret->type = type;
ret->class = class;
ret->rclass = rclass;
ret->ttl = ttl;
return ret;
}
int dnslib_rrset_add_rdata( dnslib_rrset_t *rrset, dnslib_rdata_t *rdata )
/* TODO only stores at the beginning of the list */
{
if (rrset->rdata == NULL) {
if ((rrset->rdata = dnslib_rdata_new()) == NULL) {
if ((rrset->rdata = dnslib_rdata_new(1)) == NULL) {
ERR_ALLOC_FAILED;
return -1;
}
......@@ -53,8 +49,10 @@ int dnslib_rrset_add_rdata( dnslib_rrset_t *rrset, dnslib_rdata_t *rdata )
rrset->rdata->items = rdata->items;
rrset->rdata->count = rdata->count;
rrset->rdata->next = rrset->rdata;
} else {
if ((rrset->rdata *new_element = dnslib_rdata_new()) == NULL) {
dnslib_rdata_t *new_element = dnslib_rdata_new(1);
if (new_element == NULL) {
ERR_ALLOC_FAILED;
return -1;
}
......@@ -63,7 +61,7 @@ int dnslib_rrset_add_rdata( dnslib_rrset_t *rrset, dnslib_rdata_t *rdata )
new_element->count = rdata->count;
new_element->next = rrset->rdata;
dnslib_rdata_list_t *tmp;
dnslib_rdata_t *tmp;
tmp = rrset->rdata;
......@@ -72,7 +70,7 @@ int dnslib_rrset_add_rdata( dnslib_rrset_t *rrset, dnslib_rdata_t *rdata )
tmp = tmp->next;
}
tmp->next = new_element;
tmp->next = new_element; /* the last element now points to the first */
rrset->rdata = new_element;
}
return 0;
......@@ -80,7 +78,13 @@ int dnslib_rrset_add_rdata( dnslib_rrset_t *rrset, dnslib_rdata_t *rdata )
int dnslib_rrset_set_rrsigs( dnslib_rrset_t *rrset,
const dnslib_rrset_t *rrsigs,
const dnslib_rdata_t *first, uint count );
const dnslib_rdata_t *first, uint count )
{
rrset->rrsigs = rrsigs;
rrset->first = first;
rrset->rrsig_count = count;
/* TODO change to void in header */
}
uint16_t dnslib_rrset_type( const dnslib_rrset_t *rrset )
{
......@@ -89,7 +93,7 @@ uint16_t dnslib_rrset_type( const dnslib_rrset_t *rrset )
uint16_t dnslib_rrset_class( const dnslib_rrset_t *rrset )
{
return rrset->class;
return rrset->rclass;
}
uint32_t dnslib_rrset_ttl( const dnslib_rrset_t *rrset )
......@@ -97,13 +101,28 @@ uint32_t dnslib_rrset_ttl( const dnslib_rrset_t *rrset )
return rrset->ttl;
}
const dnslib_rdata_t *dnslib_rrset_rdata( const dnslib_rrset_t *rrset );
const dnslib_rdata_t *dnslib_rrset_rdata( const dnslib_rrset_t *rrset )
{
return rrset->rdata;
}
const dnslib_rrset_t *dnslib_rrset_rrsigs( const dnslib_rrset_t *rrset );
const dnslib_rrset_t *dnslib_rrset_rrsigs( const dnslib_rrset_t *rrset )
{
return rrset->rrsigs;
}
const dnslib_rdata_t *dnslib_rrset_rrsig_first( const dnslib_rrset_t *rrset );
const dnslib_rdata_t *dnslib_rrset_rrsig_first( const dnslib_rrset_t *rrset )
{
return rrset->first;
}
uint dnslib_rrset_rrsig_count( const dnslib_rrset_t *rrset );
uint dnslib_rrset_rrsig_count( const dnslib_rrset_t *rrset )
{
return rrset->rrsig_count;
}
void dnslib_rrset_free( dnslib_rrset_t **rrset );
void dnslib_rrset_free( dnslib_rrset_t **rrset )
{
*rrset = NULL;
}
/* end of file rrset.c */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment