---
name: "knet_handle_compress"
section: "3"
platform: "linux"
package: "libknet-doc"
version: "1.31-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/knet_handle_compress"
---

# knet\_handle\_compress(3)

Set up packet compression.

## NAME

knet\_handle\_compress - Set up packet compression.

## SYNOPSIS

```
#include <libknet.h>

int knet_handle_compress(
    knet_handle_t                      knet_h,
    struct knet_handle_compress_cfg   *knet_handle_compress_cfg
);
```

## DESCRIPTION

knet\_handle\_compress

knet\_h - pointer to knet\_handle\_t

knet\_handle\_compress\_cfg - pointer to a knet\_handle\_compress\_cfg structure

compress\_model contains the model name. See "compress\_level" for the list of accepted values. Setting the value to "none" disables compression.

compress\_threshold tells the transmission thread to NOT compress any packets that are smaller than the value indicated. Default 100 bytes. Set to 0 to reset to the default. Set to 1 to compress everything. Max accepted value is KNET\_MAX\_PACKET\_SIZE.

compress\_level is 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) or LZ4HC\_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 lzo2 it selects the algorithm to use: 1 : lzo1x\_1\_compress (default) 11 : lzo1x\_1\_11\_compress 12 : lzo1x\_1\_12\_compress 15 : lzo1x\_1\_15\_compress 999: 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

