summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/netsmb
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/netsmb')
-rw-r--r--usr/src/uts/common/netsmb/mchain.h16
-rw-r--r--usr/src/uts/common/netsmb/netbios.h9
-rw-r--r--usr/src/uts/common/netsmb/smb.h24
-rw-r--r--usr/src/uts/common/netsmb/smb_dev.h360
4 files changed, 183 insertions, 226 deletions
diff --git a/usr/src/uts/common/netsmb/mchain.h b/usr/src/uts/common/netsmb/mchain.h
index 7009ba75bf..bccb9aab7f 100644
--- a/usr/src/uts/common/netsmb/mchain.h
+++ b/usr/src/uts/common/netsmb/mchain.h
@@ -31,16 +31,15 @@
*
* $FreeBSD: src/sys/sys/mchain.h,v 1.1 2001/02/24 15:44:30 bp Exp $
*/
+
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _MCHAIN_H_
#define _MCHAIN_H_
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/types.h>
#include <sys/isa_defs.h>
#include <sys/byteorder.h>
@@ -158,10 +157,10 @@ int mb_put_uint32be(struct mbchain *mbp, uint32_t x);
int mb_put_uint32le(struct mbchain *mbp, uint32_t x);
int mb_put_uint64be(struct mbchain *mbp, uint64_t x);
int mb_put_uint64le(struct mbchain *mbp, uint64_t x);
-int mb_put_mem(struct mbchain *mbp, const char *src, int size, int type);
+int mb_put_mem(struct mbchain *mbp, const void *src, int size, int type);
int mb_put_mbuf(struct mbchain *mbp, mblk_t *m);
-int mb_put_uio(struct mbchain *mbp, uio_t *uiop, int size);
+int mb_put_uio(struct mbchain *mbp, uio_t *uiop, size_t size);
int md_init(struct mdchain *mdp);
void md_initm(struct mdchain *mbp, mblk_t *m);
@@ -169,18 +168,15 @@ void md_done(struct mdchain *mdp);
void md_append_record(struct mdchain *mdp, mblk_t *top);
int md_next_record(struct mdchain *mdp);
int md_get_uint8(struct mdchain *mdp, uint8_t *x);
-int md_get_uint16(struct mdchain *mdp, uint16_t *x);
int md_get_uint16le(struct mdchain *mdp, uint16_t *x);
int md_get_uint16be(struct mdchain *mdp, uint16_t *x);
-int md_get_uint32(struct mdchain *mdp, uint32_t *x);
int md_get_uint32be(struct mdchain *mdp, uint32_t *x);
int md_get_uint32le(struct mdchain *mdp, uint32_t *x);
-int md_get_uint64(struct mdchain *mdp, uint64_t *x);
int md_get_uint64be(struct mdchain *mdp, uint64_t *x);
int md_get_uint64le(struct mdchain *mdp, uint64_t *x);
-int md_get_mem(struct mdchain *mdp, caddr_t target, int size, int type);
+int md_get_mem(struct mdchain *mdp, void *vdst, int size, int type);
int md_get_mbuf(struct mdchain *mdp, int size, mblk_t **m);
-int md_get_uio(struct mdchain *mdp, uio_t *uiop, int size);
+int md_get_uio(struct mdchain *mdp, uio_t *uiop, size_t size);
/*
* Additions for Solaris to replace things that came from
diff --git a/usr/src/uts/common/netsmb/netbios.h b/usr/src/uts/common/netsmb/netbios.h
index b61f19c2dd..b9ebce1018 100644
--- a/usr/src/uts/common/netsmb/netbios.h
+++ b/usr/src/uts/common/netsmb/netbios.h
@@ -32,11 +32,14 @@
* $Id: netbios.h,v 1.5 2004/03/19 01:49:45 lindak Exp $
*/
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
#ifndef _NETSMB_NETBIOS_H_
#define _NETSMB_NETBIOS_H_
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#ifndef _NETINET_IN_H_
#include <netinet/in.h>
#endif
@@ -66,6 +69,8 @@
#define NB_ENCNAMELEN NB_NAMELEN * 2
#define NB_MAXLABLEN 63
+#define NB_MAXPKTLEN 0x1FFFF
+
#define NB_MINSALEN (sizeof (struct sockaddr_nb))
/*
diff --git a/usr/src/uts/common/netsmb/smb.h b/usr/src/uts/common/netsmb/smb.h
index 40c3522cfc..f0957634cb 100644
--- a/usr/src/uts/common/netsmb/smb.h
+++ b/usr/src/uts/common/netsmb/smb.h
@@ -45,8 +45,6 @@
#ifndef _NETSMB_SMB_H_
#define _NETSMB_SMB_H_
-#pragma ident "%Z%%M% %I% %E% SMI"
-
/*
* This file should be purely SMB protocol definition stuff.
* (Please don't make it a catch-all:)
@@ -81,7 +79,7 @@ enum smb_dialects {
#define SMB_SIGNATURE "\xFFSMB"
#define SMB_SIGLEN 4
#define SMB_HDRCMD(p) (*((uchar_t *)(p) + SMB_SIGLEN))
-#define SMB_HDRMID(p) (letohs(*(ushort_t *)((uchar_t *)(p) + 30)))
+#define SMB_HDRMID(p) (*(ushort_t *)((uchar_t *)(p) + 30))
#define SMB_HDRLEN 32
/*
* bits in the smb_flags field
@@ -751,26 +749,6 @@ typedef struct ntsid ntsid_t;
#define SMB_LOCKING_ANDX_LARGE_FILES 0x10
/*
- * Some names length limitations. Some of them aren't declared by specs,
- * but we need reasonable limits.
- */
-#define SMB_MAXSRVNAMELEN 15 /* NetBIOS limit */
-#define SMB_MAXUSERNAMELEN 128
-#define SMB_MAXPASSWORDLEN 128
-#define SMB_MAXSHARENAMELEN 128
-#define SMB_MAXPKTLEN 0x1FFFF
-#define SMB_MAXCHALLENGELEN 8
-#define SMB_MAXFNAMELEN 255 /* Keep in sync with MAXNAMLEN */
-
-#define SMB_RCNDELAY 2 /* seconds between reconnect attempts */
-/*
- * leave this zero - we can't ssecond guess server side effects of
- * duplicate ops, this isn't nfs!
- */
-#define SMBMAXRESTARTS 0
-#define SMB_MAXSETUPWORDS 3 /* max # of setup words in trans/t2 */
-
-/*
* Error classes
*/
#define SMBSUCCESS 0x00
diff --git a/usr/src/uts/common/netsmb/smb_dev.h b/usr/src/uts/common/netsmb/smb_dev.h
index ac09858c7d..8fee2bccf2 100644
--- a/usr/src/uts/common/netsmb/smb_dev.h
+++ b/usr/src/uts/common/netsmb/smb_dev.h
@@ -33,7 +33,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -59,13 +59,9 @@
* any part of this user/kernel I/F changes.
*/
-#ifndef _KERNEL
#include <sys/types.h>
-#endif
-
#include <sys/socket_impl.h>
-#include <netsmb/smb.h>
-#include <netsmb/netbios.h>
+#include <netinet/in.h>
#define NSMB_NAME "nsmb"
@@ -75,35 +71,25 @@
* make them incompatible with an old driver.
*/
#define NSMB_VERMAJ 1
-#define NSMB_VERMIN 3600
+#define NSMB_VERMIN 3900
#define NSMB_VERSION (NSMB_VERMAJ * 100000 + NSMB_VERMIN)
-#define NSMB_VER_STR "1.36"
-
-#define NSMBFL_OPEN 0x0001
-#define NSMBFL_NEWVC 0x0002
/*
- * Hack-ish errno values we need to expose to the library.
+ * Some errno values we need to expose to the library.
+ * NB: these are also defined in the library smbfs_api.h
+ * to avoid exposing all of this stuff in that API.
+ *
* EBADRPC is used for message decoding errors.
* EAUTH is used for CIFS authentication errors.
*/
#ifndef EBADRPC
-#define EBADRPC 113 /* XXX */
+#define EBADRPC 113
#endif
#ifndef EAUTH
-#define EAUTH 114 /* XXX */
+#define EAUTH 114
#endif
/*
- * "Level" in the connection object hierarchy
- */
-#define SMBL_SM 0
-#define SMBL_VC 1
-#define SMBL_SHARE 2
-#define SMBL_NUM 3
-#define SMBL_NONE (-1)
-
-/*
* Upper/lower case options
*/
#define SMB_CS_NONE 0x0000
@@ -115,14 +101,6 @@
*/
#define SMBM_ANY_OWNER ((uid_t)-1)
#define SMBM_ANY_GROUP ((gid_t)-1)
-#define SMBM_MASK 0777
-#define SMBM_EXACT 010000 /* check for specified mode exactly */
-#ifdef _KERNEL
-/* In-kernel, we prefer the vnode.h names. */
-#define SMBM_READ VREAD /* (S_IRUSR) read conn attrs. */
-#define SMBM_WRITE VWRITE /* (S_IWUSR) modify conn attrs */
-#define SMBM_EXEC VEXEC /* (S_IXUSR) can send SMB requests */
-#endif
/*
* Option flags in smbioc_ossn.ioc_opt
@@ -140,14 +118,6 @@
#define SMBVOPT_SIGNING_REQUIRED 0x0200 /* signing required */
#define SMBVOPT_SIGNING_MASK 0x0300 /* all signing bits */
-/* XXX: How about a separate field for these? */
-#define SMBVOPT_MINAUTH 0x7000 /* min. auth. level (mask) */
-#define SMBVOPT_MINAUTH_NONE 0x0000 /* any authentication OK */
-#define SMBVOPT_MINAUTH_LM 0x1000 /* no plaintext passwords */
-#define SMBVOPT_MINAUTH_NTLM 0x2000 /* don't send LM reply */
-#define SMBVOPT_MINAUTH_NTLMV2 0x3000 /* don't fall back to NTLMv1 */
-#define SMBVOPT_MINAUTH_KERBEROS 0x4000 /* don't do NTLMv1 or v2 */
-
/*
* Option flags in smbioc_oshare.ioc_opt
* and sharespec.optflags
@@ -155,7 +125,27 @@
#define SMBSOPT_CREATE SMBVOPT_CREATE
#define SMBSOPT_PERMANENT SMBVOPT_PERMANENT
-#define MAX_STR_LEN 8 /* Maxilum length of the minor device name */
+/* All user and machine names. */
+#define SMBIOC_MAX_NAME 256
+
+/*
+ * Size of storage for p/w hashes.
+ * Also for SMBIOC_GETSSNKEY.
+ */
+#define SMBIOC_HASH_SZ 16
+
+/*
+ * network IO daemon states
+ * really connection states.
+ */
+enum smbiod_state {
+ SMBIOD_ST_IDLE = 0, /* no user requests enqueued yet */
+ SMBIOD_ST_RECONNECT, /* a [re]connect attempt is in progress */
+ SMBIOD_ST_RCFAILED, /* a reconnect attempt has failed */
+ SMBIOD_ST_VCACTIVE, /* session established */
+ SMBIOD_ST_DEAD /* connection gone, no IOD */
+};
+
/*
* We're now using structures that are invariant
@@ -187,98 +177,141 @@ typedef union lptr {
* Handy union of sockaddr types we use.
* Type discriminator is sa_family
*/
-union sockaddr_any {
- struct sockaddr sa;
- struct sockaddr_in in;
- struct sockaddr_nb nb;
+union smbioc_sockaddr {
+ struct sockaddr sa; /* generic */
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
};
+typedef union smbioc_sockaddr smbioc_sockaddr_t;
+/*
+ * This is what identifies a session.
+ */
+struct smbioc_ssn_ident {
+ smbioc_sockaddr_t id_srvaddr;
+ char id_domain[SMBIOC_MAX_NAME];
+ char id_user[SMBIOC_MAX_NAME];
+};
+typedef struct smbioc_ssn_ident smbioc_ssn_ident_t;
/*
- * SMBIOC_LOOKUP flags
+ * Flags for smbioc_ossn.ssn_opt
*/
#define SMBLK_CREATE SMBVOPT_CREATE
-#define DEF_SEC_TOKEN_LEN 2048
-
+/*
+ * Structure used with SMBIOC_SSN_FIND, _CREATE
+ */
struct smbioc_ossn {
- union sockaddr_any ioc_server;
- union sockaddr_any ioc_local;
- char ioc_localcs[16]; /* local charset */
- char ioc_servercs[16]; /* server charset */
- char ioc_srvname[SMB_MAXSRVNAMELEN + 1];
- char ioc_user[SMB_MAXUSERNAMELEN + 1];
- char ioc_workgroup[SMB_MAXUSERNAMELEN + 1];
- char ioc_password[SMB_MAXPASSWORDLEN + 1];
- int32_t ioc_opt;
- int32_t ioc_timeout; /* ignored?! XXX */
- int32_t ioc_retrycount; /* number of retries before giveup */
- uid_t ioc_owner; /* proposed owner */
- gid_t ioc_group; /* proposed group */
- mode_t ioc_mode; /* desired access mode */
- mode_t ioc_rights; /* SMBM_* */
- int32_t ioc_intoklen;
- int32_t ioc_outtoklen;
- /* copyout ends at this offset */
- lptr_t _ioc_intok;
- lptr_t _ioc_outtok;
+ uint32_t ssn_vopt; /* i.e. SMBVOPT_CREATE */
+ uint32_t ssn_owner; /* Unix owner (UID) */
+ smbioc_ssn_ident_t ssn_id;
+ char ssn_srvname[SMBIOC_MAX_NAME];
};
typedef struct smbioc_ossn smbioc_ossn_t;
-#define ioc_intok _ioc_intok.lp_ptr
-#define ioc_outtok _ioc_outtok.lp_ptr
-
+/* Convenience names for members under ssn_id */
+#define ssn_srvaddr ssn_id.id_srvaddr
+#define ssn_domain ssn_id.id_domain
+#define ssn_user ssn_id.id_user
+/*
+ * Structure used with SMBIOC_TREE_FIND, _CONNECT
+ */
+#define SMBIOC_STYPE_LEN 8
struct smbioc_oshare {
- char ioc_share[SMB_MAXSHARENAMELEN + 1];
- char ioc_password[SMB_MAXPASSWORDLEN + 1];
- int32_t ioc_opt;
- int32_t ioc_stype; /* share type */
- uid_t ioc_owner; /* proposed owner of share */
- gid_t ioc_group; /* proposed group of share */
- mode_t ioc_mode; /* desired access mode to share */
- mode_t ioc_rights; /* SMBM_* */
- /*
- * Hack: need the size of this to be 8-byte aligned
- * so that the ioc_ossn following it in smbioc_lookup
- * is correctly aligned...
- */
- int32_t ioc__pad;
+ uint32_t sh_pwlen;
+ char sh_name[SMBIOC_MAX_NAME];
+ char sh_pass[SMBIOC_MAX_NAME];
+ /* share types, in ASCII form, i.e. "A:", "IPC", ... */
+ char sh_type_req[SMBIOC_STYPE_LEN]; /* requested */
+ char sh_type_ret[SMBIOC_STYPE_LEN]; /* returned */
};
typedef struct smbioc_oshare smbioc_oshare_t;
+typedef struct smbioc_tcon {
+ int32_t tc_flags;
+ int32_t tc_opt;
+ smbioc_oshare_t tc_sh;
+} smbioc_tcon_t;
+
+
+/*
+ * Negotiated protocol parameters
+ */
+struct smb_sopt {
+ int16_t sv_proto; /* protocol dialect */
+ uchar_t sv_sm; /* security mode */
+ int16_t sv_tz; /* offset in min relative to UTC */
+ uint16_t sv_maxmux; /* max number of outstanding rq's */
+ uint16_t sv_maxvcs; /* max number of VCs */
+ uint16_t sv_rawmode;
+ uint32_t sv_maxtx; /* maximum transmit buf size */
+ uint32_t sv_maxraw; /* maximum raw-buffer size */
+ uint32_t sv_skey; /* session key */
+ uint32_t sv_caps; /* capabilites SMB_CAP_ */
+};
+typedef struct smb_sopt smb_sopt_t;
+
+/*
+ * State carried in/out of the driver by the IOD thread.
+ * Inside the driver, these are members of the "VC" object.
+ */
+struct smb_iods {
+ int32_t is_tran_fd; /* transport FD */
+ uint32_t is_vcflags; /* SMBV_... */
+ uint8_t is_hflags; /* SMB header flags */
+ uint16_t is_hflags2; /* SMB header flags2 */
+ uint16_t is_smbuid; /* SMB header UID */
+ uint16_t is_next_mid; /* SMB header MID */
+ uint32_t is_txmax; /* max tx/rx packet size */
+ uint32_t is_rwmax; /* max read/write data size */
+ uint32_t is_rxmax; /* max readx data size */
+ uint32_t is_wxmax; /* max writex data size */
+ uint8_t is_ssn_key[SMBIOC_HASH_SZ]; /* session key */
+ /* Signing state */
+ uint32_t is_next_seq; /* my next sequence number */
+ uint32_t is_u_maclen; /* MAC key length */
+ lptr_t is_u_mackey; /* user-space ptr! */
+};
+typedef struct smb_iods smb_iods_t;
+
+/*
+ * This is the operational state information passed
+ * in and out of the driver for SMBIOC_SSN_WORK
+ */
+struct smbioc_ssn_work {
+ smb_iods_t wk_iods;
+ smb_sopt_t wk_sopt;
+ int wk_out_state;
+};
+typedef struct smbioc_ssn_work smbioc_ssn_work_t;
+
+/*
+ * User-level SMB requests
+ */
+
+/*
+ * SMBIOC_REQUEST (simple SMB request)
+ */
typedef struct smbioc_rq {
uchar_t ioc_cmd;
- uchar_t ioc_twc; /* _twords */
- ushort_t ioc_tbc; /* _tbytes */
- int32_t ioc_rpbufsz; /* _rpbuf */
- uchar_t ioc__pad1;
- uchar_t ioc_rwc;
- ushort_t ioc_rbc;
- uchar_t ioc__pad2;
uint8_t ioc_errclass;
uint16_t ioc_serror;
uint32_t ioc_error;
- uint32_t ioc__pad3;
- /*
- * Copyout all but the pointers, which
- * we may have set to kernel memory.
- * See ..._COPYOUT_SIZE
- */
- lptr_t _ioc_twords;
- lptr_t _ioc_tbytes;
- lptr_t _ioc_rpbuf;
+ uint32_t ioc_tbufsz; /* transmit */
+ uint32_t ioc_rbufsz; /* receive */
+ lptr_t _ioc_tbuf;
+ lptr_t _ioc_rbuf;
} smbioc_rq_t;
-#define ioc_twords _ioc_twords.lp_ptr
-#define ioc_tbytes _ioc_tbytes.lp_ptr
-#define ioc_rpbuf _ioc_rpbuf.lp_ptr
-#define SMBIOC_RQ_COPYOUT_SIZE \
- (offsetof(smbioc_rq_t, _ioc_twords))
+#define ioc_tbuf _ioc_tbuf.lp_ptr
+#define ioc_rbuf _ioc_rbuf.lp_ptr
-#define SMBIOC_T2RQ_MAXNAME 128
+#define SMBIOC_T2RQ_MAXSETUP 4
+#define SMBIOC_T2RQ_MAXNAME 128
typedef struct smbioc_t2rq {
- uint16_t ioc_setup[SMB_MAXSETUPWORDS];
+ uint16_t ioc_setup[SMBIOC_T2RQ_MAXSETUP];
int32_t ioc_setupcnt;
char ioc_name[SMBIOC_T2RQ_MAXNAME];
ushort_t ioc_tparamcnt;
@@ -291,11 +324,6 @@ typedef struct smbioc_t2rq {
uint32_t ioc_error;
uint16_t ioc_rpflags2;
uint16_t ioc__pad2;
- /*
- * Copyout all but the pointers, which
- * we may have set to kernel memory.
- * See ..._COPYOUT_SIZE
- */
lptr_t _ioc_tparam;
lptr_t _ioc_tdata;
lptr_t _ioc_rparam;
@@ -305,43 +333,30 @@ typedef struct smbioc_t2rq {
#define ioc_tdata _ioc_tdata.lp_ptr
#define ioc_rparam _ioc_rparam.lp_ptr
#define ioc_rdata _ioc_rdata.lp_ptr
-#define SMBIOC_T2RQ_COPYOUT_SIZE \
- (offsetof(smbioc_t2rq_t, _ioc_tparam))
typedef struct smbioc_flags {
int32_t ioc_level; /* 0 - session, 1 - share */
- int32_t ioc_mask;
int32_t ioc_flags;
+ int32_t ioc_mask;
} smbioc_flags_t;
-typedef struct smbioc_lookup {
- int32_t ioc_level;
- int32_t ioc_flags;
- struct smbioc_oshare ioc_sh;
- struct smbioc_ossn ioc_ssn;
-} smbioc_lookup_t;
-#define SMBIOC_LOOK_COPYOUT_SIZE \
- (offsetof(smbioc_lookup_t, ioc_ssn._ioc_intok))
-
typedef struct smbioc_rw {
- uint16_t ioc_fh;
+ uint32_t ioc_fh;
uint32_t ioc_cnt;
lloff_t _ioc_offset;
lptr_t _ioc_base;
} smbioc_rw_t;
#define ioc_offset _ioc_offset._f
#define ioc_base _ioc_base.lp_ptr
-#define SMBIOC_RW_COPYOUT_SIZE \
- (offsetof(smbioc_rw_t, _ioc_base))
/* Password Keychain (PK) support. */
-#define SMBIOC_PK_MAXLEN 255
typedef struct smbioc_pk {
uid_t pk_uid; /* UID for PAM use */
- char pk_dom[SMBIOC_PK_MAXLEN+1]; /* CIFS domain name */
- char pk_usr[SMBIOC_PK_MAXLEN+1]; /* CIFS user name */
- char pk_pass[SMBIOC_PK_MAXLEN+1]; /* CIFS password */
+ char pk_dom[SMBIOC_MAX_NAME]; /* CIFS domain name */
+ char pk_usr[SMBIOC_MAX_NAME]; /* CIFS user name */
+ uchar_t pk_lmhash[SMBIOC_HASH_SZ]; /* LanMan p/w hash */
+ uchar_t pk_nthash[SMBIOC_HASH_SZ]; /* NTLM p/w hash */
} smbioc_pk_t;
@@ -357,18 +372,29 @@ typedef struct smbioc_pk {
*/
#define SMBIOC_BASE ((('n' << 8) | 's') << 8)
typedef enum nsmb_ioc {
- SMBIOC_GETVERS = SMBIOC_BASE,
- SMBIOC_REQUEST,
- SMBIOC_T2RQ,
- SMBIOC_LOOKUP,
- SMBIOC_READ,
- SMBIOC_WRITE,
- SMBIOC_FINDVC,
- SMBIOC_NEGOTIATE,
- SMBIOC_SSNSETUP,
- SMBIOC_TCON,
- SMBIOC_TDIS,
- SMBIOC_FLAGS2,
+ SMBIOC_GETVERS = SMBIOC_BASE, /* keep first */
+ SMBIOC_FLAGS2, /* get hflags2 */
+ SMBIOC_GETSSNKEY, /* get SMB session key */
+
+ SMBIOC_REQUEST, /* simple request */
+ SMBIOC_T2RQ, /* trans2 request */
+ SMBIOC_READ, /* read (pipe) */
+ SMBIOC_WRITE, /* write (pipe) */
+
+ SMBIOC_SSN_CREATE,
+ SMBIOC_SSN_FIND,
+ SMBIOC_SSN_KILL, /* force disconnect */
+ SMBIOC_SSN_RELE, /* drop our reference */
+
+ SMBIOC_TREE_CONNECT, /* create and connect */
+ SMBIOC_TREE_FIND,
+ SMBIOC_TREE_KILL,
+ SMBIOC_TREE_RELE,
+
+ SMBIOC_IOD_WORK, /* work on session requests */
+ SMBIOC_IOD_IDLE, /* wait for requests on this session */
+ SMBIOC_IOD_RCFAIL, /* notify that reconnect failed */
+
/* Password Keychain (PK) support. */
SMBIOC_PK_ADD, /* Add/Modify a password entry */
SMBIOC_PK_CHK, /* Check for a password entry */
@@ -377,52 +403,4 @@ typedef enum nsmb_ioc {
SMBIOC_PK_DEL_EVERYONE /* all owned by everyone */
} nsmb_ioc_t;
-#ifdef _KERNEL
-#include <sys/dditypes.h> /* for dev_info_t */
-
-#define SMBST_CONNECTED 1
-
-/* Size of storage for p/w hashes. */
-#define SMB_PWH_MAX 24
-
-extern const uint32_t nsmb_version;
-
-struct smb_cred;
-struct smb_share;
-struct smb_vc;
-
-typedef struct smb_dev {
- int sd_opened; /* Opened or not */
- int sd_level; /* Future use */
- struct smb_vc *sd_vc; /* Reference to VC */
- struct smb_share *sd_share; /* Reference to share if any */
- int sd_poll; /* Future use */
- int sd_seq; /* Kind of minor number/instance no */
- int sd_flags; /* State of connection */
- zoneid_t zoneid; /* Zone id */
- dev_info_t *smb_dip; /* ptr to dev_info node */
- void *sd_devfs; /* Dont know how to use this. but */
- struct cred *smb_cred; /* per dev credentails. Future use */
-} smb_dev_t;
-
-/*
- * Compound user interface
- */
-int smb_usr_findvc(struct smbioc_lookup *dp, struct smb_cred *scred,
- struct smb_vc **vcpp);
-int smb_usr_negotiate(struct smbioc_lookup *dp, struct smb_cred *scred,
- struct smb_vc **vcpp);
-int smb_usr_ssnsetup(struct smbioc_lookup *dp, struct smb_cred *scred,
- struct smb_vc *vcp);
-int smb_usr_tcon(struct smbioc_lookup *dp, struct smb_cred *scred,
- struct smb_vc *vcp, struct smb_share **sspp);
-int smb_usr_simplerequest(struct smb_share *ssp, struct smbioc_rq *data,
- struct smb_cred *scred);
-int smb_usr_t2request(struct smb_share *ssp, struct smbioc_t2rq *data,
- struct smb_cred *scred);
-int smb_usr_rw(struct smb_share *ssp, smbioc_rw_t *dp,
- int cmd, struct smb_cred *scred);
-int smb_dev2share(int fd, struct smb_share **sspp);
-
-#endif /* _KERNEL */
#endif /* _NETSMB_DEV_H_ */