1*651350d1SDavid Howells /* RxRPC kernel service interface definitions 217926a79SDavid Howells * 3*651350d1SDavid Howells * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 417926a79SDavid Howells * Written by David Howells (dhowells@redhat.com) 517926a79SDavid Howells * 617926a79SDavid Howells * This program is free software; you can redistribute it and/or 717926a79SDavid Howells * modify it under the terms of the GNU General Public License 817926a79SDavid Howells * as published by the Free Software Foundation; either version 917926a79SDavid Howells * 2 of the License, or (at your option) any later version. 1017926a79SDavid Howells */ 1117926a79SDavid Howells 1217926a79SDavid Howells #ifndef _NET_RXRPC_H 1317926a79SDavid Howells #define _NET_RXRPC_H 1417926a79SDavid Howells 15*651350d1SDavid Howells #ifdef __KERNEL__ 16*651350d1SDavid Howells 1717926a79SDavid Howells #include <linux/rxrpc.h> 1817926a79SDavid Howells 19*651350d1SDavid Howells struct rxrpc_call; 20*651350d1SDavid Howells 21*651350d1SDavid Howells /* 22*651350d1SDavid Howells * the mark applied to socket buffers that may be intercepted 23*651350d1SDavid Howells */ 24*651350d1SDavid Howells enum { 25*651350d1SDavid Howells RXRPC_SKB_MARK_DATA, /* data message */ 26*651350d1SDavid Howells RXRPC_SKB_MARK_FINAL_ACK, /* final ACK received message */ 27*651350d1SDavid Howells RXRPC_SKB_MARK_BUSY, /* server busy message */ 28*651350d1SDavid Howells RXRPC_SKB_MARK_REMOTE_ABORT, /* remote abort message */ 29*651350d1SDavid Howells RXRPC_SKB_MARK_NET_ERROR, /* network error message */ 30*651350d1SDavid Howells RXRPC_SKB_MARK_LOCAL_ERROR, /* local error message */ 31*651350d1SDavid Howells RXRPC_SKB_MARK_NEW_CALL, /* local error message */ 32*651350d1SDavid Howells }; 33*651350d1SDavid Howells 34*651350d1SDavid Howells typedef void (*rxrpc_interceptor_t)(struct sock *, unsigned long, 35*651350d1SDavid Howells struct sk_buff *); 36*651350d1SDavid Howells extern void rxrpc_kernel_intercept_rx_messages(struct socket *, 37*651350d1SDavid Howells rxrpc_interceptor_t); 38*651350d1SDavid Howells extern struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *, 39*651350d1SDavid Howells struct sockaddr_rxrpc *, 40*651350d1SDavid Howells struct key *, 41*651350d1SDavid Howells unsigned long, 42*651350d1SDavid Howells gfp_t); 43*651350d1SDavid Howells extern int rxrpc_kernel_send_data(struct rxrpc_call *, struct msghdr *, 44*651350d1SDavid Howells size_t); 45*651350d1SDavid Howells extern void rxrpc_kernel_abort_call(struct rxrpc_call *, u32); 46*651350d1SDavid Howells extern void rxrpc_kernel_end_call(struct rxrpc_call *); 47*651350d1SDavid Howells extern bool rxrpc_kernel_is_data_last(struct sk_buff *); 48*651350d1SDavid Howells extern u32 rxrpc_kernel_get_abort_code(struct sk_buff *); 49*651350d1SDavid Howells extern int rxrpc_kernel_get_error_number(struct sk_buff *); 50*651350d1SDavid Howells extern void rxrpc_kernel_data_delivered(struct sk_buff *); 51*651350d1SDavid Howells extern void rxrpc_kernel_free_skb(struct sk_buff *); 52*651350d1SDavid Howells extern struct rxrpc_call *rxrpc_kernel_accept_call(struct socket *, 53*651350d1SDavid Howells unsigned long); 54*651350d1SDavid Howells extern int rxrpc_kernel_reject_call(struct socket *); 55*651350d1SDavid Howells 56*651350d1SDavid Howells #endif /* __KERNEL__ */ 5717926a79SDavid Howells #endif /* _NET_RXRPC_H */ 58