diff options
Diffstat (limited to 'include/linux/sunrpc/svc.h')
| -rw-r--r-- | include/linux/sunrpc/svc.h | 33 | 
1 files changed, 23 insertions, 10 deletions
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 223588a976a..35b37b1e929 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -212,11 +212,6 @@ static inline void svc_putu32(struct kvec *iov, __be32 val)  	iov->iov_len += sizeof(__be32);  } -union svc_addr_u { -    struct in_addr	addr; -    struct in6_addr	addr6; -}; -  /*   * The context of a single thread, including the request currently being   * processed. @@ -225,8 +220,12 @@ struct svc_rqst {  	struct list_head	rq_list;	/* idle list */  	struct list_head	rq_all;		/* all threads list */  	struct svc_xprt *	rq_xprt;	/* transport ptr */ +  	struct sockaddr_storage	rq_addr;	/* peer address */  	size_t			rq_addrlen; +	struct sockaddr_storage	rq_daddr;	/* dest addr of request +						 *  - reply from here */ +	size_t			rq_daddrlen;  	struct svc_serv *	rq_server;	/* RPC service definition */  	struct svc_pool *	rq_pool;	/* thread pool */ @@ -255,9 +254,6 @@ struct svc_rqst {  	unsigned short  				rq_secure  : 1;	/* secure port */ -	union svc_addr_u	rq_daddr;	/* dest addr of request -						 *  - reply from here */ -  	void *			rq_argp;	/* decoded arguments */  	void *			rq_resp;	/* xdr'd results */  	void *			rq_auth_data;	/* flavor-specific data */ @@ -300,6 +296,21 @@ static inline struct sockaddr *svc_addr(const struct svc_rqst *rqst)  	return (struct sockaddr *) &rqst->rq_addr;  } +static inline struct sockaddr_in *svc_daddr_in(const struct svc_rqst *rqst) +{ +	return (struct sockaddr_in *) &rqst->rq_daddr; +} + +static inline struct sockaddr_in6 *svc_daddr_in6(const struct svc_rqst *rqst) +{ +	return (struct sockaddr_in6 *) &rqst->rq_daddr; +} + +static inline struct sockaddr *svc_daddr(const struct svc_rqst *rqst) +{ +	return (struct sockaddr *) &rqst->rq_daddr; +} +  /*   * Check buffer bounds after decoding arguments   */ @@ -340,7 +351,8 @@ struct svc_deferred_req {  	struct svc_xprt		*xprt;  	struct sockaddr_storage	addr;	/* where reply must go */  	size_t			addrlen; -	union svc_addr_u	daddr;	/* where reply must come from */ +	struct sockaddr_storage	daddr;	/* where reply must come from */ +	size_t			daddrlen;  	struct cache_deferred_req handle;  	size_t			xprt_hlen;  	int			argslen; @@ -401,10 +413,11 @@ struct svc_procedure {  /*   * Function prototypes.   */ +void svc_rpcb_cleanup(struct svc_serv *serv);  struct svc_serv *svc_create(struct svc_program *, unsigned int,  			    void (*shutdown)(struct svc_serv *));  struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, -					struct svc_pool *pool); +					struct svc_pool *pool, int node);  void		   svc_exit_thread(struct svc_rqst *);  struct svc_serv *  svc_create_pooled(struct svc_program *, unsigned int,  			void (*shutdown)(struct svc_serv *),  |