[Devel] [ openser-Patches-1344272 ] Carrier ENUM support according to draft-haberler-carrier-enu

Klaus Darilion klaus.mailinglists at pernau.at
Mon Oct 23 18:12:15 CEST 2006


Juha Heinanen wrote:
> Klaus Darilion writes:
> 
>  > Hi Juha - any news on this?
> 
> yes, my answer was that if the patch includes support for TXT DNS
> records, that part of the code need to go into core resolve.c where all
> RRs are implemented, not in modules.

it is already

regards
klaus

Index: resolve.c
===================================================================
RCS file: /cvsroot/openser/sip-server/resolve.c,v
retrieving revision 1.6
diff -u -r1.6 resolve.c
--- resolve.c	14 Feb 2006 21:43:44 -0000	1.6
+++ resolve.c	15 May 2006 14:37:16 -0000
@@ -293,6 +293,91 @@
  	return 0;
  }

+/* RFC1035:
+ *
+ * <character-string> is a single length octet followed by that number 
of characters.
+ * TXT-DATA        One or more <character-string>s.
+ *
+ * We only take the first string here.
+ */
+/* parses a TXT record into a txt_rdata structure */
+struct txt_rdata* dns_txt_parser( unsigned char* msg, unsigned char* end,
+									  unsigned char* rdata)
+{
+	struct txt_rdata* txt;
+	int len;
+	
+	txt=0;
+	txt=(struct txt_rdata*)local_malloc(sizeof(struct txt_rdata));
+	if(txt==0){
+		LOG(L_ERR, "ERROR: dns_txt_parser: out of memory\n");
+		goto error;
+	}
+
+	len = *rdata;
+	if (rdata + 1 + len >= end) goto error;	/*  something fishy in the 
record */
+	if (len >= sizeof(txt->txt)) goto error; /* not enough space? */
+	memcpy(txt->txt, rdata+1, len);
+	txt->txt[len] = 0;		/* 0-terminate string */
+	return txt;
+
+error:
+	if (txt) local_free(txt);
+	return 0;
+}
+



-- 
Klaus Darilion
nic.at




More information about the Devel mailing list