1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-08 21:18:16 +03:00

r25301: Merge my includes.h cleanups.

(This used to be commit 37425495f3)
This commit is contained in:
Jelmer Vernooij 2007-09-23 21:35:03 +00:00 committed by Gerald (Jerry) Carter
parent 6a3093d941
commit 9b009c9009
28 changed files with 341 additions and 266 deletions

View File

@ -22,6 +22,7 @@
#include "includes.h"
#include "cluster/cluster.h"
#include "cluster/cluster_private.h"
#include "librpc/gen_ndr/misc.h"
static struct cluster_ops *ops;

View File

@ -29,6 +29,7 @@
#include "db_wrap.h"
#include "lib/util/dlinklist.h"
#include "param/param.h"
#include "librpc/gen_ndr/misc.h"
/* a linked list of messaging handlers, allowing incoming messages
to be directed to the right messaging context */

View File

@ -26,6 +26,7 @@
#include "db_wrap.h"
#include "system/filesys.h"
#include "param/param.h"
#include "librpc/gen_ndr/misc.h"
/*
server a server_id for the local node

View File

@ -33,9 +33,9 @@ librpc/ndr/libndr.h: ndr.h
lib/registry/registry.h: registry/registry.h
lib/registry/hive.h: registry/hive.h
lib/registry/patchfile.h: registry/patchfile.h
libcli/util/nterr.h: core/nterr.h
libcli/util/werror.h: core/werror.h
libcli/util/doserr.h: core/doserr.h
libcli/util/nt_status.h: core/ntstatus.h
libcli/util/ntstatus.h: core/ntstatus.h
libcli/cldap/cldap.h: cldap.h
lib/samba3/samba3.h: samba3.h
librpc/gen_ndr/dcerpc.h: gen_ndr/dcerpc.h

View File

@ -39,20 +39,16 @@
#include <stdlib.h>
#include <stdbool.h>
#include <talloc.h>
#include "libcli/util/nt_status.h"
#ifndef _PRINTF_ATTRIBUTE
#define _PRINTF_ATTRIBUTE(a1, a2) PRINTF_ATTRIBUTE(a1, a2)
#endif
#include "charset/charset.h"
#include "util/util.h"
#include "librpc/gen_ndr/misc.h"
typedef bool BOOL;
#define False false
#define True true
struct smbcli_tree;
#include "libcli/util/error.h"
/* String routines */

View File

@ -23,7 +23,7 @@
#include <talloc.h>
#include "librpc/gen_ndr/security.h"
#include "libcli/util/nt_status.h"
#include "libcli/util/ntstatus.h"
/**
* This file contains the hive API. This API is generally used for

View File

@ -26,7 +26,7 @@ struct registry_context;
#include <talloc.h>
#include "librpc/gen_ndr/security.h"
#include "lib/registry/hive.h"
#include "libcli/util/nt_status.h"
#include "libcli/util/ntstatus.h"
/* Handles for the predefined keys */
#define HKEY_CLASSES_ROOT 0x80000000

View File

@ -3,11 +3,9 @@ include ldap/config.mk
include security/config.mk
[SUBSYSTEM::LIBSAMBA-ERRORS]
PUBLIC_PROTO_HEADER = util/proto.h
PUBLIC_HEADERS = util/error.h util/nterr.h util/doserr.h util/nt_status.h
OBJ_FILES = util/doserr.o \
util/errormap.o \
util/clierror.o \
util/nterr.o \
[SUBSYSTEM::ASN1_UTIL]
@ -133,6 +131,7 @@ OBJ_FILES = raw/rawfile.o \
raw/clitransport.o \
raw/clisession.o \
raw/clitree.o \
raw/clierror.o \
raw/rawrequest.o \
raw/rawreadwrite.o \
raw/rawsearch.o \

View File

