1KNET_SEND_SYNC(3)        Kronosnet Programmer's Manual       KNET_SEND_SYNC(3)
2
3
4

NAME

6       knet_send_sync - Synchronously send data to knet nodes.
7
8

SYNOPSIS

10       #include <libknet.h>
11
12       int knet_send_sync(
13           knet_handle_t  knet_h,
14           const char    *buff,
15           const size_t   buff_len,
16           const int8_t   channel
17       );
18

DESCRIPTION

20       knet_send_sync
21
22       knet_h - pointer to knet_handle_t
23
24       buff - pointer to the buffer of data to send
25
26       buff_len - length of data to send
27
28       channel - data channel to use (see knet_handle_add_datafd(3))
29
30       All  knet RX/TX operations are async for performance reasons. There are
31       applications that might need a sync version of  data  transmission  and
32       receive  errors  in  case  of  failure  to  deliver  to  another  host.
33       knet_send_sync bypasses the whole TX async layer and delivers data  di‐
34       rectly   to   the   link   layer,   and   returns  errors  accordingly.
35       knet_send_sync sends only one packet to one host at a time. It does NOT
36       support  multiple  destinations or multicast packets. Decision is still
37       based on dst_host_filter_fn.
38

RETURN VALUE

40       knet_send_sync returns 0 on success and -1 on  error.  In  addition  to
41       normal sendmmsg errors, knet_send_sync can fail due to:
42
43       ECANCELED  - data forward is disabled
44
45       EFAULT     - dst_host_filter fatal error
46
47       EINVAL      -  dst_host_filter  did not provide dst_host_ids_entries on
48       unicast pckts
49
50       E2BIG      - dst_host_filter did return more than one  dst_host_ids_en‐
51       tries on unicast pckts
52
53       ENOMSG     - received unknown message type
54
55       EHOSTDOWN   - unicast pckt cannot be delivered because dest host is not
56       connected yet
57
58       ECHILD     - crypto failed
59
60       EAGAIN     - sendmmsg was unable to send all messages and there was  no
61       progress during retry
62
63       ENETDOWN     -  a  packet  filter  was  not  installed  (necessary  for
64       knet_send_sync, but not knet_send)
65

SEE ALSO

67       knet_handle_remove_datafd(3), knet_handle_get_stats(3),
68       knet_host_add(3), knet_handle_pmtud_setfreq(3),
69       knet_handle_pmtud_get(3), knet_handle_crypto_use_config(3),
70       knet_host_get_id_by_host_name(3), knet_host_get_status(3),
71       knet_link_add_acl(3), knet_link_get_pong_count(3),
72       knet_link_get_priority(3), knet_handle_free(3),
73       knet_handle_enable_sock_notify(3), knet_handle_get_datafd(3),
74       knet_recv(3), knet_link_get_ping_timers(3),
75       knet_log_get_subsystem_id(3), knet_host_remove(3),
76       knet_host_enable_status_change_notify(3), knet_strtoaddr(3),
77       knet_link_rm_acl(3), knet_send(3), knet_handle_enable_pmtud_notify(3),
78       knet_handle_get_transport_reconnect_interval(3),
79       knet_link_get_enable(3), knet_link_set_priority(3),
80       knet_log_set_loglevel(3), knet_handle_get_channel(3),
81       knet_link_get_config(3), knet_link_get_link_list(3),
82       knet_get_transport_list(3), knet_get_transport_id_by_name(3),
83       knet_log_get_loglevel_id(3), knet_handle_new_ex(3),
84       knet_host_set_name(3), knet_addrtostr(3), knet_handle_setfwd(3),
85       knet_get_compress_list(3), knet_host_set_policy(3),
86       knet_get_transport_name_by_id(3), knet_handle_enable_filter(3),
87       knet_handle_crypto_rx_clear_traffic(3), knet_handle_compress(3),
88       knet_link_get_status(3), knet_handle_add_datafd(3),
89       knet_log_get_loglevel_name(3), knet_handle_enable_access_lists(3),
90       knet_host_get_host_list(3), knet_host_get_policy(3),
91       knet_link_set_enable(3), knet_link_set_pong_count(3),
92       knet_log_get_subsystem_name(3), knet_host_get_name_by_host_id(3),
93       knet_link_clear_config(3), knet_log_get_loglevel(3),
94       knet_handle_new(3), knet_handle_pmtud_getfreq(3),
95       knet_handle_pmtud_set(3), knet_handle_clear_stats(3),
96       knet_link_set_config(3), knet_handle_crypto_set_config(3),
97       knet_handle_crypto(3), knet_get_crypto_list(3),
98       knet_handle_set_transport_reconnect_interval(3),
99       knet_link_clear_acl(3), knet_link_set_ping_timers(3),
100       knet_link_insert_acl(3)
101
103       Copyright (C) 2010-2022 Red Hat, Inc. All rights reserved.
104
105
106
107kronosnet                         2022-05-30                 KNET_SEND_SYNC(3)
Impressum