s4-rpc: dnsserver: Fix IPv6 reverse zone handling
authorAmitay Isaacs <amitay@gmail.com>
Tue, 13 Mar 2012 01:05:10 +0000 (12:05 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Wed, 21 Mar 2012 00:41:50 +0000 (11:41 +1100)
Thanks to Marcel Ritter <marcel.ritter@rrze.fau.de> for the patch.

source4/rpc_server/dnsserver/dnsutils.c

index 52a8bdde29d25c5c680d8d1ed243e21aaf964586..81402961860c8294cebdc6bc3ceb007bd5cf2d04 100644 (file)
@@ -159,6 +159,7 @@ struct dnsserver_zoneinfo *dnsserver_init_zoneinfo(struct dnsserver_zone *zone,
        struct dnsserver_zoneinfo *zoneinfo;
        uint32_t fReverse;
        const char *revzone = "in-addr.arpa";
+       const char *revzone6 = "ip6.arpa";
        int len1, len2;
 
        zoneinfo = talloc_zero(zone, struct dnsserver_zoneinfo);
@@ -167,11 +168,17 @@ struct dnsserver_zoneinfo *dnsserver_init_zoneinfo(struct dnsserver_zone *zone,
        }
 
        /* If the zone name ends with in-addr.arpa, it's reverse zone */
+       /* If the zone name ends with ip6.arpa, it's reverse zone (IPv6) */
        fReverse = 0;
        len1 = strlen(zone->name);
        len2 = strlen(revzone);
        if (len1 > len2 && strcasecmp(&zone->name[len1-len2], revzone) == 0) {
                fReverse = 1;
+       } else {
+               len2 = strlen(revzone6);
+               if (len1 > len2 && strcasecmp(&zone->name[len1-len2], revzone6) == 0) {
+                       fReverse = 1;
+               }
        }
 
        zoneinfo->Version = 0x32;