Print this page
NEX-16818 Add fksmbcl development tool
NEX-17264 SMB client test tp_smbutil_013 fails after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (fix ref leaks)
NEX-4538 SMB1 create file should support extended_response format (2)
NEX-6116 Failures in smbtorture raw.open
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Include this commit if upstreaming/backporting any of:
NEX-4540 SMB server declines EA support incorrectly
NEX-4239 smbtorture create failures re. allocation size
(illumos) 6398 SMB should support path names longer than 1024
NEX-3776 SMB should handle PreviousSessionID
Reviewed by: Gordon Ross <gwr@nexenta.com>
NEX-3620 need upstream cleanups for smbsrv
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
SMB-50 User-mode SMB server
Includes work by these authors:
Thomas Keiser <thomas.keiser@nexenta.com>
Albert Lee <trisk@nexenta.com>
*** 8,39 ****
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2017 RackTop Systems.
*/
-
#include <sys/types.h>
#include <sys/time.h>
#include <sys/thread.h>
#include <sys/cred.h>
struct cred {
uint32_t pad[100];
};
cred_t cred0;
cred_t *kcred = &cred0;
cred_t *
_curcred(void)
{
! /* Thread-specific data? */
! return (&cred0);
}
/*ARGSUSED*/
void
crfree(cred_t *cr)
--- 8,61 ----
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
* Copyright 2017 RackTop Systems.
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/thread.h>
#include <sys/cred.h>
+ #include <sys/sid.h>
+ #include <strings.h>
+ /*
+ * This library does not implement real credentials. All contexts
+ * use an opaque cred_t object, and all activity happens in the
+ * context of the user who runs the program.
+ */
+
+ extern struct zone zone0;
+
struct cred {
+ uid_t cr_uid;
+ ksid_t *cr_ksid;
uint32_t pad[100];
};
cred_t cred0;
cred_t *kcred = &cred0;
+ /*
+ * Note that fksmbd uses CRED() for SMB user logons, but uses
+ * zone_kcred() for operations done internally by the server.
+ * Let CRED() (_curcred()) return &cred1, so it's different from
+ * kcred, otherwise tests like: (cred == kcred) are always true.
+ * Also, only cred1 will have a ksid (not kcred).
+ * The UID and SID are both "nobody".
+ */
+ ksiddomain_t ksdom1 = {1, 5, "S-1-0", {0}};
+ ksid_t ksid1 = { 60001, 0, 0, &ksdom1};
+ cred_t cred1 = { 60001, &ksid1 };
+
cred_t *
_curcred(void)
{
! return (&cred1);
}
/*ARGSUSED*/
void
crfree(cred_t *cr)
*** 48,65 ****
/*ARGSUSED*/
uid_t
crgetuid(const cred_t *cr)
{
! return (0);
}
/*ARGSUSED*/
uid_t
crgetruid(const cred_t *cr)
{
! return (0);
}
/*ARGSUSED*/
uid_t
crgetgid(const cred_t *cr)
--- 70,87 ----
/*ARGSUSED*/
uid_t
crgetuid(const cred_t *cr)
{
! return (cr->cr_uid);
}
/*ARGSUSED*/
uid_t
crgetruid(const cred_t *cr)
{
! return (cr->cr_uid);
}
/*ARGSUSED*/
uid_t
crgetgid(const cred_t *cr)
*** 79,88 ****
--- 101,137 ----
crgetgroups(const cred_t *cr)
{
return (NULL);
}
+ /*ARGSUSED*/
+ zoneid_t
+ crgetzoneid(const cred_t *cr)
+ {
+ return (GLOBAL_ZONEID);
+ }
+
+ /*ARGSUSED*/
+ struct zone *
+ crgetzone(const cred_t *cr)
+ {
+ return (&zone0);
+ }
+
cred_t *
zone_kcred(void)
{
return (kcred);
+ }
+
+ /*ARGSUSED*/
+ ksid_t *
+ crgetsid(const cred_t *cr, int i)
+ {
+ return (cr->cr_ksid);
+ }
+
+ cred_t *
+ ddi_get_cred(void)
+ {
+ return (_curcred());
}