KNET_SEND_SYNC(3)
π KNET_SEND_SYNC π
okay so you're reading the Kronosnet Programmer's Manual page for knet_send_sync(3) and honestly? you picked a good one bestie, this is the synchronous send, the one that actually waits and tells you when things went wrong instead of ghosting you like the async layer does. π
β¨ NAME β¨
knet_send_sync β synchronously send data to knet nodes. no cap, that's the whole job. π¦
β¨ SYNOPSIS β¨
#include <libknet.h>
int knet_send_sync(
knet_handle_t knet_h,
const char *buff,
const size_t buff_len,
const int8_t channel
);
β¨ DESCRIPTION β¨
bestie, let's meet the cast first:
knet_hβ pointer toknet_handle_t. your main character handle, the one holding everything together π«Άbuffβ pointer to the buffer of data to send. the actual goods π¦buff_lenβ length of data to send. how much of the goods, exactly πchannelβ data channel to use. checkknet_handle_add_datafd(3)for the deets, iykyk
okay now the tea β. All knet RX/TX operations are async for performance reasons. that's the default vibe, it's fast, it's unbothered, it does not care about your feelings.
BUT. some applications genuinely need a sync version of data transmission, and they need to actually receive errors when delivery to another host fails. not just vibes and hope. and that's exactly what knet_send_sync is for, periodt.
so here's the iconique part: knet_send_sync bypasses the whole TX async layer and delivers data directly to the link layer, returning errors accordingly. it's giving direct, no middleman, no drama β¨
and now the boundaries, because we respect them:
knet_send_syncsends only one packet to one host at a time.- It does NOT support multiple destinations or multicast packets. π«
- The decision is still based on
dst_host_filter_fn.
β¨ RETURN VALUE β¨
knet_send_sync returns 0 on success and -1 on error. slay when it's 0, sad girl hours when it's -1 π
in addition to normal sendmmsg errors, knet_send_sync can fail due to:
ECANCELEDβ data forward is disabledEFAULTβdst_host_filterfatal errorEINVALβdst_host_filterdid not providedst_host_ids_entrieson unicast pcktsE2BIGβdst_host_filterdid return more than onedst_host_ids_entrieson unicast pcktsENOMSGβ received unknown message typeEHOSTDOWNβ unicast pckt cannot be delivered because dest host is not connected yetECHILDβ crypto failedEAGAINβsendmmsgwas unable to send all messages and there was no progress during retryENETDOWNβ a packet filter was not installed (necessary forknet_send_sync, but notknet_send)
π¨ lowkey important: that last one is a real difference between the two functions, bestie.knet_send_syncneeds a packet filter installed andknet_senddoes not. don't come for me, it's in the docs.
β¨ SEE ALSO β¨
the whole squad, fr fr β go read these when you're done here ππΈ
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_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_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.
that's the whole page, bestie, you ate it π β¨
kronosnet Β· 2026-07-20 Β· KNET_SEND_SYNC(3) β mwah, go ship something iconic ππ
π¦ 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