@ -22,6 +22,7 @@
#define _SMB_LDAP_H
#include "lib/ldb/include/ldb.h"
#include "librpc/gen_ndr/misc.h"
enum ldap_request_tag {
LDAP_TAG_BindRequest = 0,

View File

@ -66,7 +66,7 @@ NTSTATUS smbcli_nt_error(struct smbcli_tree *tree)
/* Return true if the last packet was an error */
BOOL smbcli_is_error(struct smbcli_tree *tree)
bool smbcli_is_error(struct smbcli_tree *tree)
{
return NT_STATUS_IS_ERR(smbcli_nt_error(tree));
}

View File

@ -23,6 +23,7 @@
#define __LIBCLI_RAW_INTERFACES_H__
#include "smb.h"
#include "librpc/gen_ndr/misc.h" /* for struct GUID */
/* this structure is just a wrapper for a string, the only reason we
bother with this is that it allows us to check the length provided

View File

@ -161,133 +161,8 @@
#define ERRsharebufexc 36 /* share buffer exceeded */
#define ERRdiskfull 39
/* these are win32 error codes. There are only a few places where
these matter for Samba, primarily in the NT printing code */
#define WERR_OK W_ERROR(0)
#define WERR_BADFUNC W_ERROR(1)
#define WERR_BADFILE W_ERROR(2)
#define WERR_ACCESS_DENIED W_ERROR(5)
#define WERR_BADFID W_ERROR(6)
#define WERR_NOMEM W_ERROR(8)
#define WERR_GENERAL_FAILURE W_ERROR(31)
#define WERR_NOT_SUPPORTED W_ERROR(50)
#define WERR_BAD_NETPATH W_ERROR(53)
#define WERR_BAD_NET_RESP W_ERROR(58)
#define WERR_UNEXP_NET_ERR W_ERROR(59)
#define WERR_PRINTQ_FULL W_ERROR(61)
#define WERR_NO_SPOOL_SPACE W_ERROR(62)
#define WERR_NO_SUCH_SHARE W_ERROR(67)
#define WERR_FILE_EXISTS W_ERROR(80)
#define WERR_BAD_PASSWORD W_ERROR(86)
#define WERR_INVALID_PARAM W_ERROR(87)
#define WERR_INSUFFICIENT_BUFFER W_ERROR(122)
#define WERR_INVALID_NAME W_ERROR(123)
#define WERR_UNKNOWN_LEVEL W_ERROR(124)
#define WERR_OBJECT_PATH_INVALID W_ERROR(161)
#define WERR_ALREADY_EXISTS W_ERROR(183)
#define WERR_NO_MORE_ITEMS W_ERROR(259)
#define WERR_MORE_DATA W_ERROR(234)
#define WERR_CAN_NOT_COMPLETE W_ERROR(1003)
#define WERR_NOT_FOUND W_ERROR(1168)
#define WERR_INVALID_COMPUTERNAME W_ERROR(1210)
#define WERR_INVALID_DOMAINNAME W_ERROR(1212)
#define WERR_UNKNOWN_REVISION W_ERROR(1305)
#define WERR_REVISION_MISMATCH W_ERROR(1306)
#define WERR_INVALID_OWNER W_ERROR(1307)
#define WERR_NO_LOGON_SERVERS W_ERROR(1311)
#define WERR_NO_SUCH_PRIVILEGE W_ERROR(1313)
#define WERR_PRIVILEGE_NOT_HELD W_ERROR(1314)
#define WERR_NO_SUCH_USER W_ERROR(1317)
#define WERR_LOGON_FAILURE W_ERROR(1326)
#define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
#define WERR_INVALID_DOMAIN_ROLE W_ERROR(1354)
#define WERR_NO_SUCH_DOMAIN W_ERROR(1355)
#define WERR_NO_SYSTEM_RESOURCES W_ERROR(1450)
#define WERR_SERVER_UNAVAILABLE W_ERROR(1722)
#define WERR_INVALID_FORM_NAME W_ERROR(1902)
#define WERR_INVALID_FORM_SIZE W_ERROR(1903)
#define WERR_ALREADY_SHARED W_ERROR(2118)
#define WERR_BUF_TOO_SMALL W_ERROR(2123)
#define WERR_JOB_NOT_FOUND W_ERROR(2151)
#define WERR_DEST_NOT_FOUND W_ERROR(2152)
#define WERR_SESSION_NOT_FOUND W_ERROR(2312)
#define WERR_FID_NOT_FOUND W_ERROR(2314)
#define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320)
#define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453)
#define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319)
#define WERR_STATUS_MORE_ENTRIES W_ERROR(0x0105)
#define WERR_PRINTER_DRIVER_ALREADY_INSTALLED W_ERROR(ERRdriveralreadyinstalled)
#define WERR_UNKNOWN_PORT W_ERROR(ERRunknownprinterport)
#define WERR_UNKNOWN_PRINTER_DRIVER W_ERROR(ERRunknownprinterdriver)
#define WERR_UNKNOWN_PRINTPROCESSOR W_ERROR(ERRunknownprintprocessor)
#define WERR_INVALID_SEPARATOR_FILE W_ERROR(ERRinvalidseparatorfile)
#define WERR_INVALID_PRIORITY W_ERROR(ERRinvalidjobpriority)
#define WERR_INVALID_PRINTER_NAME W_ERROR(ERRinvalidprintername)
#define WERR_PRINTER_ALREADY_EXISTS W_ERROR(ERRprinteralreadyexists)
#define WERR_INVALID_PRINTER_COMMAND W_ERROR(ERRinvalidprintercommand)
#define WERR_INVALID_DATATYPE W_ERROR(ERRinvaliddatatype)
#define WERR_INVALID_ENVIRONMENT W_ERROR(ERRinvalidenvironment)
#define WERR_UNKNOWN_PRINT_MONITOR W_ERROR(ERRunknownprintmonitor)
#define WERR_PRINTER_DRIVER_IN_USE W_ERROR(ERRprinterdriverinuse)
#define WERR_SPOOL_FILE_NOT_FOUND W_ERROR(ERRspoolfilenotfound)
#define WERR_SPL_NO_STARTDOC W_ERROR(ERRnostartdoc)
#define WERR_SPL_NO_ADDJOB W_ERROR(ERRnoaddjob)
#define WERR_PRINT_PROCESSOR_ALREADY_INSTALLED W_ERROR(ERRprintprocessoralreadyinstalled)
#define WERR_PRINT_MONITOR_ALREADY_INSTALLED W_ERROR(ERRprintmonitoralreadyinstalled)
#define WERR_INVALID_PRINT_MONITOR W_ERROR(ERRinvalidprintmonitor)
#define WERR_PRINT_MONITOR_IN_USE W_ERROR(ERRprintmonitorinuse)
#define WERR_PRINTER_HAS_JOBS_QUEUED W_ERROR(ERRprinterhasjobsqueued)
#define WERR_CLASS_NOT_REGISTERED W_ERROR(0x40154)
#define WERR_NO_SHUTDOWN_IN_PROGRESS W_ERROR(0x45c)
#define WERR_SHUTDOWN_ALREADY_IN_PROGRESS W_ERROR(0x45b)
#ifndef NERR_BASE
#define NERR_BASE (2100)
#endif
#define WERR_NET_NAME_NOT_FOUND W_ERROR(NERR_BASE+210)
#define WERR_DEVICE_NOT_SHARED W_ERROR(NERR_BASE+211)
/* DFS errors */
#define WERR_DFS_NO_SUCH_VOL W_ERROR(NERR_BASE+562)
#define WERR_DFS_NO_SUCH_SHARE W_ERROR(NERR_BASE+565)
#define WERR_DFS_NO_SUCH_SERVER W_ERROR(NERR_BASE+573)
#define WERR_DFS_INTERNAL_ERROR W_ERROR(NERR_BASE+590)
#define WERR_DFS_CANT_CREATE_JUNCT W_ERROR(NERR_BASE+569)
/* DS errors */
#define WERR_DS_SERVICE_BUSY W_ERROR(0x0000200e)
#define WERR_DS_SERVICE_UNAVAILABLE W_ERROR(0x0000200f)
#define WERR_DS_NO_SUCH_OBJECT W_ERROR(0x00002030)
#define WERR_DS_OBJ_NOT_FOUND W_ERROR(0x0000208d)
#define WERR_DS_SCHEMA_NOT_LOADED W_ERROR(0x20de)
#define WERR_DS_SCHEMA_ALLOC_FAILED W_ERROR(0x20df)
#define WERR_DS_ATT_SCHEMA_REQ_SYNTAX W_ERROR(0x000020e0)
#define WERR_DS_DRA_SCHEMA_MISMATCH W_ERROR(0x000020e2)
#define WERR_DS_DRA_INVALID_PARAMETER W_ERROR(0x000020f5)
#define WERR_DS_DRA_BAD_DN W_ERROR(0x000020f7)
#define WERR_DS_DRA_BAD_NC W_ERROR(0x000020f8)
#define WERR_DS_DRA_INTERNAL_ERROR W_ERROR(0x000020fa)
#define WERR_DS_DRA_OUT_OF_MEM W_ERROR(0x000020fe)
#define WERR_DS_SINGLE_VALUE_CONSTRAINT W_ERROR(0x00002081)
#define WERR_DS_DRA_DB_ERROR W_ERROR(0x00002103)
#define WERR_DS_DRA_NO_REPLICA W_ERROR(0x00002104)
#define WERR_DS_DRA_ACCESS_DENIED W_ERROR(0x00002105)
#define WERR_DS_DNS_LOOKUP_FAILURE W_ERROR(0x0000214c)
#define WERR_DS_WRONG_LINKED_ATTRIBUTE_SYNTAX W_ERROR(0x00002150)
#define WERR_DS_NO_MSDS_INTID W_ERROR(0x00002194)
#define WERR_DS_DUP_MSDS_INTID W_ERROR(0x00002195)
/* SEC errors */
#define WERR_SEC_E_ENCRYPT_FAILURE W_ERROR(0x80090329)
#define WERR_SEC_E_DECRYPT_FAILURE W_ERROR(0x80090330)
#define WERR_SEC_E_ALGORITHM_MISMATCH W_ERROR(0x80090331)
#define WERR_FOOBAR WERR_GENERAL_FAILURE
#endif /* _DOSERR_H */

View File

@ -19,8 +19,33 @@
#ifndef _SAMBA_ERROR_H_
#define _SAMBA_ERROR_H_
#include "libcli/util/nterr.h"
#include "libcli/util/werror.h"
#include "libcli/util/doserr.h"
#include "libcli/util/proto.h"
#include "libcli/util/ntstatus.h"
/** NT error on DOS connection! (NT_STATUS_OK) */
bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2);
/*****************************************************************************
convert a NT status code to a dos class/code
*****************************************************************************/
void ntstatus_to_dos(NTSTATUS ntstatus, uint8_t *eclass, uint32_t *ecode);
/*****************************************************************************
convert a WERROR to a NT status32 code
*****************************************************************************/
NTSTATUS werror_to_ntstatus(WERROR error);
/*****************************************************************************
convert a NTSTATUS to a WERROR
*****************************************************************************/
WERROR ntstatus_to_werror(NTSTATUS error);
/*********************************************************************
Map an NT error code from a Unix error code.
*********************************************************************/
NTSTATUS map_nt_error_from_unix(int unix_error);
#endif /* _SAMBA_ERROR_H */

View File

@ -1,122 +0,0 @@
/*
Unix SMB/CIFS implementation.
SMB parameters and setup, plus a whole lot more.
Copyright (C) Andrew Tridgell 2001
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _NT_STATUS_H
#define _NT_STATUS_H
#include <stdint.h>
/* the following rather strange looking definitions of NTSTATUS and WERROR
and there in order to catch common coding errors where different error types
are mixed up. This is especially important as we slowly convert Samba
from using BOOL for internal functions
*/
#if defined(HAVE_IMMEDIATE_STRUCTURES)
typedef struct {uint32_t v;} NTSTATUS;
#define NT_STATUS(x) ((NTSTATUS) { x })
#define NT_STATUS_V(x) ((x).v)
#else
typedef uint32_t NTSTATUS;
#define NT_STATUS(x) (x)
#define NT_STATUS_V(x) (x)
#endif
#if defined(HAVE_IMMEDIATE_STRUCTURES)
typedef struct {uint32_t v;} WERROR;
#define W_ERROR(x) ((WERROR) { x })
#define W_ERROR_V(x) ((x).v)
#else
typedef uint32_t WERROR;
#define W_ERROR(x) (x)
#define W_ERROR_V(x) (x)
#endif
#define NT_STATUS_IS_OK(x) (NT_STATUS_V(x) == 0)
#define NT_STATUS_IS_ERR(x) ((NT_STATUS_V(x) & 0xc0000000) == 0xc0000000)
/* checking for DOS error mapping here is ugly, but unfortunately the
alternative is a very intrusive rewrite of the torture code */
#define NT_STATUS_EQUAL(x,y) (NT_STATUS_IS_DOS(x)||NT_STATUS_IS_DOS(y)?ntstatus_dos_equal(x,y):NT_STATUS_V(x) == NT_STATUS_V(y))
#define NT_STATUS_HAVE_NO_MEMORY(x) do { \
if (!(x)) {\
return NT_STATUS_NO_MEMORY;\
}\
} while (0)
#define NT_STATUS_IS_OK_RETURN(x) do { \
if (NT_STATUS_IS_OK(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_NOT_OK_RETURN(x) do { \
if (!NT_STATUS_IS_OK(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_IS_ERR_RETURN(x) do { \
if (NT_STATUS_IS_ERR(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_NOT_ERR_RETURN(x) do { \
if (!NT_STATUS_IS_ERR(x)) {\
return x;\
}\
} while (0)
#define W_ERROR_IS_OK(x) (W_ERROR_V(x) == 0)
#define W_ERROR_EQUAL(x,y) (W_ERROR_V(x) == W_ERROR_V(y))
#define W_ERROR_HAVE_NO_MEMORY(x) do { \
if (!(x)) {\
return WERR_NOMEM;\
}\
} while (0)
#define W_ERROR_IS_OK_RETURN(x) do { \
if (W_ERROR_IS_OK(x)) {\
return x;\
}\
} while (0)
#define W_ERROR_NOT_OK_RETURN(x) do { \
if (!W_ERROR_IS_OK(x)) {\
return x;\
}\
} while (0)
/* this defines special NTSTATUS codes to represent DOS errors. I
have chosen this macro to produce status codes in the invalid
NTSTATUS range */
#define NT_STATUS_DOS(class, code) NT_STATUS(0xF1000000 | ((class)<<16) | code)
#define NT_STATUS_IS_DOS(status) ((NT_STATUS_V(status) & 0xFF000000) == 0xF1000000)
#define NT_STATUS_DOS_CLASS(status) ((NT_STATUS_V(status) >> 16) & 0xFF)
#define NT_STATUS_DOS_CODE(status) (NT_STATUS_V(status) & 0xFFFF)
/* define ldap error codes as NTSTATUS codes */
#define NT_STATUS_LDAP(code) NT_STATUS(0xF2000000 | code)
#define NT_STATUS_IS_LDAP(status) ((NT_STATUS_V(status) & 0xFF000000) == 0xF2000000)
#define NT_STATUS_LDAP_CODE(status) (NT_STATUS_V(status) & ~0xFF000000)
#endif

View File

@ -20,8 +20,24 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _NTERR_H
#define _NTERR_H
#ifndef _NTSTATUS_H
#define _NTSTATUS_H
/* the following rather strange looking definitions of NTSTATUS
are there in order to catch common coding errors where different error types
are mixed up. This is especially important as we slowly convert Samba
from using bool for internal functions
*/
#if defined(HAVE_IMMEDIATE_STRUCTURES)
typedef struct {uint32_t v;} NTSTATUS;
#define NT_STATUS(x) ((NTSTATUS) { x })
#define NT_STATUS_V(x) ((x).v)
#else
typedef uint32_t NTSTATUS;
#define NT_STATUS(x) (x)
#define NT_STATUS_V(x) (x)
#endif
/* Win32 Status codes. */
@ -585,4 +601,75 @@
* this means we need a torture test */
#define NT_STATUS_FOOBAR NT_STATUS_UNSUCCESSFUL
#endif /* _NTERR_H */
/*****************************************************************************
returns an NT error message. not amazingly helpful, but better than a number.
*****************************************************************************/
const char *nt_errstr(NTSTATUS nt_code);
/************************************************************************
Print friendler version fo NT error code
***********************************************************************/
const char *get_friendly_nt_error_msg(NTSTATUS nt_code);
/*****************************************************************************
returns an NT_STATUS constant as a string for inclusion in autogen C code
*****************************************************************************/
const char *get_nt_error_c_code(NTSTATUS nt_code);
/*****************************************************************************
returns the NT_STATUS constant matching the string supplied (as an NTSTATUS)
*****************************************************************************/
NTSTATUS nt_status_string_to_code(const char *nt_status_str);
#define NT_STATUS_IS_OK(x) (NT_STATUS_V(x) == 0)
#define NT_STATUS_IS_ERR(x) ((NT_STATUS_V(x) & 0xc0000000) == 0xc0000000)
/* checking for DOS error mapping here is ugly, but unfortunately the
alternative is a very intrusive rewrite of the torture code */
#define NT_STATUS_EQUAL(x,y) (NT_STATUS_IS_DOS(x)||NT_STATUS_IS_DOS(y)?ntstatus_dos_equal(x,y):NT_STATUS_V(x) == NT_STATUS_V(y))
#define NT_STATUS_HAVE_NO_MEMORY(x) do { \
if (!(x)) {\
return NT_STATUS_NO_MEMORY;\
}\
} while (0)
#define NT_STATUS_IS_OK_RETURN(x) do { \
if (NT_STATUS_IS_OK(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_NOT_OK_RETURN(x) do { \
if (!NT_STATUS_IS_OK(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_IS_ERR_RETURN(x) do { \
if (NT_STATUS_IS_ERR(x)) {\
return x;\
}\
} while (0)
#define NT_STATUS_NOT_ERR_RETURN(x) do { \
if (!NT_STATUS_IS_ERR(x)) {\
return x;\
}\
} while (0)
/* this defines special NTSTATUS codes to represent DOS errors. I
have chosen this macro to produce status codes in the invalid
NTSTATUS range */
#define NT_STATUS_DOS(class, code) NT_STATUS(0xF1000000 | ((class)<<16) | code)
#define NT_STATUS_IS_DOS(status) ((NT_STATUS_V(status) & 0xFF000000) == 0xF1000000)
#define NT_STATUS_DOS_CLASS(status) ((NT_STATUS_V(status) >> 16) & 0xFF)
#define NT_STATUS_DOS_CODE(status) (NT_STATUS_V(status) & 0xFFFF)
/* define ldap error codes as NTSTATUS codes */
#define NT_STATUS_LDAP(code) NT_STATUS(0xF2000000 | code)
#define NT_STATUS_IS_LDAP(status) ((NT_STATUS_V(status) & 0xFF000000) == 0xF2000000)
#define NT_STATUS_LDAP_CODE(status) (NT_STATUS_V(status) & ~0xFF000000)
#endif /* _NTSTATUS_H */

View File

@ -0,0 +1,193 @@
/*
Unix SMB/CIFS implementation.
SMB parameters and setup, plus a whole lot more.
Copyright (C) Andrew Tridgell 2001
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _WERROR_H_
#define _WERROR_H
#include <stdint.h>
/* the following rather strange looking definitions of NTSTATUS and WERROR
and there in order to catch common coding errors where different error types
are mixed up. This is especially important as we slowly convert Samba
from using bool for internal functions
*/
#if defined(HAVE_IMMEDIATE_STRUCTURES)
typedef struct {uint32_t v;} WERROR;
#define W_ERROR(x) ((WERROR) { x })
#define W_ERROR_V(x) ((x).v)
#else
typedef uint32_t WERROR;
#define W_ERROR(x) (x)
#define W_ERROR_V(x) (x)
#endif
#define W_ERROR_IS_OK(x) (W_ERROR_V(x) == 0)
#define W_ERROR_EQUAL(x,y) (W_ERROR_V(x) == W_ERROR_V(y))
#define W_ERROR_HAVE_NO_MEMORY(x) do { \
if (!(x)) {\
return WERR_NOMEM;\
}\
} while (0)
#define W_ERROR_IS_OK_RETURN(x) do { \
if (W_ERROR_IS_OK(x)) {\
return x;\
}\
} while (0)
#define W_ERROR_NOT_OK_RETURN(x) do { \
if (!W_ERROR_IS_OK(x)) {\
return x;\
}\
} while (0)
/* these are win32 error codes. There are only a few places where
these matter for Samba, primarily in the NT printing code */
#define WERR_OK W_ERROR(0)
#define WERR_BADFUNC W_ERROR(1)
#define WERR_BADFILE W_ERROR(2)
#define WERR_ACCESS_DENIED W_ERROR(5)
#define WERR_BADFID W_ERROR(6)
#define WERR_NOMEM W_ERROR(8)
#define WERR_GENERAL_FAILURE W_ERROR(31)
#define WERR_NOT_SUPPORTED W_ERROR(50)
#define WERR_BAD_NETPATH W_ERROR(53)
#define WERR_BAD_NET_RESP W_ERROR(58)
#define WERR_UNEXP_NET_ERR W_ERROR(59)
#define WERR_PRINTQ_FULL W_ERROR(61)
#define WERR_NO_SPOOL_SPACE W_ERROR(62)
#define WERR_NO_SUCH_SHARE W_ERROR(67)
#define WERR_FILE_EXISTS W_ERROR(80)
#define WERR_BAD_PASSWORD W_ERROR(86)
#define WERR_INVALID_PARAM W_ERROR(87)
#define WERR_INSUFFICIENT_BUFFER W_ERROR(122)
#define WERR_INVALID_NAME W_ERROR(123)
#define WERR_UNKNOWN_LEVEL W_ERROR(124)
#define WERR_OBJECT_PATH_INVALID W_ERROR(161)
#define WERR_ALREADY_EXISTS W_ERROR(183)
#define WERR_NO_MORE_ITEMS W_ERROR(259)
#define WERR_MORE_DATA W_ERROR(234)
#define WERR_CAN_NOT_COMPLETE W_ERROR(1003)
#define WERR_NOT_FOUND W_ERROR(1168)
#define WERR_INVALID_COMPUTERNAME W_ERROR(1210)
#define WERR_INVALID_DOMAINNAME W_ERROR(1212)
#define WERR_UNKNOWN_REVISION W_ERROR(1305)
#define WERR_REVISION_MISMATCH W_ERROR(1306)
#define WERR_INVALID_OWNER W_ERROR(1307)
#define WERR_NO_LOGON_SERVERS W_ERROR(1311)
#define WERR_NO_SUCH_PRIVILEGE W_ERROR(1313)
#define WERR_PRIVILEGE_NOT_HELD W_ERROR(1314)
#define WERR_NO_SUCH_USER W_ERROR(1317)
#define WERR_LOGON_FAILURE W_ERROR(1326)
#define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
#define WERR_INVALID_DOMAIN_ROLE W_ERROR(1354)
#define WERR_NO_SUCH_DOMAIN W_ERROR(1355)
#define WERR_NO_SYSTEM_RESOURCES W_ERROR(1450)
#define WERR_SERVER_UNAVAILABLE W_ERROR(1722)
#define WERR_INVALID_FORM_NAME W_ERROR(1902)
#define WERR_INVALID_FORM_SIZE W_ERROR(1903)
#define WERR_ALREADY_SHARED W_ERROR(2118)
#define WERR_BUF_TOO_SMALL W_ERROR(2123)
#define WERR_JOB_NOT_FOUND W_ERROR(2151)
#define WERR_DEST_NOT_FOUND W_ERROR(2152)
#define WERR_SESSION_NOT_FOUND W_ERROR(2312)
#define WERR_FID_NOT_FOUND W_ERROR(2314)
#define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320)
#define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453)
#define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319)
#define WERR_STATUS_MORE_ENTRIES W_ERROR(0x0105)
#define WERR_PRINTER_DRIVER_ALREADY_INSTALLED W_ERROR(ERRdriveralreadyinstalled)
#define WERR_UNKNOWN_PORT W_ERROR(ERRunknownprinterport)
#define WERR_UNKNOWN_PRINTER_DRIVER W_ERROR(ERRunknownprinterdriver)
#define WERR_UNKNOWN_PRINTPROCESSOR W_ERROR(ERRunknownprintprocessor)
#define WERR_INVALID_SEPARATOR_FILE W_ERROR(ERRinvalidseparatorfile)
#define WERR_INVALID_PRIORITY W_ERROR(ERRinvalidjobpriority)
#define WERR_INVALID_PRINTER_NAME W_ERROR(ERRinvalidprintername)
#define WERR_PRINTER_ALREADY_EXISTS W_ERROR(ERRprinteralreadyexists)
#define WERR_INVALID_PRINTER_COMMAND W_ERROR(ERRinvalidprintercommand)
#define WERR_INVALID_DATATYPE W_ERROR(ERRinvaliddatatype)
#define WERR_INVALID_ENVIRONMENT W_ERROR(ERRinvalidenvironment)
#define WERR_UNKNOWN_PRINT_MONITOR W_ERROR(ERRunknownprintmonitor)
#define WERR_PRINTER_DRIVER_IN_USE W_ERROR(ERRprinterdriverinuse)
#define WERR_SPOOL_FILE_NOT_FOUND W_ERROR(ERRspoolfilenotfound)
#define WERR_SPL_NO_STARTDOC W_ERROR(ERRnostartdoc)
#define WERR_SPL_NO_ADDJOB W_ERROR(ERRnoaddjob)
#define WERR_PRINT_PROCESSOR_ALREADY_INSTALLED W_ERROR(ERRprintprocessoralreadyinstalled)
#define WERR_PRINT_MONITOR_ALREADY_INSTALLED W_ERROR(ERRprintmonitoralreadyinstalled)
#define WERR_INVALID_PRINT_MONITOR W_ERROR(ERRinvalidprintmonitor)
#define WERR_PRINT_MONITOR_IN_USE W_ERROR(ERRprintmonitorinuse)
#define WERR_PRINTER_HAS_JOBS_QUEUED W_ERROR(ERRprinterhasjobsqueued)
#define WERR_CLASS_NOT_REGISTERED W_ERROR(0x40154)
#define WERR_NO_SHUTDOWN_IN_PROGRESS W_ERROR(0x45c)
#define WERR_SHUTDOWN_ALREADY_IN_PROGRESS W_ERROR(0x45b)
#define WERR_NET_NAME_NOT_FOUND W_ERROR(NERR_BASE+210)
#define WERR_DEVICE_NOT_SHARED W_ERROR(NERR_BASE+211)
/* DFS errors */
#define WERR_DFS_NO_SUCH_VOL W_ERROR(NERR_BASE+562)
#define WERR_DFS_NO_SUCH_SHARE W_ERROR(NERR_BASE+565)
#define WERR_DFS_NO_SUCH_SERVER W_ERROR(NERR_BASE+573)
#define WERR_DFS_INTERNAL_ERROR W_ERROR(NERR_BASE+590)
#define WERR_DFS_CANT_CREATE_JUNCT W_ERROR(NERR_BASE+569)
/* DS errors */
#define WERR_DS_SERVICE_BUSY W_ERROR(0x0000200e)
#define WERR_DS_SERVICE_UNAVAILABLE W_ERROR(0x0000200f)
#define WERR_DS_NO_SUCH_OBJECT W_ERROR(0x00002030)
#define WERR_DS_OBJ_NOT_FOUND W_ERROR(0x0000208d)
#define WERR_DS_SCHEMA_NOT_LOADED W_ERROR(0x20de)
#define WERR_DS_SCHEMA_ALLOC_FAILED W_ERROR(0x20df)
#define WERR_DS_ATT_SCHEMA_REQ_SYNTAX W_ERROR(0x000020e0)
#define WERR_DS_DRA_SCHEMA_MISMATCH W_ERROR(0x000020e2)
#define WERR_DS_DRA_INVALID_PARAMETER W_ERROR(0x000020f5)
#define WERR_DS_DRA_BAD_DN W_ERROR(0x000020f7)
#define WERR_DS_DRA_BAD_NC W_ERROR(0x000020f8)
#define WERR_DS_DRA_INTERNAL_ERROR W_ERROR(0x000020fa)
#define WERR_DS_DRA_OUT_OF_MEM W_ERROR(0x000020fe)
#define WERR_DS_SINGLE_VALUE_CONSTRAINT W_ERROR(0x00002081)
#define WERR_DS_DRA_DB_ERROR W_ERROR(0x00002103)
#define WERR_DS_DRA_NO_REPLICA W_ERROR(0x00002104)
#define WERR_DS_DRA_ACCESS_DENIED W_ERROR(0x00002105)
#define WERR_DS_DNS_LOOKUP_FAILURE W_ERROR(0x0000214c)
#define WERR_DS_WRONG_LINKED_ATTRIBUTE_SYNTAX W_ERROR(0x00002150)
#define WERR_DS_NO_MSDS_INTID W_ERROR(0x00002194)
#define WERR_DS_DUP_MSDS_INTID W_ERROR(0x00002195)
/* SEC errors */
#define WERR_SEC_E_ENCRYPT_FAILURE W_ERROR(0x80090329)
#define WERR_SEC_E_DECRYPT_FAILURE W_ERROR(0x80090330)
#define WERR_SEC_E_ALGORITHM_MISMATCH W_ERROR(0x80090331)
#define WERR_FOOBAR WERR_GENERAL_FAILURE
/*****************************************************************************
returns a windows error message. not amazingly helpful, but better than a number.
*****************************************************************************/
const char *win_errstr(WERROR werror);
#endif

View File

@ -18,6 +18,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "librpc/gen_ndr/misc.h"
struct libnet_context {
/* here we need:
* a client env context

View File

@ -17,6 +17,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "librpc/gen_ndr/misc.h"
/*
* IO structures for userman.c functions

View File

@ -2,6 +2,8 @@
dfs interface definition
*/
import "misc.idl";
[ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
version(3.0),
pointer_default(unique),

View File

@ -2,6 +2,8 @@
dssetup interface definition
*/
import "misc.idl";
[
uuid("3919286a-b10c-11d0-9ba8-00c04fd92ef5"),
version(0.0),

View File

@ -8,6 +8,8 @@ http://www.opengroup.org/onlinepubs/9629399/chap6.htm#tagcjh_11_02_03_01: bindin
*/
import "misc.idl";
[
uuid("e1af8308-5d1f-11c9-91a4-08002b14a0fa"),
version(3.0),

View File

@ -7,6 +7,8 @@
the change notify buffers
*/
import "misc.idl";
[
pointer_default(unique)
]

View File

@ -5,6 +5,8 @@
http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
*/
import "misc.idl";
[
pointer_default(unique)
]

View File

@ -23,7 +23,7 @@
#include <talloc.h>
#include "lib/util/util.h" /* for discard_const */
#include "lib/charset/charset.h"
#include "libcli/util/nt_status.h"
#include "libcli/util/ntstatus.h"
/*
this provides definitions for the libcli/rpc/ MSRPC library

View File

@ -390,7 +390,6 @@ sub Parse($)
pidl "/* header auto-generated by pidl */\n\n";
if (!is_intree()) {
pidl "#include <util/data_blob.h>\n";
pidl "#include <gen_ndr/misc.h>\n";
}
pidl "#include <stdint.h>\n";
pidl "\n";

View File

@ -2597,7 +2597,7 @@ sub GenerateIncludes($)
# Samba3 has everything in include/includes.h
if (is_intree() != 3) {
$self->pidl(choose_header("libcli/util/nterr.h", "core/nterr.h"));
$self->pidl(choose_header("libcli/util/ntstatus.h", "core/ntstatus.h"));
$self->pidl(choose_header("librpc/gen_ndr/ndr_misc.h", "gen_ndr/ndr_misc.h"));
}
}

View File

@ -23,6 +23,8 @@
#ifndef __SERVICE_STREAM_H__
#define __SERVICE_STREAM_H__
#include "librpc/gen_ndr/misc.h"
/* modules can use the following to determine if the interface has changed
* please increment the version number after each interface change
* with a comment and maybe update struct stream_connection_critical_sizes.

View File

@ -22,6 +22,8 @@
#ifndef __SERVICE_TASK_H__
#define __SERVICE_TASK_H__
#include "librpc/gen_ndr/misc.h"
struct task_server {
struct event_context *event_ctx;
const struct model_ops *model_ops;