mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-01 08:34:21 +00:00
[CIFS] Add missing defines for DFS
Also has minor cleanup of previous patch CC: Igor Mammedov <niallain@gmail.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
fec4585fd7
commit
a1fe78f16e
@ -1904,6 +1904,15 @@ typedef struct smb_com_transaction2_get_dfs_refer_req {
|
|||||||
char RequestFileName[1];
|
char RequestFileName[1];
|
||||||
} __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ;
|
} __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ;
|
||||||
|
|
||||||
|
#define DFS_VERSION cpu_to_le16(0x0003)
|
||||||
|
|
||||||
|
/* DFS server target type */
|
||||||
|
#define DFS_TYPE_LINK 0x0000 /* also for sysvol targets */
|
||||||
|
#define DFS_TYPE_ROOT 0x0001
|
||||||
|
|
||||||
|
/* Referral Entry Flags */
|
||||||
|
#define DFS_NAME_LIST_REF 0x0200
|
||||||
|
|
||||||
typedef struct dfs_referral_level_3 {
|
typedef struct dfs_referral_level_3 {
|
||||||
__le16 VersionNumber;
|
__le16 VersionNumber;
|
||||||
__le16 Size;
|
__le16 Size;
|
||||||
|
@ -107,6 +107,7 @@ cifs_strncpy_to_host(char **dst, const char *src, const int maxlen,
|
|||||||
strncpy(*dst, src, plen);
|
strncpy(*dst, src, plen);
|
||||||
}
|
}
|
||||||
(*dst)[plen] = 0;
|
(*dst)[plen] = 0;
|
||||||
|
(*dst)[plen+1] = 0; /* harmless for ASCII case, needed for Unicode */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
cifs_strncpy_to_host_ErrExit:
|
cifs_strncpy_to_host_ErrExit:
|
||||||
@ -3907,7 +3908,7 @@ GetInodeNumOut:
|
|||||||
* on failure - errno
|
* on failure - errno
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
||||||
unsigned int *num_of_nodes,
|
unsigned int *num_of_nodes,
|
||||||
struct dfs_info3_param **target_nodes,
|
struct dfs_info3_param **target_nodes,
|
||||||
const struct nls_table *nls_codepage)
|
const struct nls_table *nls_codepage)
|
||||||
@ -3924,7 +3925,7 @@ parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
|||||||
cERROR(1, ("num_referrals: must be at least > 0,"
|
cERROR(1, ("num_referrals: must be at least > 0,"
|
||||||
"but we get num_referrals = %d\n", *num_of_nodes));
|
"but we get num_referrals = %d\n", *num_of_nodes));
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto parse_DFS_REFERRALS_exit;
|
goto parse_DFS_referrals_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref = (struct dfs_referral_level_3 *) &(pSMBr->referrals);
|
ref = (struct dfs_referral_level_3 *) &(pSMBr->referrals);
|
||||||
@ -3932,7 +3933,7 @@ parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
|||||||
cERROR(1, ("Referrals of V%d version are not supported,"
|
cERROR(1, ("Referrals of V%d version are not supported,"
|
||||||
"should be V3", ref->VersionNumber));
|
"should be V3", ref->VersionNumber));
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto parse_DFS_REFERRALS_exit;
|
goto parse_DFS_referrals_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get the upper boundary of the resp buffer */
|
/* get the upper boundary of the resp buffer */
|
||||||
@ -3948,7 +3949,7 @@ parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
|||||||
if (*target_nodes == NULL) {
|
if (*target_nodes == NULL) {
|
||||||
cERROR(1, ("Failed to allocate buffer for target_nodes\n"));
|
cERROR(1, ("Failed to allocate buffer for target_nodes\n"));
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto parse_DFS_REFERRALS_exit;
|
goto parse_DFS_referrals_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* collect neccessary data from referrals */
|
/* collect neccessary data from referrals */
|
||||||
@ -3968,7 +3969,7 @@ parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
|||||||
rc = cifs_strncpy_to_host(&(node->path_name), temp,
|
rc = cifs_strncpy_to_host(&(node->path_name), temp,
|
||||||
max_len, is_unicode, nls_codepage);
|
max_len, is_unicode, nls_codepage);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto parse_DFS_REFERRALS_exit;
|
goto parse_DFS_referrals_exit;
|
||||||
|
|
||||||
/* copy link target UNC */
|
/* copy link target UNC */
|
||||||
temp = (char *)ref + le16_to_cpu(ref->NetworkAddressOffset);
|
temp = (char *)ref + le16_to_cpu(ref->NetworkAddressOffset);
|
||||||
@ -3976,12 +3977,12 @@ parse_DFS_REFERRALS(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
|||||||
rc = cifs_strncpy_to_host(&(node->node_name), temp,
|
rc = cifs_strncpy_to_host(&(node->node_name), temp,
|
||||||
max_len, is_unicode, nls_codepage);
|
max_len, is_unicode, nls_codepage);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto parse_DFS_REFERRALS_exit;
|
goto parse_DFS_referrals_exit;
|
||||||
|
|
||||||
ref += ref->Size;
|
ref += ref->Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_DFS_REFERRALS_exit:
|
parse_DFS_referrals_exit:
|
||||||
if (rc) {
|
if (rc) {
|
||||||
free_dfs_info_array(*target_nodes, *num_of_nodes);
|
free_dfs_info_array(*target_nodes, *num_of_nodes);
|
||||||
*target_nodes = NULL;
|
*target_nodes = NULL;
|
||||||
@ -4090,7 +4091,7 @@ getDFSRetry:
|
|||||||
le16_to_cpu(pSMBr->t2.DataOffset)));
|
le16_to_cpu(pSMBr->t2.DataOffset)));
|
||||||
|
|
||||||
/* parse returned result into more usable form */
|
/* parse returned result into more usable form */
|
||||||
rc = parse_DFS_REFERRALS(pSMBr, num_of_nodes,
|
rc = parse_DFS_referrals(pSMBr, num_of_nodes,
|
||||||
target_nodes, nls_codepage);
|
target_nodes, nls_codepage);
|
||||||
|
|
||||||
GetDFSRefExit:
|
GetDFSRefExit:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user