2005-09-09 13:04:22 -07:00
/*
2007-07-10 17:57:28 -05:00
* include / net / 9 p / transport . h
2005-09-09 13:04:22 -07:00
*
* Transport Definition
*
2006-01-08 01:04:58 -08:00
* Copyright ( C ) 2005 by Latchesar Ionkov < lucho @ ionkov . net >
2008-02-06 19:25:03 -06:00
* Copyright ( C ) 2004 - 2008 by Eric Van Hensbergen < ericvh @ gmail . com >
2005-09-09 13:04:22 -07:00
*
* This program is free software ; you can redistribute it and / or modify
2006-03-25 03:07:28 -08:00
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation .
2005-09-09 13:04:22 -07:00
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to :
* Free Software Foundation
* 51 Franklin Street , Fifth Floor
* Boston , MA 02111 - 1301 USA
*
*/
2007-07-10 17:57:28 -05:00
# ifndef NET_9P_TRANSPORT_H
# define NET_9P_TRANSPORT_H
2013-05-29 12:15:07 -07:00
# define P9_DEF_MIN_RESVPORT (665U)
# define P9_DEF_MAX_RESVPORT (1023U)
2008-03-05 07:08:09 -06:00
/**
* struct p9_trans_module - transport module interface
* @ list : used to maintain a list of currently available transports
* @ name : the human - readable name of the transport
* @ maxsize : transport provided maximum packet size
* @ def : set if this transport should be considered the default
* @ create : member function to create a new connection on this transport
2011-05-08 18:46:38 +00:00
* @ close : member function to discard a connection on this transport
2008-10-13 18:45:21 -05:00
* @ request : member function to issue a request to the transport
* @ cancel : member function to cancel a request ( if it hasn ' t been sent )
2014-03-10 16:38:49 +01:00
* @ cancelled : member function to notify that a cancelled request will not
* not receive a reply
2008-03-05 07:08:09 -06:00
*
* This is the basic API for a transport module which is registered by the
* transport module with the 9 P core network module and used by the client
* to instantiate a new connection on a transport .
*
2011-05-08 18:46:38 +00:00
* The transport module list is protected by v9fs_trans_lock .
2008-03-05 07:08:09 -06:00
*/
2007-10-17 14:31:07 -05:00
struct p9_trans_module {
struct list_head list ;
char * name ; /* name of transport */
int maxsize ; /* max message size of transport */
int def ; /* this transport should be default */
2008-09-24 16:22:23 -05:00
struct module * owner ;
2008-10-13 18:45:25 -05:00
int ( * create ) ( struct p9_client * , const char * , char * ) ;
void ( * close ) ( struct p9_client * ) ;
2008-10-13 18:45:21 -05:00
int ( * request ) ( struct p9_client * , struct p9_req_t * req ) ;
int ( * cancel ) ( struct p9_client * , struct p9_req_t * req ) ;
2014-03-10 16:38:49 +01:00
int ( * cancelled ) ( struct p9_client * , struct p9_req_t * req ) ;
2011-08-16 10:50:10 +05:30
int ( * zc_request ) ( struct p9_client * , struct p9_req_t * ,
2015-04-01 19:57:53 -04:00
struct iov_iter * , struct iov_iter * , int , int , int ) ;
2017-07-05 16:25:37 +01:00
int ( * show_options ) ( struct seq_file * , struct p9_client * ) ;
2005-09-09 13:04:22 -07:00
} ;
2007-10-17 14:31:07 -05:00
void v9fs_register_trans ( struct p9_trans_module * m ) ;
2008-09-24 16:22:23 -05:00
void v9fs_unregister_trans ( struct p9_trans_module * m ) ;
2011-05-06 18:35:32 +05:30
struct p9_trans_module * v9fs_get_trans_by_name ( char * s ) ;
2008-09-24 16:22:23 -05:00
struct p9_trans_module * v9fs_get_default_trans ( void ) ;
void v9fs_put_trans ( struct p9_trans_module * m ) ;
2007-07-10 17:57:28 -05:00
# endif /* NET_9P_TRANSPORT_H */