[PATCH 4/6] s4 python: Add a function to get the oid of an attribute when the attid is known
Matthieu Patou
mat at matws.net
Mon Apr 12 14:51:00 MDT 2010
This function is mainly to help decoding replPropertyMetaData in python
---
source4/dsdb/pydsdb.c | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c
index 1d71c6b..39f2067 100644
--- a/source4/dsdb/pydsdb.c
+++ b/source4/dsdb/pydsdb.c
@@ -19,6 +19,7 @@
#include <Python.h>
#include "includes.h"
+#include "libcli/util/pyerrors.h"
#include "dsdb/samdb/samdb.h"
#include "lib/ldb/pyldb.h"
#include "libcli/security/security.h"
@@ -183,6 +184,40 @@ static PyObject *py_samdb_ntds_invocation_id(PyObject *self, PyObject *args)
return result;
}
+static PyObject *py_dsdb_get_oid_from_attid(PyObject *self, PyObject *args)
+{
+ PyObject *py_ldb;
+ struct ldb_context *ldb;
+ uint32_t attid;
+ struct dsdb_schema *schema;
+ const char *oid;
+ TALLOC_CTX *mem_ctx;
+ WERROR status;
+
+ mem_ctx = talloc_new(NULL);
+ if (mem_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ if (!PyArg_ParseTuple(args, "Oi", &py_ldb, &attid))
+ return NULL;
+
+ PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+ schema = dsdb_get_schema(ldb, NULL);
+
+ if (!schema) {
+ PyErr_SetString(PyExc_RuntimeError, "Failed to find a schema from ldb \n");
+ return NULL;
+ }
+ status = dsdb_schema_pfm_oid_from_attid(schema->prefixmap, attid,
+ mem_ctx, &oid);
+ PyErr_WERROR_IS_ERR_RAISE(status);
+
+ return PyString_FromString(oid);
+}
+
static PyObject *py_dsdb_set_ntds_invocation_id(PyObject *self, PyObject *args)
{
PyObject *py_ldb, *py_guid;
@@ -314,6 +349,8 @@ static PyMethodDef py_dsdb_methods[] = {
"Get SID of domain in use." },
{ "samdb_ntds_invocation_id", (PyCFunction)py_samdb_ntds_invocation_id,
METH_VARARGS, "get the NTDS invocation ID GUID as a string"},
+ { "dsdb_get_oid_from_attid", (PyCFunction)py_dsdb_get_oid_from_attid, METH_VARARGS,
+ NULL },
{ "dsdb_set_ntds_invocation_id",
(PyCFunction)py_dsdb_set_ntds_invocation_id, METH_VARARGS,
NULL },
--
1.6.3.3
--------------010804020208020700020704
Content-Type: text/x-patch;
name="0006-s4-python-add-a-unit-test-for-function-dsdb_get_oid_.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename*0="0006-s4-python-add-a-unit-test-for-function-dsdb_get_oid_.pa";
filename*1="tch"
More information about the samba-technical
mailing list