Subversion Repositories shark

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 *  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>

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_blksize;
        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_SUPER_MAGIC               0x517B

#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