af_rxrpc.h (2798B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* RxRPC kernel service interface definitions 3 * 4 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8#ifndef _NET_RXRPC_H 9#define _NET_RXRPC_H 10 11#include <linux/rxrpc.h> 12#include <linux/ktime.h> 13 14struct key; 15struct sock; 16struct socket; 17struct rxrpc_call; 18 19enum rxrpc_interruptibility { 20 RXRPC_INTERRUPTIBLE, /* Call is interruptible */ 21 RXRPC_PREINTERRUPTIBLE, /* Call can be cancelled whilst waiting for a slot */ 22 RXRPC_UNINTERRUPTIBLE, /* Call should not be interruptible at all */ 23}; 24 25/* 26 * Debug ID counter for tracing. 27 */ 28extern atomic_t rxrpc_debug_id; 29 30typedef void (*rxrpc_notify_rx_t)(struct sock *, struct rxrpc_call *, 31 unsigned long); 32typedef void (*rxrpc_notify_end_tx_t)(struct sock *, struct rxrpc_call *, 33 unsigned long); 34typedef void (*rxrpc_notify_new_call_t)(struct sock *, struct rxrpc_call *, 35 unsigned long); 36typedef void (*rxrpc_discard_new_call_t)(struct rxrpc_call *, unsigned long); 37typedef void (*rxrpc_user_attach_call_t)(struct rxrpc_call *, unsigned long); 38 39void rxrpc_kernel_new_call_notification(struct socket *, 40 rxrpc_notify_new_call_t, 41 rxrpc_discard_new_call_t); 42struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *, 43 struct sockaddr_rxrpc *, 44 struct key *, 45 unsigned long, 46 s64, 47 gfp_t, 48 rxrpc_notify_rx_t, 49 bool, 50 enum rxrpc_interruptibility, 51 unsigned int); 52int rxrpc_kernel_send_data(struct socket *, struct rxrpc_call *, 53 struct msghdr *, size_t, 54 rxrpc_notify_end_tx_t); 55int rxrpc_kernel_recv_data(struct socket *, struct rxrpc_call *, 56 struct iov_iter *, size_t *, bool, u32 *, u16 *); 57bool rxrpc_kernel_abort_call(struct socket *, struct rxrpc_call *, 58 u32, int, const char *); 59void rxrpc_kernel_end_call(struct socket *, struct rxrpc_call *); 60void rxrpc_kernel_get_peer(struct socket *, struct rxrpc_call *, 61 struct sockaddr_rxrpc *); 62bool rxrpc_kernel_get_srtt(struct socket *, struct rxrpc_call *, u32 *); 63int rxrpc_kernel_charge_accept(struct socket *, rxrpc_notify_rx_t, 64 rxrpc_user_attach_call_t, unsigned long, gfp_t, 65 unsigned int); 66void rxrpc_kernel_set_tx_length(struct socket *, struct rxrpc_call *, s64); 67bool rxrpc_kernel_check_life(const struct socket *, const struct rxrpc_call *); 68u32 rxrpc_kernel_get_epoch(struct socket *, struct rxrpc_call *); 69bool rxrpc_kernel_get_reply_time(struct socket *, struct rxrpc_call *, 70 ktime_t *); 71bool rxrpc_kernel_call_is_complete(struct rxrpc_call *); 72void rxrpc_kernel_set_max_life(struct socket *, struct rxrpc_call *, 73 unsigned long); 74 75int rxrpc_sock_set_min_security_level(struct sock *sk, unsigned int val); 76 77#endif /* _NET_RXRPC_H */