diff --git a/lib/ldb/pyldb.h b/lib/ldb/pyldb.h
index 4fc89ec4814..dbe1d0fdb9e 100644
--- a/lib/ldb/pyldb.h
+++ b/lib/ldb/pyldb.h
@@ -46,6 +46,8 @@ PyObject *pyldb_Dn_FromDn(struct ldb_dn *);
 bool pyldb_Object_AsDn(TALLOC_CTX *mem_ctx, PyObject *object, struct ldb_context *ldb_ctx, struct ldb_dn **dn);
 #define pyldb_Dn_AsDn(pyobj) ((PyLdbDnObject *)pyobj)->dn
 
+bool pyldb_check_type(PyObject *obj, const char *type_name);
+
 typedef struct {
 	PyObject_HEAD
 	TALLOC_CTX *mem_ctx;
diff --git a/lib/ldb/pyldb_util.c b/lib/ldb/pyldb_util.c
index f8d0664f1e7..a1e3233e6ba 100644
--- a/lib/ldb/pyldb_util.c
+++ b/lib/ldb/pyldb_util.c
@@ -48,6 +48,17 @@ static PyTypeObject * PyLdb_GetPyType(const char *typename)
 	return (PyTypeObject*)py_obj;
 }
 
+bool pyldb_check_type(PyObject *obj, const char *typename)
+{
+	bool ok = false;
+	PyTypeObject *type = PyLdb_GetPyType(typename);
+	if (type != NULL) {
+		ok = PyObject_TypeCheck(obj, type);
+		Py_DECREF(type);
+	}
+	return ok;
+}
+
 /**
  * Obtain a ldb DN from a Python object.
  *