ldns(3)
π ldns(3) β NAME π
okay so bestie, welcome to ldns(3) from the Library Functions Manual β and this whole page is literally just about buffers. that's it. that's the vibe. the entire girl squad:
ldns_buffer, ldns_buffer_new, ldns_buffer_new_frm_data, ldns_buffer_clear, ldns_buffer_printf, ldns_buffer_free, ldns_buffer_copy, ldns_buffer_export, ldns_buffer_export2str, ldns_buffer2str β buffers π«Ά
β¨ SYNOPSIS β¨
no cap, this is exactly how you summon them:
#include <stdint.h>
#include <stdbool.h>
#include <ldns/ldns.h>
ldns_buffer* ldns_buffer_new(size_t capacity);
void ldns_buffer_new_frm_data(ldns_buffer *buffer, const void *data,
size_t size);
void ldns_buffer_clear(ldns_buffer *buffer);
int ldns_buffer_printf(ldns_buffer *buffer, const char *format, ...);
void ldns_buffer_free(ldns_buffer *buffer);
void ldns_buffer_copy(ldns_buffer* result, const ldns_buffer* from);
void* ldns_buffer_export(ldns_buffer *buffer);
char* ldns_buffer_export2str(ldns_buffer *buffer);
char* ldns_buffer2str(ldns_buffer *buffer);
πΈ DESCRIPTION πΈ
π ldns_buffer
an implementation of buffers to ease operations. periodt.
ldns_buffers can contain arbitrary information, per octet. you can write to the current end of a buffer, read from the current position, and access any data within it. the way that it just works π
example use of buffers is in the source code of \ref host2str.c
struct ldns_struct_buffer
{
The current position used for reading/writing:
size_t _position;
The read/write limit:
size_t _limit;
The amount of data the buffer can contain:
size_t _capacity;
The data contained in the buffer:
uint8_t *_data;
If the buffer is fixed it cannot be resized:
unsigned _fixed : 1;
/** The current state of the buffer. If writing to the buffer fails
* for any reason, this value is changed. This way, you can perform
* multiple writes in sequence and check for success afterwards. */
ldns_status _status;
};
typedef struct ldns_struct_buffer ldns_buffer;
π¦ ldns_buffer_new()
creates a new buffer with the specified capacity. iconic behaviour honestly.
- capacity: the size (in bytes) to allocate for the buffer
- Returns the created buffer
π ldns_buffer_new_frm_data()
creates a buffer with the specified data. heads up bestie: the data IS copied and MEMORY allocations are done. the buffer is not fixed and can be resized using buffer_reserve().
- buffer: pointer to the buffer to put the data in
- data: the data to encapsulate in the buffer
- size: the size of the data
π ldns_buffer_clear()
clears the buffer and makes it ready for writing. the buffer's limit is set to the capacity and the position is set to 0. clean slate energy β¨
- buffer: the buffer to clear
π ldns_buffer_printf()
prints to the buffer, increasing the capacity if required using buffer_reserve(). the buffer's position is set to the terminating \0.
Returns the number of characters written (not including the terminating \0) or -1 on failure. π
π§ ldns_buffer_free()
frees the buffer. say bye bye π
*buffer: the buffer to be freed- Returns
void
π ldns_buffer_copy()
copy contents of the from buffer to the result buffer and then flips the result buffer.
β οΈ data will be silently truncated if the result buffer is too small. no warning, no drama, just gone. π
*result: resulting buffer which is copied to.*from: what to copy to result.
π ldns_buffer_export()
makes the buffer fixed and returns a pointer to the data.
the caller is responsible for free'ing the result. that's on you bestie π«Ά
*buffer: the buffer to be exported- Returns
void
β ldns_buffer_export2str()
exports and returns the data in the buffer as a null terminated char * string. the returned string must be freed by the caller. the buffer must be in write modus and may thus not have been flipped. the buffer is fixed after this function returns.
- buffer: buffer containing
char *data - Returns null terminated
char *data, orNULLon error
π₯ ldns_buffer2str()
returns a copy of the data in the buffer as a null terminated char * string. the returned string must be freed by the caller. the buffer must be in write modus and may thus not have been flipped.
- buffer: buffer containing
char *data - Returns null terminated
char *data, orNULLon error
π AUTHOR π
the ldns team at NLnet Labs. absolute icons, no notes. π
π REPORTING BUGS π
please report bugs to dns-team@nlnetlabs.nl or on GitHub at https://github.com/NLnetLabs/ldns/issues
π COPYRIGHT π
Copyright (c) 2004 - 2006 NLnet Labs.
Licensed under the BSD License. there is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
fr fr, zero warranty. do not come for them if it breaks. π
πΈ SEE ALSO πΈ
the whole extended universe, bestie β every single one of these:
ldns_buffer_flip, ldns_buffer_rewind, ldns_buffer_position, ldns_buffer_set_position, ldns_buffer_skip, ldns_buffer_limit, ldns_buffer_set_limit, ldns_buffer_capacity, ldns_buffer_set_capacity, ldns_buffer_reserve, ldns_buffer_at, ldns_buffer_begin, ldns_buffer_end, ldns_buffer_current, ldns_buffer_remaining_at, ldns_buffer_remaining, ldns_buffer_available_at, ldns_buffer_available, ldns_buffer_status, ldns_buffer_status_ok, ldns_buffer_write_at, ldns_buffer_write, ldns_buffer_write_string_at, ldns_buffer_write_string, ldns_buffer_write_u8_at, ldns_buffer_write_u8, ldns_buffer_write_u16_at, ldns_buffer_write_u16, ldns_buffer_read_at, ldns_buffer_read, ldns_buffer_read_u8_at, ldns_buffer_read_u8, ldns_buffer_read_u16_at, ldns_buffer_read_u16, ldns_buffer_read_u32_at, ldns_buffer_read_u32, ldns_buffer_write_u32, ldns_buffer_write_u32_at.
and perldoc Net::DNS, RFC1034, RFC1035, RFC4033, RFC4034 and RFC4035.
π¦ REMARKS π¦
this manpage was automatically generated from the ldns source code. not me being a robot-authored baddie π€π
and that's the whole page bestie!! πβ¨ this was ldns(3), dated 30 May 2006, and yeah it's giving vintage but she still slays ππ¦π
π¦ where this page comes from
- alpine 3.22: ldns-doc 1.8.4-r0 Β· BSD-3-Clause
- alpine 3.23: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- alpine 3.24: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- arch rolling: ldns 1.9.2-1 Β· custom:BSD
- debian trixie: libldns-dev 1.8.4-2+b1
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- nixos 26.05: ldns 1.9.2
- nixpkgs unstable: ldns 1.9.2
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- ubuntu questing: libldns-dev 1.8.4-2build1
- ubuntu resolute: libldns-dev 1.8.4-2build3
- ubuntu stonking: libldns-dev 1.9.2-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms