OpenVAS Libraries  9.0.1
Data Structures | Macros | Typedefs | Enumerations
smb.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <ctype.h>
#include <errno.h>
#include "charset.h"

Go to the source code of this file.

Data Structures

struct  _smb_iconv_t
 

Macros

#define SMB_PORT1   445
 
#define SMB_PORT2   139
 
#define SMB_PORTS   "445 139"
 
#define smb_com   8
 
#define smb_rcls   9
 
#define smb_reh   10
 
#define smb_err   11
 
#define smb_flg   13
 
#define smb_flg2   14
 
#define smb_pidhigh   16
 
#define smb_ss_field   18
 
#define smb_tid   28
 
#define smb_pid   30
 
#define smb_uid   32
 
#define smb_mid   34
 
#define smb_wct   36
 
#define smb_vwv   37
 
#define smb_vwv0   37
 
#define smb_vwv1   39
 
#define smb_vwv2   41
 
#define smb_vwv3   43
 
#define smb_vwv4   45
 
#define smb_vwv5   47
 
#define smb_vwv6   49
 
#define smb_vwv7   51
 
#define smb_vwv8   53
 
#define smb_vwv9   55
 
#define smb_vwv10   57
 
#define smb_vwv11   59
 
#define smb_vwv12   61
 
#define smb_vwv13   63
 
#define smb_vwv14   65
 
#define smb_vwv15   67
 
#define smb_vwv16   69
 
#define smb_vwv17   71
 
#define STR_TERMINATE   1
 
#define STR_UPPER   2
 
#define STR_ASCII   4
 
#define STR_UNICODE   8
 
#define STR_NOALIGN   16
 
#define STR_TERMINATE_ASCII   128
 
#define NEGOTIATE_SECURITY_USER_LEVEL   0x01
 
#define NEGOTIATE_SECURITY_CHALLENGE_RESPONSE   0x02
 
#define NEGOTIATE_SECURITY_SIGNATURES_ENABLED   0x04
 
#define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED   0x08
 
#define FLAGS2_LONG_PATH_COMPONENTS   0x0001
 
#define FLAGS2_EXTENDED_ATTRIBUTES   0x0002
 
#define FLAGS2_SMB_SECURITY_SIGNATURES   0x0004
 
#define FLAGS2_UNKNOWN_BIT4   0x0010
 
#define FLAGS2_IS_LONG_NAME   0x0040
 
#define FLAGS2_EXTENDED_SECURITY   0x0800
 
#define FLAGS2_DFS_PATHNAMES   0x1000
 
#define FLAGS2_READ_PERMIT_EXECUTE   0x2000
 
#define FLAGS2_32_BIT_ERROR_CODES   0x4000
 
#define FLAGS2_UNICODE_STRINGS   0x8000
 
#define FLAGS2_WIN2K_SIGNATURE   0xC852 /* Hack alert ! For now... JRA. */
 
#define TCONX_FLAG_EXTENDED_RESPONSE   0x8
 
#define CAP_RAW_MODE   0x0001
 
#define CAP_MPX_MODE   0x0002
 
#define CAP_UNICODE   0x0004
 
#define CAP_LARGE_FILES   0x0008
 
#define CAP_NT_SMBS   0x0010
 
#define CAP_RPC_REMOTE_APIS   0x0020
 
#define CAP_STATUS32   0x0040
 
#define CAP_LEVEL_II_OPLOCKS   0x0080
 
#define CAP_LOCK_AND_READ   0x0100
 
#define CAP_NT_FIND   0x0200
 
#define CAP_DFS   0x1000
 
#define CAP_W2K_SMBS   0x2000
 
#define CAP_LARGE_READX   0x4000
 
#define CAP_LARGE_WRITEX   0x8000
 
#define CAP_UNIX   0x800000 /* Capabilities for UNIX extensions. Created by HP. */
 
#define CAP_EXTENDED_SECURITY   0x80000000
 
#define UCS2_SHIFT   0
 
#define UCS2_CHAR(c)   ((c) << UCS2_SHIFT)
 
#define UCS2_TO_CHAR(c)   (((c) >> UCS2_SHIFT) & 0xff)
 
#define COPY_UCS2_CHAR(dest, src)
 
#define SAFE_FREE(x)   do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
 
#define SMB_MALLOC_P(type)   (type *)malloc(sizeof(type))
 
