Add WERR_USER_ALREADY_EXISTS and WERR_PASSWORD_RESTRICTION.
[sfrench/samba-autobuild/.git] / source3 / include / reg_objects.h
index 7a5d82cee9b324e9eb50b816edcf2d38477950ac..1d0d0d4996f476aa98f02ddc8d7588e5b3cc84d9 100644 (file)
@@ -61,6 +61,7 @@ struct registry_value {
 typedef struct {
        uint32          num_values;
        REGISTRY_VALUE  **values;
+       int seqnum;
 } REGVAL_CTR;
 
 /* container for registry subkey names */
@@ -68,6 +69,7 @@ typedef struct {
 typedef struct {
        uint32          num_subkeys;
        char            **subkeys;
+       int seqnum;
 } REGSUBKEY_CTR;
 
 /*
@@ -92,14 +94,27 @@ typedef struct {
 #define KEY_HKCU               "HKCU"
 #define KEY_HKDD               "HKDD"
 #define KEY_SERVICES           "HKLM\\SYSTEM\\CurrentControlSet\\Services"
+#define KEY_EVENTLOG           "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog"
+#define KEY_SHARES             "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares"
+#define KEY_NETLOGON_PARAMS    "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters"
+#define KEY_TCPIP_PARAMS       "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"
+#define KEY_PROD_OPTIONS       "HKLM\\SYSTEM\\CurrentControlSet\\Control\\ProductOptions"
 #define KEY_PRINTING           "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print"
 #define KEY_PRINTING_2K                "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Printers"
 #define KEY_PRINTING_PORTS     "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Ports"
-#define KEY_EVENTLOG           "HKLM\\SYSTEM\\CurrentControlSet\\Services\\Eventlog"
-#define KEY_SHARES             "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Shares"
+#define KEY_CURRENT_VERSION    "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"
+#define KEY_PERFLIB            "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib"
+#define KEY_PERFLIB_009                "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009"
+#define KEY_GROUP_POLICY       "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Group Policy"
+#define KEY_WINLOGON           "HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"
 #define KEY_SMBCONF            "HKLM\\SOFTWARE\\Samba\\smbconf"
+#define KEY_SAMBA_GROUP_POLICY "HKLM\\SOFTWARE\\Samba\\Group Policy"
 #define KEY_TREE_ROOT          ""
 
+#define KEY_GP_MACHINE_POLICY          "HKLM\\Software\\Policies"
+#define KEY_GP_MACHINE_WIN_POLICY      "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies"
+#define KEY_GP_USER_POLICY             "HKCU\\Software\\Policies"
+#define KEY_GP_USER_WIN_POLICY         "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies"
 /*
  * Registry key types
  *     Most keys are going to be GENERIC -- may need a better name?
@@ -119,15 +134,17 @@ typedef struct {
        /* functions for enumerating subkeys and values */      
        int     (*fetch_subkeys)( const char *key, REGSUBKEY_CTR *subkeys);
        int     (*fetch_values) ( const char *key, REGVAL_CTR *val );
-       BOOL    (*store_subkeys)( const char *key, REGSUBKEY_CTR *subkeys );
-       BOOL    (*store_values)( const char *key, REGVAL_CTR *val );
-       BOOL    (*reg_access_check)( const char *keyname, uint32 requested,
+       bool    (*store_subkeys)( const char *key, REGSUBKEY_CTR *subkeys );
+       bool    (*store_values)( const char *key, REGVAL_CTR *val );
+       bool    (*reg_access_check)( const char *keyname, uint32 requested,
                                     uint32 *granted,
                                     const NT_USER_TOKEN *token );
        WERROR (*get_secdesc)(TALLOC_CTX *mem_ctx, const char *key,
                              struct security_descriptor **psecdesc);
        WERROR (*set_secdesc)(const char *key,
                              struct security_descriptor *sec_desc);
+       bool    (*subkeys_need_update)(REGSUBKEY_CTR *subkeys);
+       bool    (*values_need_update)(REGVAL_CTR *values);
 } REGISTRY_OPS;
 
 typedef struct {