Testsuite: Fix fakens parser for A and AAAA RRs
[users/heiko/exim.git] / test / src / fakens.c
index 7e93979ecfb529267dcde21dbe386286162f7d47..00f1f7d46f2c4c87690e78a038958144b3600b5f 100644 (file)
@@ -75,9 +75,11 @@ a number of seconds (followed by one space).
 #include <errno.h>
 #include <signal.h>
 #include <arpa/nameser.h>
 #include <errno.h>
 #include <signal.h>
 #include <arpa/nameser.h>
+#include <arpa/inet.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <dirent.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <dirent.h>
+#include <unistd.h>
 
 #define FALSE         0
 #define TRUE          1
 
 #define FALSE         0
 #define TRUE          1
@@ -500,35 +502,13 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL)
       break;
 
     case ns_t_a:
       break;
 
     case ns_t_a:
-      for (i = 0; i < 4; i++)
-        {
-        value = 0;
-        while (isdigit(*p)) value = value*10 + *p++ - '0';
-        *pk++ = value;
-        p++;
-        }
+      inet_pton(AF_INET, p, pk);                /* FIXME: error checking */
+      pk += 4;
       break;
 
       break;
 
-    /* The only occurrence of a double colon is for ::1 */
     case ns_t_aaaa:
     case ns_t_aaaa:
-      if (Ustrcmp(p, "::1") == 0)
-        {
-        memset(pk, 0, 15);
-        pk += 15;
-        *pk++ = 1;
-        }
-      else for (i = 0; i < 8; i++)
-        {
-        value = 0;
-        while (isxdigit(*p))
-          {
-          value = value * 16 + toupper(*p) - (isdigit(*p)? '0' : '7');
-          p++;
-          }
-        *pk++ = (value >> 8) & 255;
-        *pk++ = value & 255;
-        p++;
-        }
+      inet_pton(AF_INET6, p, pk);               /* FIXME: error checking */
+      pk += 16;
       break;
 
     case ns_t_mx:
       break;
 
     case ns_t_mx: