r25301: Merge my includes.h cleanups.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 23 Sep 2007 21:35:03 +0000 (21:35 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:07:09 +0000 (15:07 -0500)
(This used to be commit 37425495f392a2d0122a93aa2c42758eab7dab5a)

28 files changed:
source4/cluster/cluster.c
source4/cluster/ctdb/ctdb_cluster.c
source4/cluster/local.c
source4/headermap.txt
source4/include/includes.h
source4/lib/registry/hive.h
source4/lib/registry/registry.h
source4/libcli/config.mk
source4/libcli/ldap/ldap.h
source4/libcli/raw/clierror.c [moved from source4/libcli/util/clierror.c with 97% similarity]
source4/libcli/raw/interfaces.h
source4/libcli/util/doserr.h
source4/libcli/util/error.h
source4/libcli/util/nt_status.h [deleted file]
source4/libcli/util/ntstatus.h [moved from source4/libcli/util/nterr.h with 91% similarity]
source4/libcli/util/werror.h [new file with mode: 0644]
source4/libnet/libnet.h
source4/libnet/userman.h
source4/librpc/idl/dfs.idl
source4/librpc/idl/dssetup.idl
source4/librpc/idl/epmapper.idl
source4/librpc/idl/notify.idl
source4/librpc/idl/orpc.idl
source4/librpc/ndr/libndr.h
source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
source4/smbd/service_stream.h
source4/smbd/service_task.h

index 606ca9b8b14f57e4c38d1b841b4b0e9f59c08f72..673ce2be4e121119459d38e89c14d01250c75426 100644 (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;
 
index ad35a5effead02469f3b4ffb5af55e5fdd415565..8cb1c0c45944444a6f7ee2ac1df0fb944321aeb2 100644 (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 */
index feefe902e101a4dbc5d989773c95f0c13a085cf2..be6d857d7b885a28241e05c621fafede0554a168 100644 (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
index 63c0ec31b2375a93e6a7af2c7f404d5034afea3e..ce42492cd64dc4cfa051895a4bea26fbaaf438eb 100644 (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
index d78f297aa639c119ff61f5a017d62bae6b619eef..93527b564b0a6c9ef92231e71589264678aeb31e 100644 (file)
 #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 */
index 821420887087777ca4d8489b3039276c66993f2c..5a5356dfd2eadaeb79a057bbf7289bb80bb876ed 100644 (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 
index 90dd094eb9611add95a4b1c7b7d1efbb0530d754..6dec84ad8906d71f86347903e83126188ec5c7ef 100644 (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
index d49fc90ec4a6e17d2486c5ae07d6b6526a86e782..89e6f3ce1cc8e4ef8507ede5980412328007f790 100644 (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 \
index 022c70e36aee81320bd1f4919d888e6c2e4041cc..e89322213aa891a4a43a556cd1bb2e580f0506cb 100644 (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,
similarity index 97%
rename from source4/libcli/util/clierror.c
rename to source4/libcli/raw/clierror.c
index 89bba21ed6a50342caf2f0f058c66c8da6ba368d..c515259ee78b4c5e22fb037a5809bc316f939a4a 100644 (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));
 }
index 23de6c3838e6342eeb47cdd8eb8361e5aa64048f..00ab788184aa4970564dc02dc4b7d5065c3163bc 100644 (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
index 0478eff9473d570762b384f4af1d145435d6d37e..bec268a565557ae02fc5b9b75fcd36e3912febfe 100644 (file)
 #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 */
index 8a641c8eb99ad83a90ee12c39dce4063d5660b6d..dd2de3da756bdbfa9cfa8a56df0e916e1d3e8cfd 100644 (file)
 #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 */
diff --git a/source4/libcli/util/nt_status.h b/source4/libcli/util/nt_status.h
deleted file mode 100644 (file)
index 8d81aab..0000000
+++ /dev/null
@@ -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
similarity index 91%
rename from source4/libcli/util/nterr.h
rename to source4/libcli/util/ntstatus.h
index 1ee867a0aad95da027b0f62428902c9f724bdfa9..026b5162dbdd4bc2fa34d21b0a7a6640f030a951 100644 (file)
    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. */
 
  * 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 */
diff --git a/source4/libcli/util/werror.h b/source4/libcli/util/werror.h
new file mode 100644 (file)
index 0000000..0f49514
--- /dev/null
@@ -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
index a51fa613a822395e15bac23e3c09165f29ea4e65..03cca1b7fe909b1803da4c24319241b60ceb3538 100644 (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
index b6302fe4ad0ac2c78274801b5e8394903c857bec..b681c25a16ccfd7cfa2e3ace349da58d88400654 100644 (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
index 30da410a4603846772027da66000c4135f527015..50c8a826df0aac18c64a41408e3b6d2eb83f07b9 100644 (file)
@@ -2,6 +2,8 @@
   dfs interface definition
 */
 
+import "misc.idl";
+
 [ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
   version(3.0),
   pointer_default(unique),
index 9c490aebe3d4db20fcfd4c55f97debe1a0c9df10..af6350cc438c9d19585951a6200c5555d235deb1 100644 (file)
@@ -2,6 +2,8 @@
   dssetup interface definition
 */
 
+import "misc.idl";
+
 [
        uuid("3919286a-b10c-11d0-9ba8-00c04fd92ef5"),
        version(0.0),
index 5611c3de1835a3167e785cdb721e85c996bcfdb5..baf9f238778875b893b8e93cbf29a01ff2179d91 100644 (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), 
index c4e633c254fe2890555ea96ca71c3e34d5c527b6..6f9ad25f092e3e838768ec528c97057fbe84927a 100644 (file)
@@ -7,6 +7,8 @@
    the change notify buffers
 */
 
+import "misc.idl";
+
 [
   pointer_default(unique)
 ]
index c1faefd3b1777c5c5bf0b0e0e4d5f9504e312858..d023865035d514894d061edd18157548e099702a 100644 (file)
@@ -5,6 +5,8 @@
   http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
  */
 
+import "misc.idl";
+
 [
        pointer_default(unique)
 ]
index 1cad68bf1535b83dcef31e4722e48e8b64b82dce..5b9089fc6d81f0e22a981e7e50f50ae0f1f99344 100644 (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
index 071bec297ce4534f27ab0a86dabb83e351db87f5..75d4c235cb4203d8ce1a6acd8af543264f921524 100644 (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";
index 9a29b72c1d89b570db572a210bf6d4004eb9ea32..cd3981bb282e9b6d17d4e971fde6421776d0e1bd 100644 (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"));
        }
 }
index 49869d8eed35d31a8203b42f0b32ec345596dbed..6eb26a42825605f06b44571cbf1fe0825808adcc 100644 (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.
index 54e6d0fa6c7981f2b5f0cb3518919430213fba99..e5bf9ea41460cdac056e56abfc1e73050025fca1 100644 (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;