1258945Sroberto/* 2258945Sroberto * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") 3258945Sroberto * Copyright (C) 1999-2001 Internet Software Consortium. 4258945Sroberto * 5258945Sroberto * Permission to use, copy, modify, and/or distribute this software for any 6258945Sroberto * purpose with or without fee is hereby granted, provided that the above 7258945Sroberto * copyright notice and this permission notice appear in all copies. 8258945Sroberto * 9258945Sroberto * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10258945Sroberto * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11258945Sroberto * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12258945Sroberto * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13258945Sroberto * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14258945Sroberto * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15258945Sroberto * PERFORMANCE OF THIS SOFTWARE. 16258945Sroberto */ 17258945Sroberto 18258945Sroberto/* $Id: bufferlist.c,v 1.17 2007/06/19 23:47:17 tbox Exp $ */ 19258945Sroberto 20258945Sroberto/*! \file */ 21258945Sroberto 22258945Sroberto#include <config.h> 23258945Sroberto 24258945Sroberto#include <stddef.h> 25258945Sroberto 26258945Sroberto#include <isc/buffer.h> 27258945Sroberto#include <isc/bufferlist.h> 28258945Sroberto#include <isc/util.h> 29258945Sroberto 30258945Srobertounsigned int 31258945Srobertoisc_bufferlist_usedcount(isc_bufferlist_t *bl) { 32258945Sroberto isc_buffer_t *buffer; 33258945Sroberto unsigned int length; 34258945Sroberto 35258945Sroberto REQUIRE(bl != NULL); 36258945Sroberto 37258945Sroberto length = 0; 38258945Sroberto buffer = ISC_LIST_HEAD(*bl); 39258945Sroberto while (buffer != NULL) { 40258945Sroberto REQUIRE(ISC_BUFFER_VALID(buffer)); 41258945Sroberto length += isc_buffer_usedlength(buffer); 42258945Sroberto buffer = ISC_LIST_NEXT(buffer, link); 43258945Sroberto } 44258945Sroberto 45258945Sroberto return (length); 46258945Sroberto} 47258945Sroberto 48258945Srobertounsigned int 49258945Srobertoisc_bufferlist_availablecount(isc_bufferlist_t *bl) { 50258945Sroberto isc_buffer_t *buffer; 51258945Sroberto unsigned int length; 52258945Sroberto 53258945Sroberto REQUIRE(bl != NULL); 54258945Sroberto 55258945Sroberto length = 0; 56258945Sroberto buffer = ISC_LIST_HEAD(*bl); 57258945Sroberto while (buffer != NULL) { 58258945Sroberto REQUIRE(ISC_BUFFER_VALID(buffer)); 59258945Sroberto length += isc_buffer_availablelength(buffer); 60258945Sroberto buffer = ISC_LIST_NEXT(buffer, link); 61258945Sroberto } 62258945Sroberto 63258945Sroberto return (length); 64258945Sroberto} 65