]> granicus.if.org Git - pdns/commitdiff
add more dnssec infra (stuff to make a zone relative, stuff to reverse labels for...
authorBert Hubert <bert.hubert@netherlabs.nl>
Sun, 18 Apr 2010 19:18:42 +0000 (19:18 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Sun, 18 Apr 2010 19:18:42 +0000 (19:18 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1557 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/misc.cc
pdns/misc.hh

index b7ed4a6fec2b3e24f0d2abbb14e0c2fbb68419be..bedd5aaa1cdfcabe8e82639c63e614945459b686 100644 (file)
@@ -621,3 +621,34 @@ string stripDot(const string& dom)
 
   return dom.substr(0,dom.size()-1);
 }
+
+
+string labelReverse(const std::string& qname)
+{
+  if(qname.empty())
+    return qname;
+
+  vector<string> labels;
+  stringtok(labels, qname, ".");
+  if(labels.size()==1)
+    return qname;
+
+  string ret;
+  for(vector<string>::const_reverse_iterator iter = labels.rbegin(); iter != labels.rend(); ++iter) {
+    if(iter != labels.rbegin())
+      ret.append(1,'.');
+    ret+=*iter;
+  }
+  return ret;
+}
+
+// do NOT feed trailing dots!
+// www.powerdns.com, powerdns.com -> www
+string makeRelative(const std::string& fqdn, const std::string& zone)
+{
+  if(zone.empty())
+    return fqdn;  
+  if(fqdn != zone)
+    return fqdn.substr(0, fqdn.size() - zone.length() - 1); // strip domain name
+  return "";
+}
index 7c40534092d3fe4cea863229ff128fc9cb748d34..b81c976ebebd9d2d9cf4b3ee66cde625c893ecea 100644 (file)
@@ -380,4 +380,7 @@ inline void setSocketReusable(int fd)
 
 string stripDot(const string& dom);
 void seedRandom(const string& source);
+string makeRelative(const std::string& fqdn, const std::string& zone);
+string labelReverse(const std::string& qname);
+
 #endif