.\" Automatically generated man page, do not edit .TH KNET_HANDLE_ENABLE_SOCK_NOTIFY 3 2023-09-27 "kronosnet" "Kronosnet Programmer's Manual" .SH NAME knet_handle_enable_sock_notify \- Register a callback to receive socket events. .SH SYNOPSIS .nf .B #include .sp \fBint knet_handle_enable_sock_notify\fP( \fBknet_handle_t \fP\fIknet_h\fP, \fBvoid *\fP\fIsock_notify_fn_private_data\fP, \fBvoid(*)(void *private_data, int datafd, int8_t channel, uint8_t tx_rx, int error, int errorno) \fP\fIsock_notify_fn\fP ); .fi .SH DESCRIPTION .PP knet_handle_enable_sock_notify .PP knet_h - pointer to knet_handle_t .PP sock_notify_fn_private_data void pointer to data that can be used to identify the callback. .PP sock_notify_fn A callback function that is invoked every time a socket in the datafd pool will report an error (-1) or an end of read (0) (see socket.7). This function MUST NEVER block or add substantial delays. The callback is invoked in an internal unlocked area to allow calls to knet_handle_add_datafd/knet_handle_remove_datafd to swap/replace the bad fd. if both err and errno are 0, it means that the socket has received a 0 byte packet (EOF?). The callback function must either remove the fd from knet (by calling knet_handle_remove_fd()) or dup a new fd in its place. Failure to do this can cause problems. .RE .SH RETURN VALUE .PP knet_handle_enable_sock_notify returns 0 on success -1 on error and errno is set. .PP .SH SEE ALSO .PP .nh .ad l \fIknet_handle_remove_datafd\fR(3), \fIknet_handle_get_stats\fR(3), \fIknet_host_add\fR(3), \fIknet_handle_pmtud_setfreq\fR(3), \fIknet_handle_pmtud_get\fR(3), \fIknet_handle_crypto_use_config\fR(3), \fIknet_host_get_id_by_host_name\fR(3), \fIknet_host_get_status\fR(3), \fIknet_link_add_acl\fR(3), \fIknet_link_get_pong_count\fR(3), \fIknet_link_get_priority\fR(3), \fIknet_handle_free\fR(3), \fIknet_handle_get_datafd\fR(3), \fIknet_recv\fR(3), \fIknet_link_get_ping_timers\fR(3), \fIknet_log_get_subsystem_id\fR(3), \fIknet_host_remove\fR(3), \fIknet_host_enable_status_change_notify\fR(3), \fIknet_strtoaddr\fR(3), \fIknet_link_rm_acl\fR(3), \fIknet_send\fR(3), \fIknet_handle_enable_pmtud_notify\fR(3), \fIknet_handle_get_transport_reconnect_interval\fR(3), \fIknet_link_get_enable\fR(3), \fIknet_link_set_priority\fR(3), \fIknet_log_set_loglevel\fR(3), \fIknet_handle_get_channel\fR(3), \fIknet_link_get_config\fR(3), \fIknet_link_get_link_list\fR(3), \fIknet_get_transport_list\fR(3), \fIknet_get_transport_id_by_name\fR(3), \fIknet_log_get_loglevel_id\fR(3), \fIknet_handle_new_ex\fR(3), \fIknet_host_set_name\fR(3), \fIknet_addrtostr\fR(3), \fIknet_handle_setfwd\fR(3), \fIknet_get_compress_list\fR(3), \fIknet_host_set_policy\fR(3), \fIknet_get_transport_name_by_id\fR(3), \fIknet_handle_enable_filter\fR(3), \fIknet_handle_crypto_rx_clear_traffic\fR(3), \fIknet_handle_compress\fR(3), \fIknet_link_get_status\fR(3), \fIknet_handle_add_datafd\fR(3), \fIknet_send_sync\fR(3), \fIknet_log_get_loglevel_name\fR(3), \fIknet_handle_enable_access_lists\fR(3), \fIknet_host_get_host_list\fR(3), \fIknet_host_get_policy\fR(3), \fIknet_link_set_enable\fR(3), \fIknet_link_set_pong_count\fR(3), \fIknet_log_get_subsystem_name\fR(3), \fIknet_host_get_name_by_host_id\fR(3), \fIknet_link_clear_config\fR(3), \fIknet_log_get_loglevel\fR(3), \fIknet_handle_new\fR(3), \fIknet_handle_pmtud_getfreq\fR(3), \fIknet_handle_pmtud_set\fR(3), \fIknet_handle_clear_stats\fR(3), \fIknet_link_set_config\fR(3), \fIknet_handle_crypto_set_config\fR(3), \fIknet_handle_crypto\fR(3), \fIknet_get_crypto_list\fR(3), \fIknet_handle_set_transport_reconnect_interval\fR(3), \fIknet_link_clear_acl\fR(3), \fIknet_link_set_ping_timers\fR(3), \fIknet_link_insert_acl\fR(3) .ad .hy .SH "COPYRIGHT" .PP Copyright (C) 2010-2023 Red Hat, Inc. All rights reserved.