From owner-svn-soc-all@FreeBSD.ORG Mon Aug 5 11:37:09 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5B8762C2 for ; Mon, 5 Aug 2013 11:37:09 +0000 (UTC) (envelope-from dpl@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C9AE92897 for ; Mon, 5 Aug 2013 11:37:08 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r75Bb8gr017251 for ; Mon, 5 Aug 2013 11:37:08 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r75Bb8l4017243 for svn-soc-all@FreeBSD.org; Mon, 5 Aug 2013 11:37:08 GMT (envelope-from dpl@FreeBSD.org) Date: Mon, 5 Aug 2013 11:37:08 GMT Message-Id: <201308051137.r75Bb8l4017243@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to dpl@FreeBSD.org using -f From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r255530 - soc2013/dpl/head/lib/libzcap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Aug 2013 11:37:09 -0000 Author: dpl Date: Mon Aug 5 11:37:08 2013 New Revision: 255530 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=255530 Log: Added crc32. Modified: soc2013/dpl/head/lib/libzcap/commands.c soc2013/dpl/head/lib/libzcap/crc32.c Modified: soc2013/dpl/head/lib/libzcap/commands.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/commands.c Mon Aug 5 10:38:34 2013 (r255529) +++ soc2013/dpl/head/lib/libzcap/commands.c Mon Aug 5 11:37:08 2013 (r255530) @@ -39,33 +39,6 @@ extern pid; extern nvlist_t *sendCommand(nvlist_t *); -int -zcapcmd_deflate( strm, flush ) -z_streamp strm; -int flush; -{ - nvlist_t *nvl, *args, *result; - - if (pid == 0) - startChild(); - - if( (args = nvlist_create(0)) == NULL || - (nvl = nvlist_create(0)) == NULL ) { - perror("nvlist_create"); - return (NULL); - } - nvlist_add_number(nvl, "command", ZCAPCMD_); - - nvlist_add_binary(args, "strm", strm, sizeof(z_streamp)); - nvlist_add_number(args, "flush", flush); - nvlist_add_nvlist(nvl, "args", args); - - result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); - nvlist_destroy(result); - return(ret) -} - uLong zcapcmd_compressBound( adler1, adler2, len2 ) uLong adler1; @@ -156,7 +129,36 @@ } uLong -zcapcmd_adler32_combine( crc1, crc2, len2 ) +zcapcmd_crcr32(crc, buf, len) + uLong crc; + const Bytef *buf; + uInt len; +{ + nvlist_t *nvl, *args, *result; + uLong ret; + + if (pid == 0) + startChild(); + if( (args = nvlist_create(0)) == NULL || + (nvl = nvlist_create(0)) == NULL ) { + perror("nvlist_create"); + return (NULL); + } + nvlist_add_number(nvl, "command", ZCAPCMD_ADLER32); + nvlist_add_number(args, "crc", crc); + nvlist_add_binary(args, "buf", *buf, len); + nvlist_add_number(args, "len", len); + nvlist_add_nvlist(nvl, "args", args); + + result = sendCommand(nvl); + + ret = nvlist_take_number(result, "result"); + nvlist_destroy(result); + return(ret); +} + +uLong +zcapcmd_crc32_combine( crc1, crc2, len2 ) uLong crc1; uLong crc2; z_off64_t len2; Modified: soc2013/dpl/head/lib/libzcap/crc32.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/crc32.c Mon Aug 5 10:38:34 2013 (r255529) +++ soc2013/dpl/head/lib/libzcap/crc32.c Mon Aug 5 11:37:08 2013 (r255530) @@ -201,6 +201,7 @@ #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 /* ========================================================================= */ +zcapcmd_crc32(unsigned long crc, const unsigned char FAR *buf, uInt len); unsigned long ZEXPORT crc32(crc, buf, len) unsigned long crc; const unsigned char FAR *buf; @@ -208,31 +209,16 @@ { if (buf == Z_NULL) return 0UL; -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif /* DYNAMIC_CRC_TABLE */ - -#ifdef BYFOUR - if (sizeof(void *) == sizeof(ptrdiff_t)) { - z_crc_t endian; - - endian = 1; - if (*((unsigned char *)(&endian))) - return crc32_little(crc, buf, len); - else - return crc32_big(crc, buf, len); - } -#endif /* BYFOUR */ - crc = crc ^ 0xffffffffUL; - while (len >= 8) { - DO8; - len -= 8; - } - if (len) do { - DO1; - } while (--len); - return crc ^ 0xffffffffUL; + /* Send packets of 1MB size at most. */ + if ((sizeof(*buf)*len) > (1024*1024)) { + while( (len -= (1024*1024)) > 0) { + buf += (1024*1024)/sizeof(*buf); + crc = zcapcmd_crc32(crc, buf, len); + } + } else { + crc = zcapcmd_crc32( crc, buf, len); + } + return crc; } #ifdef BYFOUR