]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
burtle reorg: to separate file and inline
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 6 May 2022 12:25:39 +0000 (14:25 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 1 Jun 2022 09:22:26 +0000 (11:22 +0200)
pdns/Makefile.am
pdns/burtle.hh [new file with mode: 0644]
pdns/dnsdistdist/Makefile.am
pdns/dnsdistdist/burtle.hh [new symlink]
pdns/dnsname.hh
pdns/misc.cc
pdns/misc.hh
pdns/recursordist/Makefile.am
pdns/recursordist/burtle.hh [new symlink]

index 06be63a282890046ac69cfbed07383659b07948a..8eb5afde6487eec0776b590203b332397441ee90 100644 (file)
@@ -196,6 +196,7 @@ pdns_server_SOURCES = \
        backends/gsql/ssql.hh \
        base32.cc base32.hh \
        base64.cc base64.hh \
+       burtle.hh \
        bind-dnssec.schema.sqlite3.sql.h \
        bindlexer.l \
        bindparser.cc \
diff --git a/pdns/burtle.hh b/pdns/burtle.hh
new file mode 100644 (file)
index 0000000..1b99741
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * This file is part of PowerDNS or dnsdist.
+ * Copyright -- PowerDNS.COM B.V. and its contributors
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * In addition, for the avoidance of any doubt, permission is granted to
+ * link this program with OpenSSL and to (re)distribute the binaries
+ * produced as the result of such linking.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#pragma once
+
+#include <cinttypes>
+
+#define burtlemix(a,b,c)                        \
+{ \
+  a -= b; a -= c; a ^= (c>>13); \
+  b -= c; b -= a; b ^= (a<<8); \
+  c -= a; c -= b; c ^= (b>>13); \
+  a -= b; a -= c; a ^= (c>>12);  \
+  b -= c; b -= a; b ^= (a<<16); \
+  c -= a; c -= b; c ^= (b>>5); \
+  a -= b; a -= c; a ^= (c>>3);  \
+  b -= c; b -= a; b ^= (a<<10); \
+  c -= a; c -= b; c ^= (b>>15); \
+}
+
+inline uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t initval)
+{
+  uint32_t a,b,c,len;
+
+   /* Set up the internal state */
+  len = length;
+  a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
+  c = initval;         /* the previous hash value */
+
+  /*---------------------------------------- handle most of the key */
+  while (len >= 12) {
+    a += (k[0] +((uint32_t)k[1]<<8) +((uint32_t)k[2]<<16) +((uint32_t)k[3]<<24));
+    b += (k[4] +((uint32_t)k[5]<<8) +((uint32_t)k[6]<<16) +((uint32_t)k[7]<<24));
+    c += (k[8] +((uint32_t)k[9]<<8) +((uint32_t)k[10]<<16)+((uint32_t)k[11]<<24));
+    burtlemix(a,b,c);
+    k += 12; len -= 12;
+  }
+
+  /*------------------------------------- handle the last 11 bytes */
+  c += length;
+  switch(len) {             /* all the case statements fall through */
+  case 11: c+=((uint32_t)k[10]<<24);
+    /* fall-through */
+  case 10: c+=((uint32_t)k[9]<<16);
+    /* fall-through */
+  case 9 : c+=((uint32_t)k[8]<<8);
+    /* the first byte of c is reserved for the length */
+    /* fall-through */
+  case 8 : b+=((uint32_t)k[7]<<24);
+    /* fall-through */
+  case 7 : b+=((uint32_t)k[6]<<16);
+    /* fall-through */
+  case 6 : b+=((uint32_t)k[5]<<8);
+    /* fall-through */
+  case 5 : b+=k[4];
+    /* fall-through */
+  case 4 : a+=((uint32_t)k[3]<<24);
+    /* fall-through */
+  case 3 : a+=((uint32_t)k[2]<<16);
+    /* fall-through */
+  case 2 : a+=((uint32_t)k[1]<<8);
+    /* fall-through */
+  case 1 : a+=k[0];
+    /* case 0: nothing left to add */
+  }
+  burtlemix(a,b,c);
+  /*-------------------------------------------- report the result */
+  return c;
+}
+
+inline uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t initval)
+{
+  uint32_t a,b,c,len;
+
+   /* Set up the internal state */
+  len = length;
+  a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
+  c = initval;         /* the previous hash value */
+
+  /*---------------------------------------- handle most of the key */
+  while (len >= 12) {
+    a += (dns_tolower(k[0]) +((uint32_t)dns_tolower(k[1])<<8) +((uint32_t)dns_tolower(k[2])<<16) +((uint32_t)dns_tolower(k[3])<<24));
+    b += (dns_tolower(k[4]) +((uint32_t)dns_tolower(k[5])<<8) +((uint32_t)dns_tolower(k[6])<<16) +((uint32_t)dns_tolower(k[7])<<24));
+    c += (dns_tolower(k[8]) +((uint32_t)dns_tolower(k[9])<<8) +((uint32_t)dns_tolower(k[10])<<16)+((uint32_t)dns_tolower(k[11])<<24));
+    burtlemix(a,b,c);
+    k += 12; len -= 12;
+  }
+
+  /*------------------------------------- handle the last 11 bytes */
+  c += length;
+  switch(len) {             /* all the case statements fall through */
+  case 11: c+=((uint32_t)dns_tolower(k[10])<<24);
+    /* fall-through */
+  case 10: c+=((uint32_t)dns_tolower(k[9])<<16);
+    /* fall-through */
+  case 9 : c+=((uint32_t)dns_tolower(k[8])<<8);
+    /* the first byte of c is reserved for the length */
+    /* fall-through */
+  case 8 : b+=((uint32_t)dns_tolower(k[7])<<24);
+    /* fall-through */
+  case 7 : b+=((uint32_t)dns_tolower(k[6])<<16);
+    /* fall-through */
+  case 6 : b+=((uint32_t)dns_tolower(k[5])<<8);
+    /* fall-through */
+  case 5 : b+=dns_tolower(k[4]);
+    /* fall-through */
+  case 4 : a+=((uint32_t)dns_tolower(k[3])<<24);
+    /* fall-through */
+  case 3 : a+=((uint32_t)dns_tolower(k[2])<<16);
+    /* fall-through */
+  case 2 : a+=((uint32_t)dns_tolower(k[1])<<8);
+    /* fall-through */
+  case 1 : a+=dns_tolower(k[0]);
+    /* case 0: nothing left to add */
+  }
+  burtlemix(a,b,c);
+  /*-------------------------------------------- report the result */
+  return c;
+}
index e6e04cc5965396cf8b11bcb968fe473d877512ab..99abefede61d1d8dc1fcf730c3f2b7300e771d52 100644 (file)
@@ -124,6 +124,7 @@ dnsdist-lua-ffi.$(OBJEXT): dnsdist-lua-ffi-interface.inc
 
 dnsdist_SOURCES = \
        base64.hh \
