[SR-Dev] git:janakj/kcore: Adding crc32_uint

Jan Janak jan at iptel.org
Tue Mar 3 03:10:36 CET 2009


Module: sip-router
Branch: janakj/kcore
Commit: eed7087d808428e208db4c14ae44e0d73582432b
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=eed7087d808428e208db4c14ae44e0d73582432b

Author: Jan Janak <jan at iptel.org>
Committer: Jan Janak <jan at iptel.org>
Date:   Tue Mar  3 03:00:29 2009 +0100

Adding crc32_uint

This function is was added by kamailio to crc32.c

---

 lib/kcore/km_crc.c |   30 ++++++++++++++++++++++++++++++
 lib/kcore/km_crc.h |    9 +++++++++
 2 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/lib/kcore/km_crc.c b/lib/kcore/km_crc.c
new file mode 100644
index 0000000..0950f4e
--- /dev/null
+++ b/lib/kcore/km_crc.c
@@ -0,0 +1,30 @@
+#include "km_crc.h"
+
+/*!
+ * \brief CRC32 value from source string
+ * \param source_string source string
+ * \param hash_ret calulated CRC32
+ */
+void crc32_uint (str *source_string, unsigned int *hash_ret) 
+{	
+	unsigned int hash;	
+	unsigned int len;
+	const char *data;
+	
+	hash = 0xffffffff;
+	data = source_string->s;
+	
+	for (len = source_string->len / 4; len--; data += 4) {
+		hash = crc_32_tab[((unsigned char)hash) ^ data[0]] ^ (hash >> 8);
+		hash = crc_32_tab[((unsigned char)hash) ^ data[1]] ^ (hash >> 8);
+		hash = crc_32_tab[((unsigned char)hash) ^ data[2]] ^ (hash >> 8);
+		hash = crc_32_tab[((unsigned char)hash) ^ data[3]] ^ (hash >> 8);
+	}
+	
+	for (len = source_string->len % 4; len--; data++) {
+		hash = crc_32_tab[((unsigned char)hash) ^ *data] ^ (hash >> 8);
+	}
+	
+	*hash_ret = hash;
+}
+
diff --git a/lib/kcore/km_crc.h b/lib/kcore/km_crc.h
new file mode 100644
index 0000000..43efd54
--- /dev/null
+++ b/lib/kcore/km_crc.h
@@ -0,0 +1,9 @@
+#ifndef _KM_CRC_H
+#define _KM_CRC_H
+
+#include "../../crc.h"
+#include "../../str.h"
+
+void crc32_uint (str *source_string, unsigned int *hash_ret);
+
+#endif /* _KM_CRC_H */




More information about the sr-dev mailing list