f486ef8e20
We use the concept of "binding" when one of the secondary channel is in the process of connecting/reconnecting to the server. Till this binding process completes, and the channel is bound to an existing session, we redirect traffic from other established channels on the binding channel, effectively blocking all traffic till individual channels get reconnected. With my last set of commits, we can get rid of this binding serialization. We now have a bitmap of connection states for each channel. We will use this bitmap instead for tracking channel status. Having a bitmap also now enables us to keep the session alive, as long as even a single channel underneath is alive. Unfortunately, this also meant that we need to supply the tcp connection info for the channel during all negotiate and session setup functions. These changes have resulted in a slightly bigger code churn. However, I expect perf and robustness improvements in the mchan scenario after this change. Signed-off-by: Shyam Prasad N <sprasad@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com>
37 lines
927 B
C
37 lines
927 B
C
/* SPDX-License-Identifier: LGPL-2.1 */
|
|
/*
|
|
* SPNEGO upcall management for CIFS
|
|
*
|
|
* Copyright (c) 2007 Red Hat, Inc.
|
|
* Author(s): Jeff Layton (jlayton@redhat.com)
|
|
* Steve French (sfrench@us.ibm.com)
|
|
*
|
|
*/
|
|
|
|
#ifndef _CIFS_SPNEGO_H
|
|
#define _CIFS_SPNEGO_H
|
|
|
|
#define CIFS_SPNEGO_UPCALL_VERSION 2
|
|
|
|
/*
|
|
* The version field should always be set to CIFS_SPNEGO_UPCALL_VERSION.
|
|
* The flags field is for future use. The request-key callout should set
|
|
* sesskey_len and secblob_len, and then concatenate the SessKey+SecBlob
|
|
* and stuff it in the data field.
|
|
*/
|
|
struct cifs_spnego_msg {
|
|
uint32_t version;
|
|
uint32_t flags;
|
|
uint32_t sesskey_len;
|
|
uint32_t secblob_len;
|
|
uint8_t data[1];
|
|
};
|
|
|
|
#ifdef __KERNEL__
|
|
extern struct key_type cifs_spnego_key_type;
|
|
extern struct key *cifs_get_spnego_key(struct cifs_ses *sesInfo,
|
|
struct TCP_Server_Info *server);
|
|
#endif /* KERNEL */
|
|
|
|
#endif /* _CIFS_SPNEGO_H */
|