+       burtle.hh \
        bpf-filter.cc bpf-filter.hh \
        cachecleaner.hh \
        capabilities.cc capabilities.hh \
diff --git a/pdns/dnsdistdist/burtle.hh b/pdns/dnsdistdist/burtle.hh
new file mode 120000 (symlink)
index 0000000..0a00339
--- /dev/null
@@ -0,0 +1 @@
+../burtle.hh
\ No newline at end of file
index 566b3bf7ffae43997cb5ee0626420d818e4f2c4d..b0b52b68009b41c0c607e8362ed27c96bd9792ec 100644 (file)
@@ -53,7 +53,7 @@ inline unsigned char dns_tolower(unsigned char c)
   return dns_tolower_table[c];
 }
 
-uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t init);
+#include "burtle.hh"
 
 // #include "dns.hh"
 // #include "logger.hh"
index ebcd717447ad3350f0e1b17cba9d50cfcaf56a34..4334074ec42e525c91c4e3511763d8866ce5dcd5 100644 (file)
@@ -943,120 +943,6 @@ void setFilenumLimit(unsigned int lim)
     unixDie("Setting number of available file descriptors");
 }
 
-#define burtlemix(a,b,c) \
-{ \
-  a -= b; a -= c; a ^= (c>>13); \
-  b -= c; b -= a; b ^= (a<<8); \
-  c -= a; c -= b; c ^= (b>>13); \
-  a -= b; a -= c; a ^= (c>>12);  \
-  b -= c; b -= a; b ^= (a<<16); \
-  c -= a; c -= b; c ^= (b>>5); \
-  a -= b; a -= c; a ^= (c>>3);  \
-  b -= c; b -= a; b ^= (a<<10); \
-  c -= a; c -= b; c ^= (b>>15); \
-}
-
-uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t initval)
-{
-  uint32_t a,b,c,len;
-
-   /* Set up the internal state */
-  len = length;
-  a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
-  c = initval;         /* the previous hash value */
-
-  /*---------------------------------------- handle most of the key */
-  while (len >= 12) {
-    a += (k[0] +((uint32_t)k[1]<<8) +((uint32_t)k[2]<<16) +((uint32_t)k[3]<<24));
-    b += (k[4] +((uint32_t)k[5]<<8) +((uint32_t)k[6]<<16) +((uint32_t)k[7]<<24));
-    c += (k[8] +((uint32_t)k[9]<<8) +((uint32_t)k[10]<<16)+((uint32_t)k[11]<<24));
-    burtlemix(a,b,c);
-    k += 12; len -= 12;
-  }
-
-  /*------------------------------------- handle the last 11 bytes */
-  c += length;
-  switch(len) {             /* all the case statements fall through */
-  case 11: c+=((uint32_t)k[10]<<24);
-    /* fall-through */
-  case 10: c+=((uint32_t)k[9]<<16);
-    /* fall-through */
-  case 9 : c+=((uint32_t)k[8]<<8);
-    /* the first byte of c is reserved for the length */
-    /* fall-through */
-  case 8 : b+=((uint32_t)k[7]<<24);
-    /* fall-through */
-  case 7 : b+=((uint32_t)k[6]<<16);
-    /* fall-through */
-  case 6 : b+=((uint32_t)k[5]<<8);
-    /* fall-through */
-  case 5 : b+=k[4];
-    /* fall-through */
-  case 4 : a+=((uint32_t)k[3]<<24);
-    /* fall-through */
-  case 3 : a+=((uint32_t)k[2]<<16);
-    /* fall-through */
-  case 2 : a+=((uint32_t)k[1]<<8);
-    /* fall-through */
-  case 1 : a+=k[0];
-    /* case 0: nothing left to add */
-  }
-  burtlemix(a,b,c);
-  /*-------------------------------------------- report the result */
-  return c;
-}
-
-uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t initval)
-{
-  uint32_t a,b,c,len;
-
-   /* Set up the internal state */
-  len = length;
-  a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
-  c = initval;         /* the previous hash value */
-
-  /*---------------------------------------- handle most of the key */
-  while (len >= 12) {
-    a += (dns_tolower(k[0]) +((uint32_t)dns_tolower(k[1])<<8) +((uint32_t)dns_tolower(k[2])<<16) +((uint32_t)dns_tolower(k[3])<<24));
-    b += (dns_tolower(k[4]) +((uint32_t)dns_tolower(k[5])<<8) +((uint32_t)dns_tolower(k[6])<<16) +((uint32_t)dns_tolower(k[7])<<24));
-    c += (dns_tolower(k[8]) +((uint32_t)dns_tolower(k[9])<<8) +((uint32_t)dns_tolower(k[10])<<16)+((uint32_t)dns_tolower(k[11])<<24));
-    burtlemix(a,b,c);
-    k += 12; len -= 12;
-  }
-
-  /*------------------------------------- handle the last 11 bytes */
-  c += length;
-  switch(len) {             /* all the case statements fall through */
-  case 11: c+=((uint32_t)dns_tolower(k[10])<<24);
-    /* fall-through */
-  case 10: c+=((uint32_t)dns_tolower(k[9])<<16);
-    /* fall-through */
-  case 9 : c+=((uint32_t)dns_tolower(k[8])<<8);
-    /* the first byte of c is reserved for the length */
-    /* fall-through */
-  case 8 : b+=((uint32_t)dns_tolower(k[7])<<24);
-    /* fall-through */
-  case 7 : b+=((uint32_t)dns_tolower(k[6])<<16);
-    /* fall-through */
-  case 6 : b+=((uint32_t)dns_tolower(k[5])<<8);
-    /* fall-through */
-  case 5 : b+=dns_tolower(k[4]);
-    /* fall-through */
-  case 4 : a+=((uint32_t)dns_tolower(k[3])<<24);
-    /* fall-through */
-  case 3 : a+=((uint32_t)dns_tolower(k[2])<<16);
-    /* fall-through */
-  case 2 : a+=((uint32_t)dns_tolower(k[1])<<8);
-    /* fall-through */
-  case 1 : a+=dns_tolower(k[0]);
-    /* case 0: nothing left to add */
-  }
-  burtlemix(a,b,c);
-  /*-------------------------------------------- report the result */
-  return c;
-}
-
-
 bool setSocketTimestamps(int fd)
 {
 #ifdef SO_TIMESTAMP
index ac725fc001683fd9a014ebf48a22a5258c703b3b..bfadd206f5acdc2d3704d4f5d4ddf7024533dd6e 100644 (file)
@@ -42,7 +42,8 @@
 #include <vector>
 
 #include "namespaces.hh"
-#include "dnsname.hh"
+
+class DNSName;
 
 typedef enum { TSIG_MD5, TSIG_SHA1, TSIG_SHA224, TSIG_SHA256, TSIG_SHA384, TSIG_SHA512, TSIG_GSS } TSIGHashEnum;
 
@@ -557,7 +558,6 @@ void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cbuf, const ComboAddre
 unsigned int getFilenumLimit(bool hardOrSoft=0);
 void setFilenumLimit(unsigned int lim);
 bool readFileIfThere(const char* fname, std::string* line);
-uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t init);
 bool setSocketTimestamps(int fd);
 
 //! Sets the socket into blocking mode.
@@ -814,3 +814,4 @@ struct FDWrapper
 private:
   int d_fd{-1};
 };
+
index 743a17b991d7bed06eacda748920190c9a94402d..9b6b6524936ae521c9c05097157f0c4712239305 100644 (file)
@@ -104,6 +104,7 @@ pdns_recursor_SOURCES = \
        axfr-retriever.hh axfr-retriever.cc \
        base32.cc base32.hh \
        base64.cc base64.hh \
+       burtle.hh \
        cachecleaner.hh \
        capabilities.cc capabilities.hh \
        circular_buffer.hh \
diff --git a/pdns/recursordist/burtle.hh b/pdns/recursordist/burtle.hh
new file mode 120000 (symlink)
index 0000000..0a00339
--- /dev/null
@@ -0,0 +1 @@
+../burtle.hh
\ No newline at end of file