aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2007-11-03 00:48:29 -0400
committerSteve French <sfrench@us.ibm.com>2007-11-03 00:48:29 -0400
commit09fe7ba78dedb9017401ed555ecc4435c99a7556 (patch)
tree145fc0688723fb5083da5c3f25efd40cd1c1e559
parent745542e210b3b15751ea9d511321924ac36b85db (diff)
[CIFS] implement upcalls for SPNEGO blob via keyctl API
Add routines to handle upcalls to userspace via keyctl for the purpose of getting a SPNEGO blob for a particular uid and server combination. Clean up the Makefile a bit and set it up to only compile cifs_spnego if CONFIG_CIFS_UPCALL is set. Also change CONFIG_CIFS_UPCALL to depend on CONFIG_KEYS rather than CONFIG_CONNECTOR. cifs_spnego.h defines the communications between kernel and userspace and is intended to be shared with userspace programs. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/Kconfig2
-rw-r--r--fs/cifs/Makefile7
-rw-r--r--fs/cifs/cifsproto.h2
3 files changed, 9 insertions, 2 deletions
diff --git a/fs/Kconfig b/fs/Kconfig
index cc28a69246a7..e431c38a7262 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -2007,7 +2007,7 @@ config CIFS_EXPERIMENTAL
2007config CIFS_UPCALL 2007config CIFS_UPCALL
2008 bool "Kerberos/SPNEGO advanced session setup (EXPERIMENTAL)" 2008 bool "Kerberos/SPNEGO advanced session setup (EXPERIMENTAL)"
2009 depends on CIFS_EXPERIMENTAL 2009 depends on CIFS_EXPERIMENTAL
2010 depends on CONNECTOR 2010 depends on KEYS
2011 help 2011 help
2012 Enables an upcall mechanism for CIFS which will be used to contact 2012 Enables an upcall mechanism for CIFS which will be used to contact
2013 userspace helper utilities to provide SPNEGO packaged Kerberos 2013 userspace helper utilities to provide SPNEGO packaged Kerberos
diff --git a/fs/cifs/Makefile b/fs/cifs/Makefile
index ff6ba8d823f0..45e42fb97c19 100644
--- a/fs/cifs/Makefile
+++ b/fs/cifs/Makefile
@@ -3,4 +3,9 @@
3# 3#
4obj-$(CONFIG_CIFS) += cifs.o 4obj-$(CONFIG_CIFS) += cifs.o
5 5
6cifs-objs := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o link.o misc.o netmisc.o smbdes.o smbencrypt.o transport.o asn1.o md4.o md5.o cifs_unicode.o nterr.o xattr.o cifsencrypt.o fcntl.o readdir.o ioctl.o sess.o export.o cifsacl.o 6cifs-y := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o \
7 link.o misc.o netmisc.o smbdes.o smbencrypt.o transport.o asn1.o \
8 md4.o md5.o cifs_unicode.o nterr.o xattr.o cifsencrypt.o fcntl.o \
9 readdir.o ioctl.o sess.o export.o cifsacl.o
10
11cifs-$(CONFIG_CIFS_UPCALL) += cifs_spnego.o
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 1ffe25592b25..dd1d7c200ee6 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -76,6 +76,8 @@ extern void header_assemble(struct smb_hdr *, char /* command */ ,
76extern int small_smb_init_no_tc(const int smb_cmd, const int wct, 76extern int small_smb_init_no_tc(const int smb_cmd, const int wct,
77 struct cifsSesInfo *ses, 77 struct cifsSesInfo *ses,
78 void **request_buf); 78 void **request_buf);
79extern struct key *cifs_get_spnego_key(struct cifsSesInfo *sesInfo,
80 const char *hostname);
79extern int CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, 81extern int CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses,
80 const int stage, 82 const int stage,
81 const struct nls_table *nls_cp); 83 const struct nls_table *nls_cp);