提交 175ec9e1 编写于 作者: S Steve French

[CIFS] Rename server time zone field

Server time zone is not really a time zone, rather a time adjustement
in seconds.

CC: Guenter Kukkukk <linux@kukkukk.com>
Signed-off-by: NSteve French <sfrench@us.ibm.com>
上级 25ee4a98
...@@ -465,7 +465,7 @@ static struct super_operations cifs_super_ops = { ...@@ -465,7 +465,7 @@ static struct super_operations cifs_super_ops = {
.umount_begin = cifs_umount_begin, .umount_begin = cifs_umount_begin,
.remount_fs = cifs_remount, .remount_fs = cifs_remount,
#ifdef CONFIG_CIFS_STATS2 #ifdef CONFIG_CIFS_STATS2
cifs_show_stats, .cifs_show_stats,
#endif #endif
}; };
......
...@@ -153,7 +153,7 @@ struct TCP_Server_Info { ...@@ -153,7 +153,7 @@ struct TCP_Server_Info {
char sessid[4]; /* unique token id for this session */ char sessid[4]; /* unique token id for this session */
/* (returned on Negotiate */ /* (returned on Negotiate */
int capabilities; /* allow selective disabling of caps by smb sess */ int capabilities; /* allow selective disabling of caps by smb sess */
__u16 timeZone; __u16 timeAdj; /* Adjust for difference in server time zone in sec */
__u16 CurrentMid; /* multiplex id - rotating counter */ __u16 CurrentMid; /* multiplex id - rotating counter */
char cryptKey[CIFS_CRYPTO_KEY_SIZE]; char cryptKey[CIFS_CRYPTO_KEY_SIZE];
/* 16th byte of RFC1001 workstation name is always null */ /* 16th byte of RFC1001 workstation name is always null */
......
...@@ -417,7 +417,10 @@ typedef struct lanman_neg_rsp { ...@@ -417,7 +417,10 @@ typedef struct lanman_neg_rsp {
__le16 MaxNumberVcs; __le16 MaxNumberVcs;
__le16 RawMode; __le16 RawMode;
__le32 SessionKey; __le32 SessionKey;
__le32 ServerTime; struct {
__le16 Time;
__le16 Date;
} __attribute__((packed)) SrvTime;
__le16 ServerTimeZone; __le16 ServerTimeZone;
__le16 EncryptionKeyLength; __le16 EncryptionKeyLength;
__le16 Reserved; __le16 Reserved;
......
...@@ -473,7 +473,6 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses) ...@@ -473,7 +473,6 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
server->maxRw = 0;/* we do not need to use raw anyway */ server->maxRw = 0;/* we do not need to use raw anyway */
server->capabilities = CAP_MPX_MODE; server->capabilities = CAP_MPX_MODE;
} }
server->timeZone = le16_to_cpu(rsp->ServerTimeZone);
tmp = le16_to_cpu(rsp->ServerTimeZone); tmp = le16_to_cpu(rsp->ServerTimeZone);
if (tmp == (int)0xffff) { if (tmp == (int)0xffff) {
/* OS/2 often does not set timezone therefore /* OS/2 often does not set timezone therefore
...@@ -492,11 +491,11 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses) ...@@ -492,11 +491,11 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
tmp = (int)(utc.tv_sec - ts.tv_sec); tmp = (int)(utc.tv_sec - ts.tv_sec);
adjust = tmp < 0 ? -29 : 29; adjust = tmp < 0 ? -29 : 29;
tmp = ((tmp + adjust) / 60) * 60; tmp = ((tmp + adjust) / 60) * 60;
server->timeZone = tmp; server->timeAdj = tmp;
} else { } else {
server->timeZone = tmp * 60; /* also in seconds */ server->timeAdj = tmp * 60; /* also in seconds */
} }
cFYI(1,("server->timeZone: %d seconds", server->timeZone)); cFYI(1,("server->timeAdj: %d seconds", server->timeAdj));
/* BB get server time for time conversions and add /* BB get server time for time conversions and add
...@@ -557,7 +556,7 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses) ...@@ -557,7 +556,7 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
cFYI(0, ("Max buf = %d", ses->server->maxBuf)); cFYI(0, ("Max buf = %d", ses->server->maxBuf));
GETU32(ses->server->sessid) = le32_to_cpu(pSMBr->SessionKey); GETU32(ses->server->sessid) = le32_to_cpu(pSMBr->SessionKey);
server->capabilities = le32_to_cpu(pSMBr->Capabilities); server->capabilities = le32_to_cpu(pSMBr->Capabilities);
server->timeZone = le16_to_cpu(pSMBr->ServerTimeZone); server->timeAdj = le16_to_cpu(pSMBr->ServerTimeZone) * 60;
if (pSMBr->EncryptionKeyLength == CIFS_CRYPTO_KEY_SIZE) { if (pSMBr->EncryptionKeyLength == CIFS_CRYPTO_KEY_SIZE) {
memcpy(server->cryptKey, pSMBr->u.EncryptionKey, memcpy(server->cryptKey, pSMBr->u.EncryptionKey,
CIFS_CRYPTO_KEY_SIZE); CIFS_CRYPTO_KEY_SIZE);
......
...@@ -3320,15 +3320,16 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo, ...@@ -3320,15 +3320,16 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
if(linuxExtEnabled == 0) if(linuxExtEnabled == 0)
pSesInfo->capabilities &= (~CAP_UNIX); pSesInfo->capabilities &= (~CAP_UNIX);
/* pSesInfo->sequence_number = 0;*/ /* pSesInfo->sequence_number = 0;*/
cFYI(1,("Security Mode: 0x%x Capabilities: 0x%x Time Zone: %d", cFYI(1,("Security Mode: 0x%x Capabilities: 0x%x TimeAdjust: %d",
pSesInfo->server->secMode, pSesInfo->server->secMode,
pSesInfo->server->capabilities, pSesInfo->server->capabilities,
pSesInfo->server->timeZone)); pSesInfo->server->timeAdj));
if(experimEnabled < 2) if(experimEnabled < 2)
rc = CIFS_SessSetup(xid, pSesInfo, rc = CIFS_SessSetup(xid, pSesInfo,
first_time, nls_info); first_time, nls_info);
else if (extended_security else if (extended_security
&& (pSesInfo->capabilities & CAP_EXTENDED_SECURITY) && (pSesInfo->capabilities
& CAP_EXTENDED_SECURITY)
&& (pSesInfo->server->secType == NTLMSSP)) { && (pSesInfo->server->secType == NTLMSSP)) {
rc = -EOPNOTSUPP; rc = -EOPNOTSUPP;
} else if (extended_security } else if (extended_security
...@@ -3342,7 +3343,7 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo, ...@@ -3342,7 +3343,7 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
if (!rc) { if (!rc) {
if(ntlmv2_flag) { if(ntlmv2_flag) {
char * v2_response; char * v2_response;
cFYI(1,("Can use more secure NTLM version 2 password hash")); cFYI(1,("more secure NTLM ver2 hash"));
if(CalcNTLMv2_partial_mac_key(pSesInfo, if(CalcNTLMv2_partial_mac_key(pSesInfo,
nls_info)) { nls_info)) {
rc = -ENOMEM; rc = -ENOMEM;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册