]> granicus.if.org Git - curl/commitdiff
smb: Added SMB handler interfaces
authorBill Nagel <wnagel@tycoint.com>
Sun, 30 Nov 2014 15:39:14 +0000 (10:39 -0500)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 30 Nov 2014 15:56:30 +0000 (15:56 +0000)
Added the SMB and SMBS handler interface structures and associated
functions required for SMB/CIFS operation.

lib/smb.c
lib/smb.h

index 066c2521b16092d6d813849fef9f015927854dbb..3a082ca5e999b355a178087c112aefce70028c1a 100644 (file)
--- a/lib/smb.c
+++ b/lib/smb.c
 #define BUILDING_CURL_SMB_C
 
 #include "smb.h"
+#include "urldata.h"
+#include "sendf.h"
+#include "multiif.h"
 
 /* The last #include file should be: */
 #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 */
index 63fdba814956a503253a45a5b2cd039deb1c7132..0df3d1a9966e91ca9ed1e306634b7c67fea58ed6 100644 (file)
--- a/lib/smb.h
+++ b/lib/smb.h
@@ -256,4 +256,12 @@ struct smb_tree_disconnect {
 
 #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 */