trying to get HEAD building again. If you want the code
[abartlet/samba.git/.git] / source3 / passdb / pdb_get_set.c
index c95719451a231a511f50a888c64a7fd6da7cd9eb..ba07a4e01c8b01281aa429340e0138a25ab637e8 100644 (file)
@@ -330,6 +330,14 @@ uint32 pdb_get_unknown_6 (const SAM_ACCOUNT *sampass)
                return (-1);
 }
 
+void *pdb_get_backend_private_data (const SAM_ACCOUNT *sampass, const struct pdb_methods *my_methods)
+{
+       if (sampass && my_methods == sampass->private.backend_private_methods)
+               return sampass->private.backend_private_data;
+       else
+               return NULL;
+}
+
 /*********************************************************************
  Collection of set...() functions for SAM_ACCOUNT.
  ********************************************************************/
@@ -1011,6 +1019,29 @@ BOOL pdb_set_hours (SAM_ACCOUNT *sampass, const uint8 *hours, enum pdb_value_sta
        return pdb_set_init_flags(sampass, PDB_HOURS, flag);
 }
 
+BOOL pdb_set_backend_private_data (SAM_ACCOUNT *sampass, void *private_data, 
+                                  void (*free_fn)(void **), 
+                                  const struct pdb_methods *my_methods, 
+                                  enum pdb_value_state flag)
+{
+       if (!sampass)
+               return False;
+
+       /* does this backend 'own' this SAM_ACCOUNT? */
+       if (my_methods != sampass->private.backend_private_methods)
+               return False;
+
+       if (sampass->private.backend_private_data && sampass->private.backend_private_data_free_fn) {
+               sampass->private.backend_private_data_free_fn(&sampass->private.backend_private_data);
+       }
+
+       sampass->private.backend_private_data = private_data;
+       sampass->private.backend_private_data_free_fn = free_fn;
+       sampass->private.backend_private_methods = my_methods;
+
+       return pdb_set_init_flags(sampass, PDB_BACKEND_PRIVATE_DATA, flag);
+}
+
 
 /* Helpful interfaces to the above */