Browse Source

inet/resolv: Add dn_comp

Signed-off-by: Daniel Mack <zonque@gmail.com>
Daniel Mack 12 years ago
parent
commit
05ff11da8f
2 changed files with 16 additions and 3 deletions
  1. 2 2
      include/resolv.h
  2. 14 1
      libc/inet/resolv.c

+ 2 - 2
include/resolv.h

@@ -332,9 +332,9 @@ __END_DECLS
 #if 0
 #define b64_ntop		__b64_ntop
 #define b64_pton		__b64_pton
-#define dn_comp			__dn_comp
 #define dn_count_labels		__dn_count_labels
 #endif
+#define dn_comp			__dn_comp
 #define dn_expand		__dn_expand
 #if 0
 #define dn_skipname		__dn_skipname
@@ -404,9 +404,9 @@ const u_char *	p_fqname (const u_char *, const u_char *, FILE *) __THROW;
 const char *	p_option (u_long option) __THROW;
 char *		p_secstodate (u_long) __THROW;
 int		dn_count_labels (const char *) __THROW;
+#endif
 int		dn_comp (const char *, u_char *, int, u_char **, u_char **)
      __THROW;
-#endif
 int		dn_expand (const u_char *, const u_char *, const u_char *,
 			   char *, int) __THROW;
 #if 0

+ 14 - 1
libc/inet/resolv.c

@@ -2659,6 +2659,20 @@ int dn_expand(const u_char *msg, const u_char *eom, const u_char *src,
 		dst[0] = '\0';
 	return n;
 }
+
+/*
+ * Pack domain name 'exp_dn' in presentation form into 'comp_dn'.
+ * Return the size of the compressed name or -1.
+ * 'length' is the size of the array pointed to by 'comp_dn'.
+ */
+int
+dn_comp(const char *src, u_char *dst, int dstsiz,
+		u_char **dnptrs, u_char **lastdnptr)
+{
+	return ns_name_compress(src, dst, (size_t) dstsiz,
+			(const u_char **) dnptrs,
+			(const u_char **) lastdnptr);
+}
 #endif /* L_res_comp */
 
 
@@ -3823,4 +3837,3 @@ void ns_put32(unsigned long src, unsigned char *dst)
 /* Unimplemented: */
 /* res_mkquery */
 /* res_send */
-/* dn_comp */