at v6.2 76 lines 2.8 kB view raw
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; 18enum rxrpc_abort_reason; 19 20enum rxrpc_interruptibility { 21 RXRPC_INTERRUPTIBLE, /* Call is interruptible */ 22 RXRPC_PREINTERRUPTIBLE, /* Call can be cancelled whilst waiting for a slot */ 23 RXRPC_UNINTERRUPTIBLE, /* Call should not be interruptible at all */ 24}; 25 26/* 27 * Debug ID counter for tracing. 28 */ 29extern atomic_t rxrpc_debug_id; 30 31typedef void (*rxrpc_notify_rx_t)(struct sock *, struct rxrpc_call *, 32 unsigned long); 33typedef void (*rxrpc_notify_end_tx_t)(struct sock *, struct rxrpc_call *, 34 unsigned long); 35typedef void (*rxrpc_notify_new_call_t)(struct sock *, struct rxrpc_call *, 36 unsigned long); 37typedef void (*rxrpc_discard_new_call_t)(struct rxrpc_call *, unsigned long); 38typedef void (*rxrpc_user_attach_call_t)(struct rxrpc_call *, unsigned long); 39 40void rxrpc_kernel_new_call_notification(struct socket *, 41 rxrpc_notify_new_call_t, 42 rxrpc_discard_new_call_t); 43struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *, 44 struct sockaddr_rxrpc *, 45 struct key *, 46 unsigned long, 47 s64, 48 gfp_t, 49 rxrpc_notify_rx_t, 50 bool, 51 enum rxrpc_interruptibility, 52 unsigned int); 53int rxrpc_kernel_send_data(struct socket *, struct rxrpc_call *, 54 struct msghdr *, size_t, 55 rxrpc_notify_end_tx_t); 56int rxrpc_kernel_recv_data(struct socket *, struct rxrpc_call *, 57 struct iov_iter *, size_t *, bool, u32 *, u16 *); 58bool rxrpc_kernel_abort_call(struct socket *, struct rxrpc_call *, 59 u32, int, enum rxrpc_abort_reason); 60void rxrpc_kernel_end_call(struct socket *, struct rxrpc_call *); 61void rxrpc_kernel_get_peer(struct socket *, struct rxrpc_call *, 62 struct sockaddr_rxrpc *); 63bool rxrpc_kernel_get_srtt(struct socket *, struct rxrpc_call *, u32 *); 64int rxrpc_kernel_charge_accept(struct socket *, rxrpc_notify_rx_t, 65 rxrpc_user_attach_call_t, unsigned long, gfp_t, 66 unsigned int); 67void rxrpc_kernel_set_tx_length(struct socket *, struct rxrpc_call *, s64); 68bool rxrpc_kernel_check_life(const struct socket *, const struct rxrpc_call *); 69u32 rxrpc_kernel_get_epoch(struct socket *, struct rxrpc_call *); 70void rxrpc_kernel_set_max_life(struct socket *, struct rxrpc_call *, 71 unsigned long); 72 73int rxrpc_sock_set_min_security_level(struct sock *sk, unsigned int val); 74int rxrpc_sock_set_security_keyring(struct sock *, struct key *); 75 76#endif /* _NET_RXRPC_H */