KNET_HANDLE_COMPRESS(3)
π KNET_HANDLE_COMPRESS π
okay bestie so this is knet_handle_compress, straight out of the Kronosnet Programmer's Manual (that's the KNET_HANDLE_COMPRESS(3) one, section 3, we love a library-call moment) β¨
β¨ NAME β¨
knet_handle_compress β set up packet compression. that's it, that's the whole vibe π
π¦ SYNOPSIS π¦
#include <libknet.h>
int knet_handle_compress(
knet_handle_t knet_h,
struct knet_handle_compress_cfg *knet_handle_compress_cfg
);
πΈ DESCRIPTION πΈ
so knet_handle_compress is the function, and here's what you're handing it:
knet_hβ pointer toknet_handle_tπknet_handle_compress_cfgβ pointer to aknet_handle_compress_cfgstructure
now let's talk about what's inside that struct, because this is the main character energy part:
compress_modelholds the model name. for the list of accepted values, go look atcompress_level. set it to"none"and compression is disabled, periodt. πcompress_thresholdtells the transmission thread to NOT compress any packets smaller than the value you give it. default is100bytes. set it to0to reset back to the default. set it to1to compress literally everything. the max accepted value isKNET_MAX_PACKET_SIZE. πcompress_levelis the"level"parameter for most models:zlib:0(no compression),1(minimal) ..9(max compression).lz4:1(max compression)...9(fastest compression).lz4hc:1(min compression) ...LZ4HC_MAX_CLEVEL(16) orLZ4HC_CLEVEL_MAX(12) depending on the version of lz4hc libknet was built with.lzma:0(minimal) ..9(max compression)bzip2:1(minimal) ..9(max compression)- For
lzo2it selects the algorithm to use:1:lzo1x_1_compress(default)11:lzo1x_1_11_compress12:lzo1x_1_12_compress15:lzo1x_1_15_compress999:lzo1x_999_compress- Other values select the default algorithm.
please refer to the documentation of the respective compression library for guidance about setting this value π«Ά
Implementation notes: it is possible to enable/disable compression at any time.
nodes can be using a different compression algorithm at any time.
knet does NOT implement the compression algorithm directly. it relies on external libraries for this functionality. please read the libraries man pages to figure out which algorithm/compression level is best for the data you are planning to transmit. π₯
π STRUCTURES π
structure passed into knet_handle_compress() to tell knet what type of compression to use for this communiction π
struct knet_handle_compress_cfg {
char compress_model[16]; /* Compression library to use, bzip2 etc... */
/*
* Threshold. Packets smaller than this will not be compressed
*/
uint32_t compress_threshold;
/*
* Passed into the compression library as an indication of the level of
* compression to apply
*/
int compress_level;
};
β RETURN VALUE β
knet_handle_compress returns 0 on success, -1 on error, and errno is set. EINVAL means that either the model or the level are not supported. π
π SEE ALSO π
the whole friend group, fr fr:
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_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. π«Ά
okay that's the whole page, no cap π this one's from the kronosnet squad, dated 2026-07-20, and yes it really is KNET_HANDLE_COMPRESS(3) β go forth and compress responsibly, bestie β¨ππ¦
π¦ 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