#define SMB_REALLOC(p, s)   Realloc((p),(s),True) /* Always frees p on error or s == 0 */
 
#define SMB_STRDUP(s)   strdup(s)
 
#define SMB_STRNDUP(s, n)   strndup(s,n)
 
#define smb_len(buf)   (PVAL(buf,3)|(PVAL(buf,2)<<8)|((PVAL(buf,1)&1)<<16))
 

Typedefs

typedef struct _smb_iconv_tsmb_iconv_t
 
typedef uint64_t NTTIME
 

Enumerations

enum  protocol_types {
  PROTOCOL_NONE, PROTOCOL_CORE, PROTOCOL_COREPLUS, PROTOCOL_LANMAN1,
  PROTOCOL_LANMAN2, PROTOCOL_NT1
}
 

Macro Definition Documentation

◆ CAP_DFS

#define CAP_DFS   0x1000

◆ CAP_EXTENDED_SECURITY

#define CAP_EXTENDED_SECURITY   0x80000000

◆ CAP_LARGE_FILES

#define CAP_LARGE_FILES   0x0008

◆ CAP_LARGE_READX

#define CAP_LARGE_READX   0x4000

◆ CAP_LARGE_WRITEX

#define CAP_LARGE_WRITEX   0x8000

◆ CAP_LEVEL_II_OPLOCKS

#define CAP_LEVEL_II_OPLOCKS   0x0080

◆ CAP_LOCK_AND_READ

#define CAP_LOCK_AND_READ   0x0100

◆ CAP_MPX_MODE

#define CAP_MPX_MODE   0x0002

◆ CAP_NT_FIND

#define CAP_NT_FIND   0x0200

◆ CAP_NT_SMBS

#define CAP_NT_SMBS   0x0010

◆ CAP_RAW_MODE

#define CAP_RAW_MODE   0x0001

◆ CAP_RPC_REMOTE_APIS

#define CAP_RPC_REMOTE_APIS   0x0020

◆ CAP_STATUS32

#define CAP_STATUS32   0x0040

◆ CAP_UNICODE

#define CAP_UNICODE   0x0004

◆ CAP_UNIX

#define CAP_UNIX   0x800000 /* Capabilities for UNIX extensions. Created by HP. */

◆ CAP_W2K_SMBS

#define CAP_W2K_SMBS   0x2000

◆ COPY_UCS2_CHAR

#define COPY_UCS2_CHAR (   dest,
  src 
)
Value:
(((unsigned char *)(dest))[0] = ((unsigned char *)(src))[0],\
((unsigned char *)(dest))[1] = ((unsigned char *)(src))[1], (dest))

◆ FLAGS2_32_BIT_ERROR_CODES

#define FLAGS2_32_BIT_ERROR_CODES   0x4000

◆ FLAGS2_DFS_PATHNAMES

#define FLAGS2_DFS_PATHNAMES   0x1000

◆ FLAGS2_EXTENDED_ATTRIBUTES

#define FLAGS2_EXTENDED_ATTRIBUTES   0x0002

◆ FLAGS2_EXTENDED_SECURITY

#define FLAGS2_EXTENDED_SECURITY   0x0800

◆ FLAGS2_IS_LONG_NAME

#define FLAGS2_IS_LONG_NAME   0x0040

◆ FLAGS2_LONG_PATH_COMPONENTS

#define FLAGS2_LONG_PATH_COMPONENTS   0x0001

◆ FLAGS2_READ_PERMIT_EXECUTE

#define FLAGS2_READ_PERMIT_EXECUTE   0x2000

◆ FLAGS2_SMB_SECURITY_SIGNATURES

#define FLAGS2_SMB_SECURITY_SIGNATURES   0x0004

◆ FLAGS2_UNICODE_STRINGS

#define FLAGS2_UNICODE_STRINGS   0x8000

◆ FLAGS2_UNKNOWN_BIT4

#define FLAGS2_UNKNOWN_BIT4   0x0010

◆ FLAGS2_WIN2K_SIGNATURE

#define FLAGS2_WIN2K_SIGNATURE   0xC852 /* Hack alert ! For now... JRA. */

◆ NEGOTIATE_SECURITY_CHALLENGE_RESPONSE

#define NEGOTIATE_SECURITY_CHALLENGE_RESPONSE   0x02

◆ NEGOTIATE_SECURITY_SIGNATURES_ENABLED

