SUNRPC: use sockaddr + size when creating remote transport endpoints
[powerpc.git] / include / linux / sunrpc / xprt.h
index 4ce8261..bc80fcf 100644 (file)
@@ -51,6 +51,14 @@ struct rpc_timeout {
        unsigned char           to_exponential;
 };
 
+enum rpc_display_format_t {
+       RPC_DISPLAY_ADDR = 0,
+       RPC_DISPLAY_PORT,
+       RPC_DISPLAY_PROTO,
+       RPC_DISPLAY_ALL,
+       RPC_DISPLAY_MAX,
+};
+
 struct rpc_task;
 struct rpc_xprt;
 struct seq_file;
@@ -103,8 +111,10 @@ struct rpc_rqst {
 
 struct rpc_xprt_ops {
        void            (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
+       char *          (*print_addr)(struct rpc_xprt *xprt, enum rpc_display_format_t format);
        int             (*reserve_xprt)(struct rpc_task *task);
        void            (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
+       void            (*rpcbind)(struct rpc_task *task);
        void            (*set_port)(struct rpc_xprt *xprt, unsigned short port);
        void            (*connect)(struct rpc_task *task);
        void *          (*buf_alloc)(struct rpc_task *task, size_t size);
@@ -124,7 +134,8 @@ struct rpc_xprt {
        struct sock *           inet;           /* INET layer */
 
        struct rpc_timeout      timeout;        /* timeout parms */
-       struct sockaddr_in      addr;           /* server address */
+       struct sockaddr_storage addr;           /* server address */
+       size_t                  addrlen;        /* size of server address */
        int                     prot;           /* IP protocol */
 
        unsigned long           cong;           /* current congestion */
@@ -206,6 +217,8 @@ struct rpc_xprt {
        void                    (*old_data_ready)(struct sock *, int);
        void                    (*old_state_change)(struct sock *);
        void                    (*old_write_space)(struct sock *);
+
+       char *                  address_strings[RPC_DISPLAY_MAX];
 };
 
 #define XPRT_LAST_FRAG         (1 << 0)
@@ -224,6 +237,7 @@ void                        xprt_set_timeout(struct rpc_timeout *to, unsigned int retr, unsigned long
 /*
  * Generic internal transport functions
  */
+struct rpc_xprt *      xprt_create_transport(int proto, struct sockaddr *addr, size_t size, struct rpc_timeout *toparms);
 void                   xprt_connect(struct rpc_task *task);
 void                   xprt_reserve(struct rpc_task *task);
 int                    xprt_reserve_xprt(struct rpc_task *task);