home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / smb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  119 lines

  1. /*
  2.  *  smb.h
  3.  *
  4.  *  Copyright (C) 1995, 1996 by Paal-Kr. Engstad and Volker Lendecke
  5.  *  Copyright (C) 1997 by Volker Lendecke
  6.  *
  7.  */
  8.  
  9. #ifndef _LINUX_SMB_H
  10. #define _LINUX_SMB_H
  11.  
  12. #include <linux/types.h>
  13. #include <linux/magic.h>
  14. #ifdef __KERNEL__
  15. #include <linux/time.h>
  16. #endif
  17.  
  18. enum smb_protocol { 
  19.     SMB_PROTOCOL_NONE, 
  20.     SMB_PROTOCOL_CORE, 
  21.     SMB_PROTOCOL_COREPLUS, 
  22.     SMB_PROTOCOL_LANMAN1, 
  23.     SMB_PROTOCOL_LANMAN2, 
  24.     SMB_PROTOCOL_NT1 
  25. };
  26.  
  27. enum smb_case_hndl {
  28.     SMB_CASE_DEFAULT,
  29.     SMB_CASE_LOWER,
  30.     SMB_CASE_UPPER
  31. };
  32.  
  33. struct smb_dskattr {
  34.         __u16 total;
  35.         __u16 allocblocks;
  36.         __u16 blocksize;
  37.         __u16 free;
  38. };
  39.  
  40. struct smb_conn_opt {
  41.  
  42.         /* The socket */
  43.     unsigned int fd;
  44.  
  45.     enum smb_protocol protocol;
  46.     enum smb_case_hndl case_handling;
  47.  
  48.     /* Connection-Options */
  49.  
  50.     __u32              max_xmit;
  51.     __u16              server_uid;
  52.     __u16              tid;
  53.  
  54.         /* The following are LANMAN 1.0 options */
  55.         __u16              secmode;
  56.         __u16              maxmux;
  57.         __u16              maxvcs;
  58.         __u16              rawmode;
  59.         __u32              sesskey;
  60.  
  61.     /* The following are NT LM 0.12 options */
  62.     __u32              maxraw;
  63.     __u32              capabilities;
  64.     __s16              serverzone;
  65. };
  66.  
  67. #ifdef __KERNEL__
  68.  
  69. #define SMB_NLS_MAXNAMELEN 20
  70. struct smb_nls_codepage {
  71.     char local_name[SMB_NLS_MAXNAMELEN];
  72.     char remote_name[SMB_NLS_MAXNAMELEN];
  73. };
  74.  
  75.  
  76. #define SMB_MAXNAMELEN 255
  77. #define SMB_MAXPATHLEN 1024
  78.  
  79. /*
  80.  * Contains all relevant data on a SMB networked file.
  81.  */
  82. struct smb_fattr {
  83.     __u16 attr;
  84.  
  85.     unsigned long    f_ino;
  86.     umode_t        f_mode;
  87.     nlink_t        f_nlink;
  88.     uid_t        f_uid;
  89.     gid_t        f_gid;
  90.     dev_t        f_rdev;
  91.     loff_t        f_size;
  92.     struct timespec    f_atime;
  93.     struct timespec f_mtime;
  94.     struct timespec f_ctime;
  95.     unsigned long    f_blocks;
  96.     int        f_unix;
  97. };
  98.  
  99. enum smb_conn_state {
  100.     CONN_VALID,        /* everything's fine */
  101.     CONN_INVALID,        /* Something went wrong, but did not
  102.                    try to reconnect yet. */
  103.     CONN_RETRIED,        /* Tried a reconnection, but was refused */
  104.     CONN_RETRYING        /* Currently trying to reconnect */
  105. };
  106.  
  107. #define SMB_HEADER_LEN   37     /* includes everything up to, but not
  108.                                  * including smb_bcc */
  109.  
  110. #define SMB_INITIAL_PACKET_SIZE        4000
  111. #define SMB_MAX_PACKET_SIZE        32768
  112.  
  113. /* reserve this much space for trans2 parameters. Shouldn't have to be more
  114.    than 10 or so, but OS/2 seems happier like this. */
  115. #define SMB_TRANS2_MAX_PARAM 64
  116.  
  117. #endif
  118. #endif
  119.