From 778709ca08012a9a22250bca9ae48aadc857fa00 Mon Sep 17 00:00:00 2001
From: Marek Vavrusa <marek.vavrusa@nic.cz>
Date: Thu, 6 Sep 2012 16:34:42 +0200
Subject: [PATCH] Implemented knot_rdata_soa_serial_set().

This is needed for constructing changesets from
dynamic update packets.

refs #937
---
 src/libknot/rdata.c | 12 ++++++++++++
 src/libknot/rdata.h |  1 +
 2 files changed, 13 insertions(+)

diff --git a/src/libknot/rdata.c b/src/libknot/rdata.c
index 1cdd33930d..27a07d50ed 100644
--- a/src/libknot/rdata.c
+++ b/src/libknot/rdata.c
@@ -698,6 +698,18 @@ int64_t knot_rdata_soa_serial(const knot_rdata_t *rdata)
 	return knot_wire_read_u32((uint8_t *)(rdata->items[2].raw_data + 1));
 }
 
+/*---------------------------------------------------------------------------*/
+void knot_rdata_soa_serial_set(knot_rdata_t *rdata, uint32_t serial)
+{
+	if (!rdata || rdata->count < 3) {
+		return;
+	}
+
+	// the number is in network byte order, transform it
+	knot_wire_write_u32((uint8_t *)(rdata->items[2].raw_data + 1),
+	                    serial);
+}
+
 /*---------------------------------------------------------------------------*/
 
 uint32_t knot_rdata_soa_refresh(const knot_rdata_t *rdata)
diff --git a/src/libknot/rdata.h b/src/libknot/rdata.h
index acd678fdec..62921e6087 100644
--- a/src/libknot/rdata.h
+++ b/src/libknot/rdata.h
@@ -329,6 +329,7 @@ const knot_dname_t *knot_rdata_get_name(const knot_rdata_t *rdata,
                                             uint16_t type);
 
 int64_t knot_rdata_soa_serial(const knot_rdata_t *rdata);
+void knot_rdata_soa_serial_set(knot_rdata_t *rdata, uint32_t serial);
 
 uint32_t knot_rdata_soa_refresh(const knot_rdata_t *rdata);
 uint32_t knot_rdata_soa_retry(const knot_rdata_t *rdata);
-- 
GitLab