#define NEGOTIATE_SECURITY_SIGNATURES_ENABLED   0x04

◆ NEGOTIATE_SECURITY_SIGNATURES_REQUIRED

#define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED   0x08

◆ NEGOTIATE_SECURITY_USER_LEVEL

#define NEGOTIATE_SECURITY_USER_LEVEL   0x01

◆ SAFE_FREE

#define SAFE_FREE (   x)    do { if ((x) != NULL) {free(x); x=NULL;} } while(0)

◆ smb_com

#define smb_com   8

◆ smb_err

#define smb_err   11

◆ smb_flg

#define smb_flg   13

◆ smb_flg2

#define smb_flg2   14

◆ smb_len

#define smb_len (   buf)    (PVAL(buf,3)|(PVAL(buf,2)<<8)|((PVAL(buf,1)&1)<<16))

◆ SMB_MALLOC_P

#define SMB_MALLOC_P (   type)    (type *)malloc(sizeof(type))

◆ smb_mid

#define smb_mid   34

◆ smb_pid

#define smb_pid   30

◆ smb_pidhigh

#define smb_pidhigh   16

◆ SMB_PORT1

#define SMB_PORT1   445

◆ SMB_PORT2

#define SMB_PORT2   139

◆ SMB_PORTS

#define SMB_PORTS   "445 139"

◆ smb_rcls

#define smb_rcls   9

◆ SMB_REALLOC

#define SMB_REALLOC (   p,
 
)    Realloc((p),(s),True) /* Always frees p on error or s == 0 */

◆ smb_reh

#define smb_reh   10

◆ smb_ss_field

#define smb_ss_field   18

◆ SMB_STRDUP

#define SMB_STRDUP (   s)    strdup(s)

◆ SMB_STRNDUP

#define SMB_STRNDUP (   s,
 
)    strndup(s,n)

◆ smb_tid

#define smb_tid   28

◆ smb_uid

#define smb_uid   32

◆ smb_vwv

#define smb_vwv   37

◆ smb_vwv0

#define smb_vwv0   37

◆ smb_vwv1

#define smb_vwv1   39

◆ smb_vwv10

#define smb_vwv10   57

◆ smb_vwv11

#define smb_vwv11   59

◆ smb_vwv12

#define smb_vwv12   61

◆ smb_vwv13

#define smb_vwv13   63

◆ smb_vwv14

#define smb_vwv14   65

◆ smb_vwv15

#define smb_vwv15   67

◆ smb_vwv16

#define smb_vwv16   69

◆ smb_vwv17

#define smb_vwv17   71

◆ smb_vwv2

#define smb_vwv2   41

◆ smb_vwv3

#define smb_vwv3   43

◆ smb_vwv4

#define smb_vwv4   45

◆ smb_vwv5

#define smb_vwv5   47

◆ smb_vwv6

#define smb_vwv6   49

◆ smb_vwv7

#define smb_vwv7   51

◆ smb_vwv8

#define smb_vwv8   53

◆ smb_vwv9

#define smb_vwv9   55

◆ smb_wct

#define smb_wct   36

◆ STR_ASCII

#define STR_ASCII   4

◆ STR_NOALIGN

#define STR_NOALIGN   16

◆ STR_TERMINATE

#define STR_TERMINATE   1

◆ STR_TERMINATE_ASCII

#define STR_TERMINATE_ASCII   128

◆ STR_UNICODE

#define STR_UNICODE   8

◆ STR_UPPER

#define STR_UPPER   2

◆ TCONX_FLAG_EXTENDED_RESPONSE

#define TCONX_FLAG_EXTENDED_RESPONSE   0x8

◆ UCS2_CHAR

#define UCS2_CHAR (   c)    ((c) << UCS2_SHIFT)

◆ UCS2_SHIFT

#define UCS2_SHIFT   0

◆ UCS2_TO_CHAR

#define UCS2_TO_CHAR (   c)    (((c) >> UCS2_SHIFT) & 0xff)

Typedef Documentation

◆ NTTIME

typedef uint64_t NTTIME

◆ smb_iconv_t

typedef struct _smb_iconv_t * smb_iconv_t

Enumeration Type Documentation

◆ protocol_types

Enumerator
PROTOCOL_NONE 
PROTOCOL_CORE 
PROTOCOL_COREPLUS 
PROTOCOL_LANMAN1 
PROTOCOL_LANMAN2 
PROTOCOL_NT1