2005-04-17 05:20:36 +07:00
|
|
|
/*
|
|
|
|
* smb.h
|
|
|
|
*
|
|
|
|
* Copyright (C) 1995, 1996 by Paal-Kr. Engstad and Volker Lendecke
|
|
|
|
* Copyright (C) 1997 by Volker Lendecke
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _LINUX_SMB_H
|
|
|
|
#define _LINUX_SMB_H
|
|
|
|
|
|
|
|
#include <linux/types.h>
|
2006-09-24 22:13:19 +07:00
|
|
|
#include <linux/magic.h>
|
2008-09-23 03:57:43 +07:00
|
|
|
#ifdef __KERNEL__
|
2008-04-29 14:59:33 +07:00
|
|
|
#include <linux/time.h>
|
2008-09-23 03:57:43 +07:00
|
|
|
#endif
|
2005-04-17 05:20:36 +07:00
|
|
|
|
|
|
|
enum smb_protocol {
|
|
|
|
SMB_PROTOCOL_NONE,
|
|
|
|
SMB_PROTOCOL_CORE,
|
|
|
|
SMB_PROTOCOL_COREPLUS,
|
|
|
|
SMB_PROTOCOL_LANMAN1,
|
|
|
|
SMB_PROTOCOL_LANMAN2,
|
|
|
|
SMB_PROTOCOL_NT1
|
|
|
|
};
|
|
|
|
|
|
|
|
enum smb_case_hndl {
|
|
|
|
SMB_CASE_DEFAULT,
|
|
|
|
SMB_CASE_LOWER,
|
|
|
|
SMB_CASE_UPPER
|
|
|
|
};
|
|
|
|
|
|
|
|
struct smb_dskattr {
|
|
|
|
__u16 total;
|
|
|
|
__u16 allocblocks;
|
|
|
|
__u16 blocksize;
|
|
|
|
__u16 free;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct smb_conn_opt {
|
|
|
|
|
|
|
|
/* The socket */
|
|
|
|
unsigned int fd;
|
|
|
|
|
|
|
|
enum smb_protocol protocol;
|
|
|
|
enum smb_case_hndl case_handling;
|
|
|
|
|
|
|
|
/* Connection-Options */
|
|
|
|
|
|
|
|
__u32 max_xmit;
|
|
|
|
__u16 server_uid;
|
|
|
|
__u16 tid;
|
|
|
|
|
|
|
|
/* The following are LANMAN 1.0 options */
|
|
|
|
__u16 secmode;
|
|
|
|
__u16 maxmux;
|
|
|
|
__u16 maxvcs;
|
|
|
|
__u16 rawmode;
|
|
|
|
__u32 sesskey;
|
|
|
|
|
|
|
|
/* The following are NT LM 0.12 options */
|
|
|
|
__u32 maxraw;
|
|
|
|
__u32 capabilities;
|
|
|
|
__s16 serverzone;
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
|
|
|
|
#define SMB_NLS_MAXNAMELEN 20
|
|
|
|
struct smb_nls_codepage {
|
|
|
|
char local_name[SMB_NLS_MAXNAMELEN];
|
|
|
|
char remote_name[SMB_NLS_MAXNAMELEN];
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#define SMB_MAXNAMELEN 255
|
|
|
|
#define SMB_MAXPATHLEN 1024
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Contains all relevant data on a SMB networked file.
|
|
|
|
*/
|
|
|
|
struct smb_fattr {
|
|
|
|
__u16 attr;
|
|
|
|
|
|
|
|
unsigned long f_ino;
|
|
|
|
umode_t f_mode;
|
|
|
|
nlink_t f_nlink;
|
|
|
|
uid_t f_uid;
|
|
|
|
gid_t f_gid;
|
|
|
|
dev_t f_rdev;
|
|
|
|
loff_t f_size;
|
|
|
|
struct timespec f_atime;
|
|
|
|
struct timespec f_mtime;
|
|
|
|
struct timespec f_ctime;
|
|
|
|
unsigned long f_blocks;
|
|
|
|
int f_unix;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum smb_conn_state {
|
|
|
|
CONN_VALID, /* everything's fine */
|
|
|
|
CONN_INVALID, /* Something went wrong, but did not
|
|
|
|
try to reconnect yet. */
|
|
|
|
CONN_RETRIED, /* Tried a reconnection, but was refused */
|
|
|
|
CONN_RETRYING /* Currently trying to reconnect */
|
|
|
|
};
|
|
|
|
|
|
|
|
#define SMB_HEADER_LEN 37 /* includes everything up to, but not
|
|
|
|
* including smb_bcc */
|
|
|
|
|
|
|
|
#define SMB_INITIAL_PACKET_SIZE 4000
|
|
|
|
#define SMB_MAX_PACKET_SIZE 32768
|
|
|
|
|
|
|
|
/* reserve this much space for trans2 parameters. Shouldn't have to be more
|
|
|
|
than 10 or so, but OS/2 seems happier like this. */
|
|
|
|
#define SMB_TRANS2_MAX_PARAM 64
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|