xref: /netbsd-src/external/mpl/dhcp/bind/dist/lib/isc/bufferlist.c (revision 4afad4b7fa6d4a0d3dedf41d1587a7250710ae54)
1 /*	$NetBSD: bufferlist.c,v 1.1 2024/02/18 20:57:48 christos Exp $	*/
2 
3 /*
4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5  *
6  * SPDX-License-Identifier: MPL-2.0
7  *
8  * This Source Code Form is subject to the terms of the Mozilla Public
9  * License, v. 2.0.  If a copy of the MPL was not distributed with this
10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11  *
12  * See the COPYRIGHT file distributed with this work for additional
13  * information regarding copyright ownership.
14  */
15 
16 /*! \file */
17 
18 #include <stddef.h>
19 
20 #include <isc/buffer.h>
21 #include <isc/bufferlist.h>
22 #include <isc/util.h>
23 
24 unsigned int
isc_bufferlist_usedcount(isc_bufferlist_t * bl)25 isc_bufferlist_usedcount(isc_bufferlist_t *bl) {
26 	isc_buffer_t *buffer;
27 	unsigned int length;
28 
29 	REQUIRE(bl != NULL);
30 
31 	length = 0;
32 	buffer = ISC_LIST_HEAD(*bl);
33 	while (buffer != NULL) {
34 		REQUIRE(ISC_BUFFER_VALID(buffer));
35 		length += isc_buffer_usedlength(buffer);
36 		buffer = ISC_LIST_NEXT(buffer, link);
37 	}
38 
39 	return (length);
40 }
41 
42 unsigned int
isc_bufferlist_availablecount(isc_bufferlist_t * bl)43 isc_bufferlist_availablecount(isc_bufferlist_t *bl) {
44 	isc_buffer_t *buffer;
45 	unsigned int length;
46 
47 	REQUIRE(bl != NULL);
48 
49 	length = 0;
50 	buffer = ISC_LIST_HEAD(*bl);
51 	while (buffer != NULL) {
52 		REQUIRE(ISC_BUFFER_VALID(buffer));
53 		length += isc_buffer_availablelength(buffer);
54 		buffer = ISC_LIST_NEXT(buffer, link);
55 	}
56 
57 	return (length);
58 }
59