[*knet\_handle\_remove\_datafd*(3)](/knet_handle_remove_datafd/3.md), [*knet\_handle\_get\_stats*(3)](/knet_handle_get_stats/3.md), [*knet\_host\_add*(3)](/knet_host_add/3.md), [*knet\_handle\_pmtud\_setfreq*(3)](/knet_handle_pmtud_setfreq/3.md), [*knet\_handle\_pmtud\_get*(3)](/knet_handle_pmtud_get/3.md), [*knet\_handle\_crypto\_use\_config*(3)](/knet_handle_crypto_use_config/3.md), [*knet\_host\_get\_id\_by\_host\_name*(3)](/knet_host_get_id_by_host_name/3.md), [*knet\_host\_get\_status*(3)](/knet_host_get_status/3.md), [*knet\_link\_add\_acl*(3)](/knet_link_add_acl/3.md), [*knet\_link\_get\_pong\_count*(3)](/knet_link_get_pong_count/3.md), [*knet\_link\_get\_priority*(3)](/knet_link_get_priority/3.md), [*knet\_handle\_free*(3)](/knet_handle_free/3.md), [*knet\_handle\_enable\_sock\_notify*(3)](/knet_handle_enable_sock_notify/3.md), [*knet\_handle\_get\_datafd*(3)](/knet_handle_get_datafd/3.md), [*knet\_recv*(3)](/knet_recv/3.md), [*knet\_link\_get\_ping\_timers*(3)](/knet_link_get_ping_timers/3.md), [*knet\_log\_get\_subsystem\_id*(3)](/knet_log_get_subsystem_id/3.md), [*knet\_host\_remove*(3)](/knet_host_remove/3.md), [*knet\_host\_enable\_status\_change\_notify*(3)](/knet_host_enable_status_change_notify/3.md), [*knet\_strtoaddr*(3)](/knet_strtoaddr/3.md), [*knet\_link\_rm\_acl*(3)](/knet_link_rm_acl/3.md), [*knet\_send*(3)](/knet_send/3.md), [*knet\_handle\_enable\_pmtud\_notify*(3)](/knet_handle_enable_pmtud_notify/3.md), [*knet\_handle\_get\_transport\_reconnect\_interval*(3)](/knet_handle_get_transport_reconnect_interval/3.md), [*knet\_link\_get\_enable*(3)](/knet_link_get_enable/3.md), [*knet\_link\_set\_priority*(3)](/knet_link_set_priority/3.md), [*knet\_log\_set\_loglevel*(3)](/knet_log_set_loglevel/3.md), [*knet\_handle\_get\_channel*(3)](/knet_handle_get_channel/3.md), [*knet\_link\_get\_config*(3)](/knet_link_get_config/3.md), [*knet\_link\_get\_link\_list*(3)](/knet_link_get_link_list/3.md), [*knet\_get\_transport\_list*(3)](/knet_get_transport_list/3.md), [*knet\_get\_transport\_id\_by\_name*(3)](/knet_get_transport_id_by_name/3.md), [*knet\_log\_get\_loglevel\_id*(3)](/knet_log_get_loglevel_id/3.md), [*knet\_handle\_new\_ex*(3)](/knet_handle_new_ex/3.md), [*knet\_host\_set\_name*(3)](/knet_host_set_name/3.md), [*knet\_addrtostr*(3)](/knet_addrtostr/3.md), [*knet\_handle\_setfwd*(3)](/knet_handle_setfwd/3.md), [*knet\_get\_compress\_list*(3)](/knet_get_compress_list/3.md), [*knet\_host\_set\_policy*(3)](/knet_host_set_policy/3.md), [*knet\_get\_transport\_name\_by\_id*(3)](/knet_get_transport_name_by_id/3.md), [*knet\_handle\_enable\_filter*(3)](/knet_handle_enable_filter/3.md), [*knet\_handle\_crypto\_rx\_clear\_traffic*(3)](/knet_handle_crypto_rx_clear_traffic/3.md), [*knet\_link\_get\_status*(3)](/knet_link_get_status/3.md), [*knet\_handle\_add\_datafd*(3)](/knet_handle_add_datafd/3.md), [*knet\_send\_sync*(3)](/knet_send_sync/3.md), [*knet\_log\_get\_loglevel\_name*(3)](/knet_log_get_loglevel_name/3.md), [*knet\_handle\_enable\_access\_lists*(3)](/knet_handle_enable_access_lists/3.md), [*knet\_host\_get\_host\_list*(3)](/knet_host_get_host_list/3.md), [*knet\_host\_get\_policy*(3)](/knet_host_get_policy/3.md), [*knet\_link\_set\_enable*(3)](/knet_link_set_enable/3.md), [*knet\_link\_set\_pong\_count*(3)](/knet_link_set_pong_count/3.md), [*knet\_log\_get\_subsystem\_name*(3)](/knet_log_get_subsystem_name/3.md), [*knet\_host\_get\_name\_by\_host\_id*(3)](/knet_host_get_name_by_host_id/3.md), [*knet\_link\_clear\_config*(3)](/knet_link_clear_config/3.md), [*knet\_log\_get\_loglevel*(3)](/knet_log_get_loglevel/3.md), [*knet\_handle\_new*(3)](/knet_handle_new/3.md), [*knet\_handle\_pmtud\_getfreq*(3)](/knet_handle_pmtud_getfreq/3.md), [*knet\_handle\_pmtud\_set*(3)](/knet_handle_pmtud_set/3.md), [*knet\_handle\_clear\_stats*(3)](/knet_handle_clear_stats/3.md), [*knet\_link\_set\_config*(3)](/knet_link_set_config/3.md), [*knet\_handle\_crypto\_set\_config*(3)](/knet_handle_crypto_set_config/3.md), [*knet\_handle\_crypto*(3)](/knet_handle_crypto/3.md), [*knet\_get\_crypto\_list*(3)](/knet_get_crypto_list/3.md), [*knet\_handle\_set\_transport\_reconnect\_interval*(3)](/knet_handle_set_transport_reconnect_interval/3.md), [*knet\_link\_clear\_acl*(3)](/knet_link_clear_acl/3.md), [*knet\_link\_set\_ping\_timers*(3)](/knet_link_set_ping_timers/3.md), [*knet\_link\_insert\_acl*(3)](/knet_link_insert_acl/3.md)

## COPYRIGHT

Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved.
