KNET_HAND...CK_NOTIFY(3)
π KNET_HAND...CK_NOTIFY(3) π
okay bestie, welcome to the Kronosnet Programmer's Manual β this is the page for knet_handle_enable_sock_notify, and it's lowkey one of the most important ones bc it's literally how you find out your sockets are having a moment π«Ά
β¨ NAME β¨
knet_handle_enable_sock_notify β register a callback so you can get notified about socket events, no cap π£
πΈ SYNOPSIS πΈ
#include <libknet.h>
int knet_handle_enable_sock_notify(
knet_handle_t knet_h,
void *sock_notify_fn_private_data,
void(*)(void *private_data, int datafd, int8_t channel, uint8_t tx_rx, int error, int errorno) sock_notify_fn
);
π¦ DESCRIPTION π¦
So the function is knet_handle_enable_sock_notify, and here's the whole vibe:
knet_hβ pointer toknet_handle_tπ that's your handle, your main character, the whole thing.sock_notify_fn_private_dataβ avoidpointer to data you can use to identify the callback. like a little name tag for your callback so you know who's who at the party πsock_notify_fnβ a callback function that gets invoked every single time a socket in thedatafdpool reports an error (-1) or an end of read (0) (seesocket.7).
β οΈ This function MUST NEVER block or add substantial delays. Not even a little. It's giving "quick check-in", not "let me think about it". π
The callback is invoked in an internal unlocked area β that's on purpose, bestie β so that calls to knet_handle_add_datafd/knet_handle_remove_datafd are allowed to swap/replace the bad fd. β¨
And here's the detail that trips people up: if both err and errno are 0, that means the socket has received a 0 byte packet (EOF?). π
The callback function must either remove the fd from knet (by calling knet_handle_remove_fd()) or dup a new fd in its place. Failure to do this can cause problems. like, actual problems. don't skip this step fr fr π
β RETURN VALUE β
knet_handle_enable_sock_notify returns 0 on success, -1 on error, and errno is set. periodt. π
π SEE ALSO π
the whole friend group showed up, and we are obsessed:
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_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_handle_new_ex(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 lil manual page is from kronosnet, dated 2026-07-20 β slay, go forth and never block in your callback π§β¨
π¦ 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