1knet_send_sync(3) Kronosnet Programmer's Manual knet_send_sync(3)
2
3
4
6 knet_send_sync - Synchronously send data to knet nodes.
7
9 #include <libknet.h>
10
11 int knet_send_sync(
12 knet_handle_t knet_h,
13 const char *buff,
14 const size_t buff_len,
15 const int8_t channel
16 );
17
19 knet_send_sync
20
21 knet_h - pointer to knet_handle_t
22
23 buff - pointer to the buffer of data to send
24
25 buff_len - length of data to send
26
27 channel - data channel to use (see knet_handle_add_datafd(3))
28
29 All knet RX/TX operations are async for performance reasons. There are
30 applications that might need a sync version of data transmission and
31 receive errors in case of failure to deliver to another host.
32 knet_send_sync bypasses the whole TX async layer and delivers data
33 directly to the link layer, and returns errors accordingly.
34 knet_send_sync sends only one packet to one host at a time. It does NOT
35 support multiple destinations or multicast packets. Decision is still
36 based on dst_host_filter_fn.
37
39 knet_send_sync returns 0 on success and -1 on error. In addition to
40 normal sendmmsg errors, knet_send_sync can fail due to: ECANCELED -
41 data forward is disabled
42
43 EFAULT - dst_host_filter fatal error
44
45 EINVAL - dst_host_filter did not provide dst_host_ids_entries on
46 unicast pckts
47
48 E2BIG - dst_host_filter did return more than one
49 dst_host_ids_entries on unicast pckts
50
51 ENOMSG - received unknown message type
52
53 EHOSTDOWN - unicast pckt cannot be delivered because dest host is not
54 connected yet
55
56 ECHILD - crypto failed
57
58 EAGAIN - sendmmsg was unable to send all messages and there was no
59 progress during retry
60
62 knet_handle_remove_datafd(3), knet_handle_get_stats(3),
63 knet_host_add(3), knet_handle_pmtud_setfreq(3),
64 knet_handle_pmtud_get(3), knet_host_get_id_by_host_name(3),
65 knet_host_get_status(3), knet_link_add_acl(3),
66 knet_link_get_pong_count(3), knet_link_get_priority(3),
67 knet_handle_free(3), knet_handle_enable_sock_notify(3),
68 knet_handle_get_datafd(3), knet_recv(3), knet_link_get_ping_timers(3),
69 knet_log_get_subsystem_id(3), knet_host_remove(3),
70 knet_host_enable_status_change_notify(3), knet_strtoaddr(3),
71 knet_link_rm_acl(3), knet_send(3), knet_handle_enable_pmtud_notify(3),
72 knet_handle_get_transport_reconnect_interval(3),
73 knet_link_get_enable(3), knet_link_set_priority(3),
74 knet_log_set_loglevel(3), knet_handle_get_channel(3),
75 knet_link_get_config(3), knet_link_get_link_list(3),
76 knet_get_transport_list(3), knet_get_transport_id_by_name(3),
77 knet_log_get_loglevel_id(3), knet_handle_new_ex(3),
78 knet_host_set_name(3), knet_addrtostr(3), knet_handle_setfwd(3),
79 knet_get_compress_list(3), knet_host_set_policy(3),
80 knet_get_transport_name_by_id(3), knet_handle_enable_filter(3),
81 knet_handle_compress(3), knet_link_get_status(3),
82 knet_handle_add_datafd(3), knet_log_get_loglevel_name(3),
83 knet_handle_enable_access_lists(3), knet_host_get_host_list(3),
84 knet_host_get_policy(3), knet_link_set_enable(3),
85 knet_link_set_pong_count(3), knet_log_get_subsystem_name(3),
86 knet_host_get_name_by_host_id(3), knet_link_clear_config(3),
87 knet_log_get_loglevel(3), knet_handle_new(3),
88 knet_handle_pmtud_getfreq(3), knet_handle_pmtud_set(3),
89 knet_handle_clear_stats(3), knet_link_set_config(3),
90 knet_handle_crypto(3), knet_get_crypto_list(3),
91 knet_handle_set_transport_reconnect_interval(3),
92 knet_link_clear_acl(3), knet_link_set_ping_timers(3),
93 knet_link_insert_acl(3)
94
96 Copyright (C) 2010-2019 Red Hat, Inc. All rights reserved.
97
98
99
100kronosnet 2019-10-16 knet_send_sync(3)