Scroll to navigation

knet_handle_new_ex(3) Kronosnet Programmer's Manual knet_handle_new_ex(3)


knet_handle_new_ex - create a new instance of a knet handle


#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



host_id - Each host in a knet is identified with a unique ID. when creating a new handle local host_id must be specified (0 to UINT16_MAX are all valid). It is the user's responsibility to check that the value is unique, or bad things might happen.

log_fd - Write file descriptor. If set to a value > 0, it will be used to write log packets from libknet to the application. Setting to 0 will disable logging from libknet. It is possible to enable logging at any given time (see logging API). Make sure to either read from this filedescriptor properly and/or mark it O_NONBLOCK, otherwise if the fd becomes full, libknet could block. It is strongly encouraged to use pipes (ex: pipe(2) or pipe2(2)) for logging fds due to the atomic nature of writes between fds. See also libknet test suite for reference and guidance.

default_log_level - If logfd is specified, it will initialize all subsystems to log at default_log_level value. (see logging API)

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. Inadequate buffers lead to poor performance.


on success, a new knet_handle_t is returned. on failure, NULL is returned and errno is set. knet-specific errno values: ENAMETOOLONG - socket buffers couldn't be set big enough and KNET_HANDLE_FLAG_PRIVILEGED was specified ERANGE - buffer size readback returned unexpected type


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_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_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_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_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(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_link_insert_acl(3)


Copyright (C) 2010-2020 Red Hat, Inc. All rights reserved.
2020-04-23 kronosnet