root/include/linux/sunrpc/svcsock.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. svc_sock_reclen
  2. svc_sock_final_rec

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * linux/include/linux/sunrpc/svcsock.h
   4  *
   5  * RPC server socket I/O.
   6  *
   7  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
   8  */
   9 
  10 #ifndef SUNRPC_SVCSOCK_H
  11 #define SUNRPC_SVCSOCK_H
  12 
  13 #include <linux/sunrpc/svc.h>
  14 #include <linux/sunrpc/svc_xprt.h>
  15 
  16 /*
  17  * RPC server socket.
  18  */
  19 struct svc_sock {
  20         struct svc_xprt         sk_xprt;
  21         struct socket *         sk_sock;        /* berkeley socket layer */
  22         struct sock *           sk_sk;          /* INET layer */
  23 
  24         /* We keep the old state_change and data_ready CB's here */
  25         void                    (*sk_ostate)(struct sock *);
  26         void                    (*sk_odata)(struct sock *);
  27         void                    (*sk_owspace)(struct sock *);
  28 
  29         /* private TCP part */
  30         /* On-the-wire fragment header: */
  31         __be32                  sk_reclen;
  32         /* As we receive a record, this includes the length received so
  33          * far (including the fragment header): */
  34         u32                     sk_tcplen;
  35         /* Total length of the data (not including fragment headers)
  36          * received so far in the fragments making up this rpc: */
  37         u32                     sk_datalen;
  38 
  39         struct page *           sk_pages[RPCSVC_MAXPAGES];      /* received data */
  40 };
  41 
  42 static inline u32 svc_sock_reclen(struct svc_sock *svsk)
  43 {
  44         return ntohl(svsk->sk_reclen) & RPC_FRAGMENT_SIZE_MASK;
  45 }
  46 
  47 static inline u32 svc_sock_final_rec(struct svc_sock *svsk)
  48 {
  49         return ntohl(svsk->sk_reclen) & RPC_LAST_STREAM_FRAGMENT;
  50 }
  51 
  52 /*
  53  * Function prototypes.
  54  */
  55 void            svc_close_net(struct svc_serv *, struct net *);
  56 int             svc_recv(struct svc_rqst *, long);
  57 int             svc_send(struct svc_rqst *);
  58 void            svc_drop(struct svc_rqst *);
  59 void            svc_sock_update_bufs(struct svc_serv *serv);
  60 bool            svc_alien_sock(struct net *net, int fd);
  61 int             svc_addsock(struct svc_serv *serv, const int fd,
  62                                         char *name_return, const size_t len,
  63                                         const struct cred *cred);
  64 void            svc_init_xprt_sock(void);
  65 void            svc_cleanup_xprt_sock(void);
  66 struct svc_xprt *svc_sock_create(struct svc_serv *serv, int prot);
  67 void            svc_sock_destroy(struct svc_xprt *);
  68 
  69 /*
  70  * svc_makesock socket characteristics
  71  */
  72 #define SVC_SOCK_DEFAULTS       (0U)
  73 #define SVC_SOCK_ANONYMOUS      (1U << 0)       /* don't register with pmap */
  74 #define SVC_SOCK_TEMPORARY      (1U << 1)       /* flag socket as temporary */
  75 
  76 #endif /* SUNRPC_SVCSOCK_H */

/* [<][>][^][v][top][bottom][index][help] */