KNET_HANDLE_NEW_EX(3)
π KNET_HANDLE_NEW_EX(3) π
okay so bestie, welcome to the Kronosnet Programmer's Manual β this is the page for knet_handle_new_ex(3), and it's literally the moment your whole knet journey begins. buckle up π
β¨ NAME β¨
knet_handle_new_ex β create a new instance of a knet handle
πΈ SYNOPSIS πΈ
#include <libknet.h>
knet_handle_t knet_handle_new_ex(
knet_node_id_t host_id,
int log_fd,
uint8_t default_log_level,
uint64_t flags
);
π¦ DESCRIPTION π¦
knet_handle_new_ex β yes that's the whole name, she's the whole vibe, the main character fr fr. here's the tea on every single parameter π
host_idβ every host in a knet is identified by a unique ID. when you're creating a new handle, you must specify your localhost_id(and bestie,0toUINT16_MAXare all valid, so you've got range π ). but listen β it is the user's responsibility to check that the value is unique, or bad things might happen. and by "bad things" we mean bad things. not me warning you twice πlog_fdβ the write file descriptor. if you set it to a value> 0, it'll be used to write log packets from libknet to your application. set it to0and logging from libknet is disabled. ngl you can enable logging at any given time later (see the logging API, she's right there β¨). now the important part: make sure to either read from this filedescriptor properly and/or mark itO_NONBLOCK, otherwise if the fd becomes full, libknet could block. π it is strongly encouraged to use pipes (ex:pipe(2)orpipe2(2)) for logging fds due to the atomic nature of writes between fds. see also the libknet test suite for reference and guidance. and heads up β the caller is responsible for management of the FD. eg. knet will not close it whenknet_handle_free(3)is called. she's yours, you take care of her π«Άdefault_log_levelβ iflogfdis specified, it will initialize all subsystems to log at thedefault_log_levelvalue. (see the logging API again, obsessed β¨)flagsβ bitwise OR of some of the following flags:KNET_HANDLE_FLAG_PRIVILEGED: use privileged operations setting up the communication sockets. if disabled, failure to acquire large enough socket buffers is ignored but logged. and bestie, inadequate buffers lead to poor performance. periodt.
π RETURN VALUE π
on success, a new knet_handle_t is returned. iconic. π
on failure, NULL is returned and errno is set. and here are the knet-specific errno values so you know exactly what went wrong:
ENAMETOOLONGβ socket buffers couldn't be set big enough andKNET_HANDLE_FLAG_PRIVILEGEDwas specifiedERANGEβ buffer size readback returned unexpected type
π SEE ALSO π
the whole friend group, no cap β go read all of them:
knet_handle_remove_datafd(3)knet_handle_get_stats(3)knet_host_add(3)knet_handle_pmtud_setfreq(3)knet_handle_pmtud_get(3)knet_handle_crypto_use_config(3)knet_host_get_id_by_host_name(3)knet_host_get_status(3)knet_link_add_acl(3)knet_link_get_pong_count(3)knet_link_get_priority(3)knet_handle_free(3)knet_handle_enable_sock_notify(3)knet_handle_get_datafd(3)knet_recv(3)knet_link_get_ping_timers(3)knet_log_get_subsystem_id(3)knet_host_remove(3)knet_host_enable_status_change_notify(3)knet_strtoaddr(3)knet_link_rm_acl(3)knet_send(3)knet_handle_enable_pmtud_notify(3)knet_get_crypto_cipher_list(3)knet_handle_get_transport_reconnect_interval(3)knet_link_get_enable(3)knet_link_set_priority(3)knet_log_set_loglevel(3)knet_handle_get_channel(3)knet_link_get_config(3)knet_link_get_link_list(3)knet_get_crypto_hash_list(3)knet_get_transport_list(3)knet_get_transport_id_by_name(3)knet_log_get_loglevel_id(3)knet_host_set_name(3)knet_addrtostr(3)knet_handle_setfwd(3)knet_get_compress_list(3)knet_host_set_policy(3)knet_get_transport_name_by_id(3)knet_handle_enable_filter(3)knet_handle_crypto_rx_clear_traffic(3)knet_handle_compress(3)knet_link_get_status(3)knet_handle_add_datafd(3)knet_send_sync(3)knet_log_get_loglevel_name(3)knet_handle_enable_access_lists(3)knet_host_get_host_list(3)knet_host_get_policy(3)knet_link_set_enable(3)knet_link_set_pong_count(3)knet_log_get_subsystem_name(3)knet_host_get_name_by_host_id(3)knet_link_clear_config(3)knet_log_get_loglevel(3)knet_handle_new(3)knet_handle_pmtud_getfreq(3)knet_handle_pmtud_set(3)knet_handle_clear_stats(3)knet_link_set_config(3)knet_handle_crypto_set_config(3)knet_handle_crypto(3)knet_get_crypto_list(3)knet_handle_set_transport_reconnect_interval(3)knet_link_clear_acl(3)knet_link_set_ping_timers(3)knet_handle_setprio_dscp(3)knet_link_insert_acl(3)
π COPYRIGHT π
Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved.
and that's the page bestie!! π this waskronosnet, dated2026-07-20, filed underKNET_HANDLE_NEW_EX(3). go make that handle, slay, and don't forget to check yourhost_iduniqueness or it's giving chaos πβ¨
π¦ where this page comes from
- fedora 43: libknet1-devel 1.35-1.fc43 Β· LGPL-2.1-or-later
- fedora 43: libknet1-devel 1.35-1.fc43 Β· LGPL-2.1-or-later
- fedora 44: libknet1-devel 1.35-1.fc44 Β· LGPL-2.1-or-later
- fedora 44: libknet1-devel 1.35-1.fc44 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms