summaryrefslogtreecommitdiff
path: root/source4/ldap_server/ldap_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/ldap_server/ldap_server.c')
-rw-r--r--source4/ldap_server/ldap_server.c257
1 files changed, 0 insertions, 257 deletions
diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c
index 34a4fc59e1..2ce6b03762 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -380,263 +380,6 @@ static BOOL ldap_append_to_buf(struct ldap_message *msg, struct rw_buffer *buf)
return res;
}
-struct ldapsrv_reply *ldapsrv_init_reply(struct ldapsrv_call *call, enum ldap_request_tag type)
-{
- struct ldapsrv_reply *reply;
-
- reply = talloc_p(call, struct ldapsrv_reply);
- if (!reply) {
- return NULL;
- }
-
- reply->prev = reply->next = NULL;
- reply->state = LDAPSRV_REPLY_STATE_NEW;
- reply->msg.messageid = call->request.messageid;
- reply->msg.type = type;
- reply->msg.mem_ctx = reply;
-
- return reply;
-}
-
-NTSTATUS ldapsrv_queue_reply(struct ldapsrv_call *call, struct ldapsrv_reply *reply)
-{
- DLIST_ADD_END(call->replies, reply, struct ldapsrv_reply *);
- return NT_STATUS_OK;
-}
-
-struct ldapsrv_partition *ldapsrv_get_partition(struct ldapsrv_connection *conn, const char *dn)
-{
- if (strcasecmp("", dn) == 0) {
- return conn->service->rootDSE;
- }
-
- return conn->service->default_partition;
-}
-
-NTSTATUS ldapsrv_unwilling(struct ldapsrv_call *call, int error)
-{
- struct ldapsrv_reply *reply;
- struct ldap_ExtendedResponse *r;
-
- DEBUG(10,("Unwilling type[%d] id[%d]\n", call->request.type, call->request.messageid));
-
- reply = ldapsrv_init_reply(call, LDAP_TAG_ExtendedResponse);
- if (!reply) {
- return NT_STATUS_NO_MEMORY;
- }
-
- r = &reply->msg.r.ExtendedResponse;
- r->response.resultcode = error;
- r->response.dn = NULL;
- r->response.errormessage = NULL;
- r->response.referral = NULL;
- r->name = NULL;
- r->value.data = NULL;
- r->value.length = 0;
-
- return ldapsrv_queue_reply(call, reply);
-}
-
-static NTSTATUS ldapsrv_BindRequest(struct ldapsrv_call *call)
-{
- struct ldap_BindRequest *req = &call->request.r.BindRequest;
- struct ldapsrv_reply *reply;
- struct ldap_BindResponse *resp;
-
- DEBUG(10, ("BindRequest dn: %s\n",req->dn));
-
- reply = ldapsrv_init_reply(call, LDAP_TAG_BindResponse);
- if (!reply) {
- return NT_STATUS_NO_MEMORY;
- }
-
- resp = &reply->msg.r.BindResponse;
- resp->response.resultcode = 0;
- resp->response.dn = NULL;
- resp->response.errormessage = NULL;
- resp->response.referral = NULL;
- resp->SASL.secblob = data_blob(NULL, 0);
-
- return ldapsrv_queue_reply(call, reply);
-}
-
-static NTSTATUS ldapsrv_UnbindRequest(struct ldapsrv_call *call)
-{
-/* struct ldap_UnbindRequest *req = &call->request->r.UnbindRequest;*/
- DEBUG(10, ("UnbindRequest\n"));
- return NT_STATUS_OK;
-}
-
-static NTSTATUS ldapsrv_SearchRequest(struct ldapsrv_call *call)
-{
- struct ldap_SearchRequest *req = &call->request.r.SearchRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("SearchRequest"));
- DEBUGADD(10, (" basedn: %s", req->basedn));
- DEBUGADD(10, (" filter: %s\n", req->filter));
-
- part = ldapsrv_get_partition(call->conn, req->basedn);
-
- if (!part->ops->Search) {
- struct ldap_Result *done;
- struct ldapsrv_reply *done_r;
-
- done_r = ldapsrv_init_reply(call, LDAP_TAG_SearchResultDone);
- if (!done_r) {
- return NT_STATUS_NO_MEMORY;
- }
-
- done = &done_r->msg.r.SearchResultDone;
- done->resultcode = 53;
- done->dn = NULL;
- done->errormessage = NULL;
- done->referral = NULL;
-
- return ldapsrv_queue_reply(call, done_r);
- }
-
- return part->ops->Search(part, call, req);
-}
-
-static NTSTATUS ldapsrv_ModifyRequest(struct ldapsrv_call *call)
-{
- struct ldap_ModifyRequest *req = &call->request.r.ModifyRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("ModifyRequest"));
- DEBUGADD(10, (" dn: %s", req->dn));
-
- part = ldapsrv_get_partition(call->conn, req->dn);
-
- if (!part->ops->Modify) {
- return ldapsrv_unwilling(call, 53);
- }
-
- return part->ops->Modify(part, call, req);
-}
-
-static NTSTATUS ldapsrv_AddRequest(struct ldapsrv_call *call)
-{
- struct ldap_AddRequest *req = &call->request.r.AddRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("AddRequest"));
- DEBUGADD(10, (" dn: %s", req->dn));
-
- part = ldapsrv_get_partition(call->conn, req->dn);
-
- if (!part->ops->Add) {
- return ldapsrv_unwilling(call, 53);
- }
-
- return part->ops->Add(part, call, req);
-}
-
-static NTSTATUS ldapsrv_DelRequest(struct ldapsrv_call *call)
-{
- struct ldap_DelRequest *req = &call->request.r.DelRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("DelRequest"));
- DEBUGADD(10, (" dn: %s", req->dn));
-
- part = ldapsrv_get_partition(call->conn, req->dn);
-
- if (!part->ops->Del) {
- return ldapsrv_unwilling(call, 53);
- }
-
- return part->ops->Del(part, call, req);
-}
-
-static NTSTATUS ldapsrv_ModifyDNRequest(struct ldapsrv_call *call)
-{
- struct ldap_ModifyDNRequest *req = &call->request.r.ModifyDNRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("ModifyDNRequrest"));
- DEBUGADD(10, (" dn: %s", req->dn));
- DEBUGADD(10, (" newrdn: %s", req->newrdn));
-
- part = ldapsrv_get_partition(call->conn, req->dn);
-
- if (!part->ops->ModifyDN) {
- return ldapsrv_unwilling(call, 53);
- }
-
- return part->ops->ModifyDN(part, call, req);
-}
-
-static NTSTATUS ldapsrv_CompareRequest(struct ldapsrv_call *call)
-{
- struct ldap_CompareRequest *req = &call->request.r.CompareRequest;
- struct ldapsrv_partition *part;
-
- DEBUG(10, ("CompareRequest"));
- DEBUGADD(10, (" dn: %s", req->dn));
-
- part = ldapsrv_get_partition(call->conn, req->dn);
-
- if (!part->ops->Compare) {
- return ldapsrv_unwilling(call, 53);
- }
-
- return part->ops->Compare(part, call, req);
-}
-
-static NTSTATUS ldapsrv_AbandonRequest(struct ldapsrv_call *call)
-{
-/* struct ldap_AbandonRequest *req = &call->request.r.AbandonRequest;*/
- DEBUG(10, ("AbandonRequest\n"));
- return NT_STATUS_OK;
-}
-
-static NTSTATUS ldapsrv_ExtendedRequest(struct ldapsrv_call *call)
-{
-/* struct ldap_ExtendedRequest *req = &call->request.r.ExtendedRequest;*/
- struct ldapsrv_reply *reply;
-
- DEBUG(10, ("Extended\n"));
-
- reply = ldapsrv_init_reply(call, LDAP_TAG_ExtendedResponse);
- if (!reply) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCT(reply->msg.r);
-
- return ldapsrv_queue_reply(call, reply);
-}
-
-static NTSTATUS ldapsrv_do_call(struct ldapsrv_call *call)
-{
- switch(call->request.type) {
- case LDAP_TAG_BindRequest:
- return ldapsrv_BindRequest(call);
- case LDAP_TAG_UnbindRequest:
- return ldapsrv_UnbindRequest(call);
- case LDAP_TAG_SearchRequest:
- return ldapsrv_SearchRequest(call);
- case LDAP_TAG_ModifyRequest:
- return ldapsrv_ModifyRequest(call);
- case LDAP_TAG_AddRequest:
- return ldapsrv_AddRequest(call);
- case LDAP_TAG_DelRequest:
- return ldapsrv_DelRequest(call);
- case LDAP_TAG_ModifyDNRequest:
- return ldapsrv_ModifyDNRequest(call);
- case LDAP_TAG_CompareRequest:
- return ldapsrv_CompareRequest(call);
- case LDAP_TAG_AbandonRequest:
- return ldapsrv_AbandonRequest(call);
- case LDAP_TAG_ExtendedRequest:
- return ldapsrv_ExtendedRequest(call);
- default:
- return ldapsrv_unwilling(call, 2);
- }
-}
-
static NTSTATUS ldapsrv_do_responses(struct ldapsrv_connection *conn)
{
struct ldapsrv_call *call, *next_call = NULL;