smb: Added SMB handler interfaces

Added the SMB and SMBS handler interface structures and associated
functions required for SMB/CIFS operation.
This commit is contained in:
Bill Nagel 2014-11-30 10:39:14 -05:00 committed by Steve Holme
parent 56120ca04b
commit aec2e865f0
2 changed files with 129 additions and 0 deletions

121
lib/smb.c
View File

@ -28,8 +28,129 @@
#define BUILDING_CURL_SMB_C #define BUILDING_CURL_SMB_C
#include "smb.h" #include "smb.h"
#include "urldata.h"
#include "sendf.h"
#include "multiif.h"
/* The last #include file should be: */ /* The last #include file should be: */
#include "memdebug.h" #include "memdebug.h"
/* Local API functions */
static CURLcode smb_setup(struct connectdata *conn);
static CURLcode smb_connect(struct connectdata *conn, bool *done);
static CURLcode smb_connection_state(struct connectdata *conn, bool *done);
static CURLcode smb_request_state(struct connectdata *conn, bool *done);
static CURLcode smb_done(struct connectdata *conn, CURLcode status,
bool premature);
static CURLcode smb_disconnect(struct connectdata *conn, bool dead);
static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
int numsocks);
/*
* SMB handler interface
*/
const struct Curl_handler Curl_handler_smb = {
"SMB", /* scheme */
smb_setup, /* setup_connection */
ZERO_NULL, /* do_it */
smb_done, /* done */
ZERO_NULL, /* do_more */
smb_connect, /* connect_it */
smb_connection_state, /* connecting */
smb_request_state, /* doing */
smb_getsock, /* proto_getsock */
smb_getsock, /* doing_getsock */
ZERO_NULL, /* domore_getsock */
ZERO_NULL, /* perform_getsock */
smb_disconnect, /* disconnect */
ZERO_NULL, /* readwrite */
PORT_SMB, /* defport */
CURLPROTO_SMB, /* protocol */
PROTOPT_NONE /* flags */
};
#ifdef USE_SSL
/*
* SMBS handler interface
*/
const struct Curl_handler Curl_handler_smbs = {
"SMBS", /* scheme */
smb_setup, /* setup_connection */
ZERO_NULL, /* do_it */
smb_done, /* done */
ZERO_NULL, /* do_more */
smb_connect, /* connect_it */
smb_connection_state, /* connecting */
smb_request_state, /* doing */
smb_getsock, /* proto_getsock */
smb_getsock, /* doing_getsock */
ZERO_NULL, /* domore_getsock */
ZERO_NULL, /* perform_getsock */
smb_disconnect, /* disconnect */
ZERO_NULL, /* readwrite */
PORT_SMBS, /* defport */
CURLPROTO_SMBS, /* protocol */
PROTOPT_SSL /* flags */
};
#endif
static CURLcode smb_setup(struct connectdata *conn)
{
(void) conn;
return CURLE_NOT_BUILT_IN;
}
static CURLcode smb_connect(struct connectdata *conn, bool *done)
{
(void) conn;
(void) done;
return CURLE_NOT_BUILT_IN;
}
static CURLcode smb_connection_state(struct connectdata *conn, bool *done)
{
(void) conn;
(void) done;
return CURLE_NOT_BUILT_IN;
}
static CURLcode smb_request_state(struct connectdata *conn, bool *done)
{
(void) conn;
(void) done;
return CURLE_NOT_BUILT_IN;
}
static CURLcode smb_done(struct connectdata *conn, CURLcode status,
bool premature)
{
(void) conn;
(void) status;
(void) premature;
return CURLE_NOT_BUILT_IN;
}
static CURLcode smb_disconnect(struct connectdata *conn, bool dead)
{
(void) conn;
(void) dead;
return CURLE_NOT_BUILT_IN;
}
static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
int numsocks)
{
(void) conn;
(void) socks;
(void) numsocks;
return GETSOCK_BLANK;
}
#endif /* CURL_DISABLE_SMB && USE_NTLM && USE_WINDOWS_SSPI */ #endif /* CURL_DISABLE_SMB && USE_NTLM && USE_WINDOWS_SSPI */

View File

@ -256,4 +256,12 @@ struct smb_tree_disconnect {
#endif /* BUILDING_CURL_SMB_C */ #endif /* BUILDING_CURL_SMB_C */
#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
!defined(USE_WINDOWS_SSPI)
extern const struct Curl_handler Curl_handler_smb;
extern const struct Curl_handler Curl_handler_smbs;
#endif /* CURL_DISABLE_SMB && USE_NTLM && USE_WINDOWS_SSPI */
#endif /* HEADER_CURL_SMB_H */ #endif /* HEADER_CURL_SMB_H */