From 909720a0ebd069f568921eb7a718bf1457f94040 Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan@hp4-jankadlec.(none)>
Date: Thu, 11 Nov 2010 19:29:01 +0100
Subject: [PATCH] Initial node API implementation.

---
 src/dnslib/node.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/src/dnslib/node.c b/src/dnslib/node.c
index e69de29bb..a81dc8171 100644
--- a/src/dnslib/node.c
+++ b/src/dnslib/node.c
@@ -0,0 +1,58 @@
+/*
+ * File     node.c
+ * Date     11.11.2010 15:38
+ * Author:  Jan Kadlec jan.kadlec@nic.cz
+ * Project: CuteDNS
+ * Description:   
+ */
+
+#include <malloc.h>
+
+#include "common.h"
+#include "node.h"
+#include "rrset.h"
+
+int compare_rrset_types( void *rrset_1, void *rrset_2 )
+{
+    dnslib_rrset_t *rrs1 = (dnslib_rrset_t *) rrset_1;
+    dnslib_rrset_t *rrs2 = (dnslib_rrset_t *) rrset_2;
+
+    return (rrs1->type == rrs2->type ? 0 : 
+            rrs1->type < rrs2->type ? -1 : 1);
+}
+
+dnslib_node_t *dnslib_node_new( dnslib_dname_t *owner, dnslib_node_t *parent )
+{
+    dnslib_node_t *ret = malloc(sizeof(dnslib_node_t));
+    if (ret == NULL) {
+//        ERR_ALLOC_MEMORY;
+        return NULL;
+    }
+
+    ret->owner = owner;
+    ret->parent = parent;
+
+    ret->rrsets = skip_create_list(compare_rrset_types);
+    return ret;
+}
+
+int dnslib_node_add_rrset( dnslib_node_t *node, dnslib_rrset_t *rrset )
+{
+    if ((skip_insert(node->rrsets, &rrset->type, &rrset, NULL)) != 0) {
+        return -2;
+    }
+    return 0;
+}
+
+const dnslib_rrset_t *dnslib_node_get_rrset( const dnslib_node_t *node,
+											 uint16_t type )
+{
+    return (dnslib_rrset_t*)skip_find(node->rrsets, &type);
+}
+
+const dnslib_node_t *dnslib_node_get_parent( const dnslib_node_t *node )
+{
+    return node->parent;
+}
+
+/* end of file node.c */
-- 
GitLab