summaryrefslogtreecommitdiff
path: root/wsutil/crc16-plain.h
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2011-08-30 13:46:42 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2011-08-30 13:46:42 +0000
commit4132d40e50c576ae6cf9e03e4f552ea091035626 (patch)
tree4b1f8343011ca58ba5cd44782166f029cc7e3a8b /wsutil/crc16-plain.h
parentbb67b92a14c502e2c9841863dbbef869818f3e58 (diff)
downloadwireshark-4132d40e50c576ae6cf9e03e4f552ea091035626.tar.gz
Move all crc routines to libwsutil.
This way we can use the crc routines in wiretap. svn path=/trunk/; revision=38800
Diffstat (limited to 'wsutil/crc16-plain.h')
-rw-r--r--wsutil/crc16-plain.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/wsutil/crc16-plain.h b/wsutil/crc16-plain.h
new file mode 100644
index 0000000000..f6593562af
--- /dev/null
+++ b/wsutil/crc16-plain.h
@@ -0,0 +1,87 @@
+/**
+ * \file crc16-plain.h
+ * Functions and types for CRC checks.
+ *
+ * Generated on Wed Mar 18 14:12:15 2009,
+ * by pycrc v0.7, http://www.tty1.net/pycrc/
+ * using the configuration:
+ * Width = 16
+ * Poly = 0x8005
+ * XorIn = 0x0000
+ * ReflectIn = True
+ * XorOut = 0x0000
+ * ReflectOut = True
+ * Algorithm = table-driven
+ * Direct = True
+ *
+ * Modified 2009-03-16 not to include <stdint.h> as our Win32 environment
+ * appears not to have it; we're using GLib types, instead.
+ *****************************************************************************/
+#ifndef __CRC____PLAIN_H__
+#define __CRC____PLAIN_H__
+
+#include "glib.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * The definition of the used algorithm.
+ *****************************************************************************/
+#define CRC_ALGO_TABLE_DRIVEN 1
+
+/**
+ * The type of the CRC values.
+ *
+ * This type must be big enough to contain at least 16 bits.
+ *****************************************************************************/
+typedef guint16 crc16_plain_t;
+
+/**
+ * Reflect all bits of a \a data word of \a data_len bytes.
+ *
+ * \param data The data word to be reflected.
+ * \param data_len The width of \a data expressed in number of bits.
+ * \return The reflected data.
+ *****************************************************************************/
+long crc16_plain_reflect(long data, size_t data_len);
+
+/**
+ * Calculate the initial crc value.
+ *
+ * \return The initial crc value.
+ *****************************************************************************/
+static inline crc16_plain_t crc16_plain_init(void)
+{
+ return 0x0000;
+}
+
+/**
+ * Update the crc value with new data.
+ *
+ * \param crc The current crc value.
+ * \param data Pointer to a buffer of \a data_len bytes.
+ * \param data_len Number of bytes in the \a data buffer.
+ * \return The updated crc value.
+ *****************************************************************************/
+crc16_plain_t crc16_plain_update(crc16_plain_t crc, const unsigned char *data, size_t data_len);
+
+/**
+ * Calculate the final crc value.
+ *
+ * \param crc The current crc value.
+ * \return The final crc value.
+ *****************************************************************************/
+static inline crc16_plain_t crc16_plain_finalize(crc16_plain_t crc)
+{
+ return crc ^ 0x0000;
+}
+
+
+#ifdef __cplusplus
+} /* closing brace for extern "C" */
+#endif
+
+#endif /* __CRC____PLAIN_H__ */