From 4132d40e50c576ae6cf9e03e4f552ea091035626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Tue, 30 Aug 2011 13:46:42 +0000 Subject: Move all crc routines to libwsutil. This way we can use the crc routines in wiretap. svn path=/trunk/; revision=38800 --- wsutil/crc6.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 wsutil/crc6.c (limited to 'wsutil/crc6.c') diff --git a/wsutil/crc6.c b/wsutil/crc6.c new file mode 100644 index 0000000000..333a1a51cd --- /dev/null +++ b/wsutil/crc6.c @@ -0,0 +1,53 @@ +/* + * crc6.c + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "crc6.h" + + +guint16 update_crc6_by_bytes(guint16 crc6, guint8 byte1, guint8 byte2) { + int bit; + guint32 remainder = ( byte1<<8 | byte2 ) << 6; + guint32 polynomial = 0x6F << 15; + + for (bit = 15; + bit >= 0; + --bit) + { + if (remainder & (0x40 << bit)) + { + remainder ^= polynomial; + } + polynomial >>= 1; + } + + return (guint16)(remainder ^ crc6); +} + + -- cgit v1.2.1