From 578cbf1139e5a09df6160ea9ee6766190c566893 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 27 Apr 2011 08:57:41 +0200 Subject: s4:libcli/smb2: convert smb2_connect_*() to tevent_req metze --- source4/libcli/smb2/connect.c | 303 ++++++++++++++++++++++++-------------- source4/libcli/smb2/wscript_build | 3 +- 2 files changed, 198 insertions(+), 108 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 64ed6c3acc..85624019d1 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -20,6 +20,8 @@ */ #include "includes.h" +#include +#include "lib/util/tevent_ntstatus.h" #include "libcli/raw/libcliraw.h" #include "libcli/raw/raw_proto.h" #include "libcli/smb2/smb2.h" @@ -29,6 +31,7 @@ #include "param/param.h" struct smb2_connect_state { + struct tevent_context *ev; struct cli_credentials *credentials; struct resolve_context *resolve_ctx; const char *host; @@ -46,19 +49,24 @@ struct smb2_connect_state { /* continue after tcon reply */ -static void continue_tcon(struct smb2_request *req) +static void continue_tcon(struct smb2_request *smb2req) { - struct composite_context *c = talloc_get_type(req->async.private_data, - struct composite_context); - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); - - c->status = smb2_tree_connect_recv(req, &state->tcon); - if (!composite_is_ok(c)) return; - + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + NTSTATUS status; + + status = smb2_tree_connect_recv(smb2req, &state->tcon); + if (tevent_req_nterror(req, status)) { + return; + } + state->tree->tid = state->tcon.out.tid; - composite_done(c); + tevent_req_done(req); } /* @@ -66,44 +74,59 @@ static void continue_tcon(struct smb2_request *req) */ static void continue_session(struct composite_context *creq) { - struct composite_context *c = talloc_get_type(creq->async.private_data, - struct composite_context); - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); - struct smb2_request *req; + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + struct smb2_request *smb2req; + NTSTATUS status; - c->status = smb2_session_setup_spnego_recv(creq); - if (!composite_is_ok(c)) return; + status = smb2_session_setup_spnego_recv(creq); + if (tevent_req_nterror(req, status)) { + return; + } state->tree = smb2_tree_init(state->session, state, true); - if (composite_nomem(state->tree, c)) return; + if (tevent_req_nomem(state->tree, req)) { + return; + } state->tcon.in.reserved = 0; state->tcon.in.path = talloc_asprintf(state, "\\\\%s\\%s", state->host, state->share); - if (composite_nomem(state->tcon.in.path, c)) return; - - req = smb2_tree_connect_send(state->tree, &state->tcon); - if (composite_nomem(req, c)) return; + if (tevent_req_nomem(state->tcon.in.path, req)) { + return; + } - req->async.fn = continue_tcon; - req->async.private_data = c; + smb2req = smb2_tree_connect_send(state->tree, &state->tcon); + if (tevent_req_nomem(smb2req, req)) { + return; + } + smb2req->async.fn = continue_tcon; + smb2req->async.private_data = req; } /* continue after negprot reply */ -static void continue_negprot(struct smb2_request *req) +static void continue_negprot(struct smb2_request *smb2req) { - struct composite_context *c = talloc_get_type(req->async.private_data, - struct composite_context); - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); - struct smb2_transport *transport = req->transport; + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + struct smb2_transport *transport = smb2req->transport; struct composite_context *creq; + NTSTATUS status; - c->status = smb2_negprot_recv(req, c, &state->negprot); - if (!composite_is_ok(c)) return; + status = smb2_negprot_recv(smb2req, state, &state->negprot); + if (tevent_req_nterror(req, status)) { + return; + } transport->negotiate.secblob = state->negprot.out.secblob; talloc_steal(transport, transport->negotiate.secblob.data); @@ -115,7 +138,7 @@ static void continue_negprot(struct smb2_request *req) switch (transport->options.signing) { case SMB_SIGNING_OFF: if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { - composite_error(c, NT_STATUS_ACCESS_DENIED); + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); return; } transport->signing_required = false; @@ -138,18 +161,23 @@ static void continue_negprot(struct smb2_request *req) if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED) { transport->signing_required = true; } else { - composite_error(c, NT_STATUS_ACCESS_DENIED); + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); return; } break; } state->session = smb2_session_init(transport, state->gensec_settings, state, true); - if (composite_nomem(state->session, c)) return; + if (tevent_req_nomem(state->session, req)) { + return; + } creq = smb2_session_setup_spnego_send(state->session, state->credentials); - - composite_continue(c, creq, continue_session, c); + if (tevent_req_nomem(creq, req)) { + return; + } + creq->async.fn = continue_session; + creq->async.private_data = req; } /* @@ -157,27 +185,34 @@ static void continue_negprot(struct smb2_request *req) */ static void continue_socket(struct composite_context *creq) { - struct composite_context *c = talloc_get_type(creq->async.private_data, - struct composite_context); - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); struct smbcli_socket *sock; struct smb2_transport *transport; - struct smb2_request *req; + struct smb2_request *smb2req; + NTSTATUS status; uint16_t dialects[3] = { SMB2_DIALECT_REVISION_000, SMB2_DIALECT_REVISION_202, SMB2_DIALECT_REVISION_210 }; - c->status = smbcli_sock_connect_recv(creq, state, &sock); - if (!composite_is_ok(c)) return; + status = smbcli_sock_connect_recv(creq, state, &sock); + if (tevent_req_nterror(req, status)) { + return; + } transport = smb2_transport_init(sock, state, &state->options); - if (composite_nomem(transport, c)) return; + if (tevent_req_nomem(transport, req)) { + return; + } ZERO_STRUCT(state->negprot); - state->negprot.in.dialect_count = sizeof(dialects) / sizeof(dialects[0]); + state->negprot.in.dialect_count = ARRAY_SIZE(dialects); switch (transport->options.signing) { case SMB_SIGNING_OFF: state->negprot.in.security_mode = 0; @@ -195,11 +230,12 @@ static void continue_socket(struct composite_context *creq) unix_to_nt_time(&state->negprot.in.start_time, time(NULL)); state->negprot.in.dialects = dialects; - req = smb2_negprot_send(transport, &state->negprot); - if (composite_nomem(req, c)) return; - - req->async.fn = continue_negprot; - req->async.private_data = c; + smb2req = smb2_negprot_send(transport, &state->negprot); + if (tevent_req_nomem(smb2req, req)) { + return; + } + smb2req->async.fn = continue_negprot; + smb2req->async.private_data = req; } @@ -208,16 +244,21 @@ static void continue_socket(struct composite_context *creq) */ static void continue_resolve(struct composite_context *creq) { - struct composite_context *c = talloc_get_type(creq->async.private_data, - struct composite_context); - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + NTSTATUS status; const char *addr; const char **ports; const char *default_ports[] = { "445", NULL }; - c->status = resolve_name_recv(creq, state, &addr); - if (!composite_is_ok(c)) return; + status = resolve_name_recv(creq, state, &addr); + if (tevent_req_nterror(req, status)) { + return; + } if (state->ports == NULL) { ports = default_ports; @@ -225,92 +266,140 @@ static void continue_resolve(struct composite_context *creq) ports = state->ports; } - creq = smbcli_sock_connect_send(state, addr, ports, state->host, state->resolve_ctx, c->event_ctx, state->socket_options); - - composite_continue(c, creq, continue_socket, c); + creq = smbcli_sock_connect_send(state, addr, ports, + state->host, state->resolve_ctx, + state->ev, state->socket_options); + if (tevent_req_nomem(creq, req)) { + return; + } + creq->async.fn = continue_socket; + creq->async.private_data = req; } /* a composite function that does a full negprot/sesssetup/tcon, returning a connected smb2_tree */ -struct composite_context *smb2_connect_send(TALLOC_CTX *mem_ctx, - const char *host, - const char **ports, - const char *share, - struct resolve_context *resolve_ctx, - struct cli_credentials *credentials, - struct tevent_context *ev, - struct smbcli_options *options, - const char *socket_options, - struct gensec_settings *gensec_settings) +struct tevent_req *smb2_connect_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *host, + const char **ports, + const char *share, + struct resolve_context *resolve_ctx, + struct cli_credentials *credentials, + struct smbcli_options *options, + const char *socket_options, + struct gensec_settings *gensec_settings) { - struct composite_context *c; + struct tevent_req *req; struct smb2_connect_state *state; struct nbt_name name; struct composite_context *creq; - c = composite_create(mem_ctx, ev); - if (c == NULL) return NULL; - - state = talloc(c, struct smb2_connect_state); - if (composite_nomem(state, c)) return c; - c->private_data = state; + req = tevent_req_create(mem_ctx, &state, + struct smb2_connect_state); + if (req == NULL) { + return NULL; + } + state->ev = ev; state->credentials = credentials; state->options = *options; - state->host = talloc_strdup(c, host); - if (composite_nomem(state->host, c)) return c; - state->ports = talloc_reference(state, ports); - state->share = talloc_strdup(c, share); - if (composite_nomem(state->share, c)) return c; - state->resolve_ctx = talloc_reference(state, resolve_ctx); - state->socket_options = talloc_reference(state, socket_options); - state->gensec_settings = talloc_reference(state, gensec_settings); + state->host = host; + state->ports = ports; + state->share = share; + state->resolve_ctx = resolve_ctx; + state->socket_options = socket_options; + state->gensec_settings = gensec_settings; ZERO_STRUCT(name); name.name = host; - creq = resolve_name_send(resolve_ctx, state, &name, c->event_ctx); - composite_continue(c, creq, continue_resolve, c); - return c; + creq = resolve_name_send(resolve_ctx, state, &name, ev); + if (tevent_req_nomem(creq, req)) { + return tevent_req_post(req, ev); + } + creq->async.fn = continue_resolve; + creq->async.private_data = req; + return req; } /* receive a connect reply */ -NTSTATUS smb2_connect_recv(struct composite_context *c, TALLOC_CTX *mem_ctx, +NTSTATUS smb2_connect_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, struct smb2_tree **tree) { + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); NTSTATUS status; - struct smb2_connect_state *state = talloc_get_type(c->private_data, - struct smb2_connect_state); - status = composite_wait(c); - if (NT_STATUS_IS_OK(status)) { - *tree = talloc_steal(mem_ctx, state->tree); + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; } - talloc_free(c); - return status; + + *tree = talloc_move(mem_ctx, &state->tree); + + tevent_req_received(req); + return NT_STATUS_OK; } /* sync version of smb2_connect */ -NTSTATUS smb2_connect(TALLOC_CTX *mem_ctx, - const char *host, const char **ports, - const char *share, +NTSTATUS smb2_connect(TALLOC_CTX *mem_ctx, + const char *host, + const char **ports, + const char *share, struct resolve_context *resolve_ctx, struct cli_credentials *credentials, struct smb2_tree **tree, struct tevent_context *ev, struct smbcli_options *options, - const char *socket_options, - struct gensec_settings *gensec_settings) + const char *socket_options, + struct gensec_settings *gensec_settings) { - struct composite_context *c = smb2_connect_send(mem_ctx, host, ports, - share, resolve_ctx, - credentials, ev, options, - socket_options, - gensec_settings); - return smb2_connect_recv(c, mem_ctx, tree); + struct tevent_req *subreq; + NTSTATUS status; + bool ok; + TALLOC_CTX *frame = talloc_stackframe(); + + if (frame == NULL) { + return NT_STATUS_NO_MEMORY; + } + + subreq = smb2_connect_send(frame, + ev, + host, + ports, + share, + resolve_ctx, + credentials, + options, + socket_options, + gensec_settings); + if (subreq == NULL) { + TALLOC_FREE(frame); + return NT_STATUS_NO_MEMORY; + } + + ok = tevent_req_poll(subreq, ev); + if (!ok) { + status = map_nt_error_from_unix(errno); + TALLOC_FREE(frame); + return status; + } + + status = smb2_connect_recv(subreq, mem_ctx, tree); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + TALLOC_FREE(frame); + return NT_STATUS_OK; } diff --git a/source4/libcli/smb2/wscript_build b/source4/libcli/smb2/wscript_build index c39cf5fd39..5b5ac7d4e6 100644 --- a/source4/libcli/smb2/wscript_build +++ b/source4/libcli/smb2/wscript_build @@ -3,6 +3,7 @@ bld.SAMBA_SUBSYSTEM('LIBCLI_SMB2', source='transport.c request.c negprot.c session.c tcon.c create.c close.c connect.c getinfo.c write.c read.c setinfo.c find.c ioctl.c logoff.c tdis.c flush.c lock.c notify.c cancel.c keepalive.c break.c util.c signing.c lease_break.c', autoproto='smb2_proto.h', - public_deps='LIBCLI_RAW LIBPACKET gensec' + deps='UTIL_TEVENT', + public_deps='LIBCLI_RAW LIBPACKET gensec tevent' ) -- cgit From 2e5b539ba934e7269ea0c857b3df80434727acd2 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:01:26 +0200 Subject: s4:libcli/smb2: rename step functions of smb2_connect_*() They should all start with a smb2_connect_ prefix. metze --- source4/libcli/smb2/connect.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 85624019d1..2c7da5f582 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -46,10 +46,7 @@ struct smb2_connect_state { struct smb2_tree *tree; }; -/* - continue after tcon reply -*/ -static void continue_tcon(struct smb2_request *smb2req) +static void smb2_connect_tcon_done(struct smb2_request *smb2req) { struct tevent_req *req = talloc_get_type_abort(smb2req->async.private_data, @@ -69,10 +66,7 @@ static void continue_tcon(struct smb2_request *smb2req) tevent_req_done(req); } -/* - continue after a session setup -*/ -static void continue_session(struct composite_context *creq) +static void smb2_connect_session_done(struct composite_context *creq) { struct tevent_req *req = talloc_get_type_abort(creq->async.private_data, @@ -104,14 +98,11 @@ static void continue_session(struct composite_context *creq) if (tevent_req_nomem(smb2req, req)) { return; } - smb2req->async.fn = continue_tcon; + smb2req->async.fn = smb2_connect_tcon_done; smb2req->async.private_data = req; } -/* - continue after negprot reply -*/ -static void continue_negprot(struct smb2_request *smb2req) +static void smb2_connect_negprot_done(struct smb2_request *smb2req) { struct tevent_req *req = talloc_get_type_abort(smb2req->async.private_data, @@ -176,14 +167,11 @@ static void continue_negprot(struct smb2_request *smb2req) if (tevent_req_nomem(creq, req)) { return; } - creq->async.fn = continue_session; + creq->async.fn = smb2_connect_session_done; creq->async.private_data = req; } -/* - continue after a socket connect completes -*/ -static void continue_socket(struct composite_context *creq) +static void smb2_connect_socket_done(struct composite_context *creq) { struct tevent_req *req = talloc_get_type_abort(creq->async.private_data, @@ -234,15 +222,11 @@ static void continue_socket(struct composite_context *creq) if (tevent_req_nomem(smb2req, req)) { return; } - smb2req->async.fn = continue_negprot; + smb2req->async.fn = smb2_connect_negprot_done; smb2req->async.private_data = req; } - -/* - continue after a resolve finishes -*/ -static void continue_resolve(struct composite_context *creq) +static void smb2_connect_resolve_done(struct composite_context *creq) { struct tevent_req *req = talloc_get_type_abort(creq->async.private_data, @@ -272,7 +256,7 @@ static void continue_resolve(struct composite_context *creq) if (tevent_req_nomem(creq, req)) { return; } - creq->async.fn = continue_socket; + creq->async.fn = smb2_connect_socket_done; creq->async.private_data = req; } @@ -319,7 +303,7 @@ struct tevent_req *smb2_connect_send(TALLOC_CTX *mem_ctx, if (tevent_req_nomem(creq, req)) { return tevent_req_post(req, ev); } - creq->async.fn = continue_resolve; + creq->async.fn = smb2_connect_resolve_done; creq->async.private_data = req; return req; } -- cgit From 87d2537b485470ca0f0be882084d46deb682d5b8 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:04:19 +0200 Subject: s4:libcli/smb2: move smb2_connect_resolve_done() It should be after smb2_connect_send(). metze --- source4/libcli/smb2/connect.c | 71 +++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 36 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 2c7da5f582..0d29577a32 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -226,39 +226,7 @@ static void smb2_connect_socket_done(struct composite_context *creq) smb2req->async.private_data = req; } -static void smb2_connect_resolve_done(struct composite_context *creq) -{ - struct tevent_req *req = - talloc_get_type_abort(creq->async.private_data, - struct tevent_req); - struct smb2_connect_state *state = - tevent_req_data(req, - struct smb2_connect_state); - NTSTATUS status; - const char *addr; - const char **ports; - const char *default_ports[] = { "445", NULL }; - - status = resolve_name_recv(creq, state, &addr); - if (tevent_req_nterror(req, status)) { - return; - } - - if (state->ports == NULL) { - ports = default_ports; - } else { - ports = state->ports; - } - - creq = smbcli_sock_connect_send(state, addr, ports, - state->host, state->resolve_ctx, - state->ev, state->socket_options); - if (tevent_req_nomem(creq, req)) { - return; - } - creq->async.fn = smb2_connect_socket_done; - creq->async.private_data = req; -} +static void smb2_connect_resolve_done(struct composite_context *creq); /* a composite function that does a full negprot/sesssetup/tcon, returning @@ -308,9 +276,40 @@ struct tevent_req *smb2_connect_send(TALLOC_CTX *mem_ctx, return req; } -/* - receive a connect reply -*/ +static void smb2_connect_resolve_done(struct composite_context *creq) +{ + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + NTSTATUS status; + const char *addr; + const char **ports; + const char *default_ports[] = { "445", NULL }; + + status = resolve_name_recv(creq, state, &addr); + if (tevent_req_nterror(req, status)) { + return; + } + + if (state->ports == NULL) { + ports = default_ports; + } else { + ports = state->ports; + } + + creq = smbcli_sock_connect_send(state, addr, ports, + state->host, state->resolve_ctx, + state->ev, state->socket_options); + if (tevent_req_nomem(creq, req)) { + return; + } + creq->async.fn = smb2_connect_socket_done; + creq->async.private_data = req; +} + NTSTATUS smb2_connect_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct smb2_tree **tree) -- cgit From 1b4a1673544d70928f15a78e4ef70fcc6846daba Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:06:05 +0200 Subject: s4:libcli/smb2: move smb2_connect_socket_done() It should be after smb2_connect_resolve_done(). metze --- source4/libcli/smb2/connect.c | 112 +++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 55 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 0d29577a32..5c47ca7c29 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -171,61 +171,6 @@ static void smb2_connect_negprot_done(struct smb2_request *smb2req) creq->async.private_data = req; } -static void smb2_connect_socket_done(struct composite_context *creq) -{ - struct tevent_req *req = - talloc_get_type_abort(creq->async.private_data, - struct tevent_req); - struct smb2_connect_state *state = - tevent_req_data(req, - struct smb2_connect_state); - struct smbcli_socket *sock; - struct smb2_transport *transport; - struct smb2_request *smb2req; - NTSTATUS status; - uint16_t dialects[3] = { - SMB2_DIALECT_REVISION_000, - SMB2_DIALECT_REVISION_202, - SMB2_DIALECT_REVISION_210 - }; - - status = smbcli_sock_connect_recv(creq, state, &sock); - if (tevent_req_nterror(req, status)) { - return; - } - - transport = smb2_transport_init(sock, state, &state->options); - if (tevent_req_nomem(transport, req)) { - return; - } - - ZERO_STRUCT(state->negprot); - state->negprot.in.dialect_count = ARRAY_SIZE(dialects); - switch (transport->options.signing) { - case SMB_SIGNING_OFF: - state->negprot.in.security_mode = 0; - break; - case SMB_SIGNING_SUPPORTED: - case SMB_SIGNING_AUTO: - state->negprot.in.security_mode = SMB2_NEGOTIATE_SIGNING_ENABLED; - break; - case SMB_SIGNING_REQUIRED: - state->negprot.in.security_mode = - SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED; - break; - } - state->negprot.in.capabilities = 0; - unix_to_nt_time(&state->negprot.in.start_time, time(NULL)); - state->negprot.in.dialects = dialects; - - smb2req = smb2_negprot_send(transport, &state->negprot); - if (tevent_req_nomem(smb2req, req)) { - return; - } - smb2req->async.fn = smb2_connect_negprot_done; - smb2req->async.private_data = req; -} - static void smb2_connect_resolve_done(struct composite_context *creq); /* @@ -276,6 +221,8 @@ struct tevent_req *smb2_connect_send(TALLOC_CTX *mem_ctx, return req; } +static void smb2_connect_socket_done(struct composite_context *creq); + static void smb2_connect_resolve_done(struct composite_context *creq) { struct tevent_req *req = @@ -310,6 +257,61 @@ static void smb2_connect_resolve_done(struct composite_context *creq) creq->async.private_data = req; } +static void smb2_connect_socket_done(struct composite_context *creq) +{ + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + struct smbcli_socket *sock; + struct smb2_transport *transport; + struct smb2_request *smb2req; + NTSTATUS status; + uint16_t dialects[3] = { + SMB2_DIALECT_REVISION_000, + SMB2_DIALECT_REVISION_202, + SMB2_DIALECT_REVISION_210 + }; + + status = smbcli_sock_connect_recv(creq, state, &sock); + if (tevent_req_nterror(req, status)) { + return; + } + + transport = smb2_transport_init(sock, state, &state->options); + if (tevent_req_nomem(transport, req)) { + return; + } + + ZERO_STRUCT(state->negprot); + state->negprot.in.dialect_count = ARRAY_SIZE(dialects); + switch (transport->options.signing) { + case SMB_SIGNING_OFF: + state->negprot.in.security_mode = 0; + break; + case SMB_SIGNING_SUPPORTED: + case SMB_SIGNING_AUTO: + state->negprot.in.security_mode = SMB2_NEGOTIATE_SIGNING_ENABLED; + break; + case SMB_SIGNING_REQUIRED: + state->negprot.in.security_mode = + SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED; + break; + } + state->negprot.in.capabilities = 0; + unix_to_nt_time(&state->negprot.in.start_time, time(NULL)); + state->negprot.in.dialects = dialects; + + smb2req = smb2_negprot_send(transport, &state->negprot); + if (tevent_req_nomem(smb2req, req)) { + return; + } + smb2req->async.fn = smb2_connect_negprot_done; + smb2req->async.private_data = req; +} + NTSTATUS smb2_connect_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct smb2_tree **tree) -- cgit From ad65cf5b6a16d192959c3b059ed791bed5dd190d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:07:49 +0200 Subject: s4:libcli/smb2: move smb2_connect_negprot_done() It should be after smb2_connect_socket_done(). metze --- source4/libcli/smb2/connect.c | 140 +++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 69 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 5c47ca7c29..ed4795b5bd 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -102,75 +102,6 @@ static void smb2_connect_session_done(struct composite_context *creq) smb2req->async.private_data = req; } -static void smb2_connect_negprot_done(struct smb2_request *smb2req) -{ - struct tevent_req *req = - talloc_get_type_abort(smb2req->async.private_data, - struct tevent_req); - struct smb2_connect_state *state = - tevent_req_data(req, - struct smb2_connect_state); - struct smb2_transport *transport = smb2req->transport; - struct composite_context *creq; - NTSTATUS status; - - status = smb2_negprot_recv(smb2req, state, &state->negprot); - if (tevent_req_nterror(req, status)) { - return; - } - - transport->negotiate.secblob = state->negprot.out.secblob; - talloc_steal(transport, transport->negotiate.secblob.data); - transport->negotiate.system_time = state->negprot.out.system_time; - transport->negotiate.server_start_time = state->negprot.out.server_start_time; - transport->negotiate.security_mode = state->negprot.out.security_mode; - transport->negotiate.dialect_revision = state->negprot.out.dialect_revision; - - switch (transport->options.signing) { - case SMB_SIGNING_OFF: - if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { - tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); - return; - } - transport->signing_required = false; - break; - case SMB_SIGNING_SUPPORTED: - if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { - transport->signing_required = true; - } else { - transport->signing_required = false; - } - break; - case SMB_SIGNING_AUTO: - if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED) { - transport->signing_required = true; - } else { - transport->signing_required = false; - } - break; - case SMB_SIGNING_REQUIRED: - if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED) { - transport->signing_required = true; - } else { - tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); - return; - } - break; - } - - state->session = smb2_session_init(transport, state->gensec_settings, state, true); - if (tevent_req_nomem(state->session, req)) { - return; - } - - creq = smb2_session_setup_spnego_send(state->session, state->credentials); - if (tevent_req_nomem(creq, req)) { - return; - } - creq->async.fn = smb2_connect_session_done; - creq->async.private_data = req; -} - static void smb2_connect_resolve_done(struct composite_context *creq); /* @@ -257,6 +188,8 @@ static void smb2_connect_resolve_done(struct composite_context *creq) creq->async.private_data = req; } +static void smb2_connect_negprot_done(struct smb2_request *smb2req); + static void smb2_connect_socket_done(struct composite_context *creq) { struct tevent_req *req = @@ -312,6 +245,75 @@ static void smb2_connect_socket_done(struct composite_context *creq) smb2req->async.private_data = req; } +static void smb2_connect_negprot_done(struct smb2_request *smb2req) +{ + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + struct smb2_transport *transport = smb2req->transport; + struct composite_context *creq; + NTSTATUS status; + + status = smb2_negprot_recv(smb2req, state, &state->negprot); + if (tevent_req_nterror(req, status)) { + return; + } + + transport->negotiate.secblob = state->negprot.out.secblob; + talloc_steal(transport, transport->negotiate.secblob.data); + transport->negotiate.system_time = state->negprot.out.system_time; + transport->negotiate.server_start_time = state->negprot.out.server_start_time; + transport->negotiate.security_mode = state->negprot.out.security_mode; + transport->negotiate.dialect_revision = state->negprot.out.dialect_revision; + + switch (transport->options.signing) { + case SMB_SIGNING_OFF: + if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); + return; + } + transport->signing_required = false; + break; + case SMB_SIGNING_SUPPORTED: + if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { + transport->signing_required = true; + } else { + transport->signing_required = false; + } + break; + case SMB_SIGNING_AUTO: + if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED) { + transport->signing_required = true; + } else { + transport->signing_required = false; + } + break; + case SMB_SIGNING_REQUIRED: + if (transport->negotiate.security_mode & SMB2_NEGOTIATE_SIGNING_ENABLED) { + transport->signing_required = true; + } else { + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); + return; + } + break; + } + + state->session = smb2_session_init(transport, state->gensec_settings, state, true); + if (tevent_req_nomem(state->session, req)) { + return; + } + + creq = smb2_session_setup_spnego_send(state->session, state->credentials); + if (tevent_req_nomem(creq, req)) { + return; + } + creq->async.fn = smb2_connect_session_done; + creq->async.private_data = req; +} + NTSTATUS smb2_connect_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct smb2_tree **tree) -- cgit From eb0eb971ca56bba5fe0b7b39d0427913eb366355 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:09:35 +0200 Subject: s4:libcli/smb2: move smb2_connect_session_done() It should be after smb2_connect_negprot_done(). metze --- source4/libcli/smb2/connect.c | 74 ++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 36 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index ed4795b5bd..22fb8747e9 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -66,42 +66,6 @@ static void smb2_connect_tcon_done(struct smb2_request *smb2req) tevent_req_done(req); } -static void smb2_connect_session_done(struct composite_context *creq) -{ - struct tevent_req *req = - talloc_get_type_abort(creq->async.private_data, - struct tevent_req); - struct smb2_connect_state *state = - tevent_req_data(req, - struct smb2_connect_state); - struct smb2_request *smb2req; - NTSTATUS status; - - status = smb2_session_setup_spnego_recv(creq); - if (tevent_req_nterror(req, status)) { - return; - } - - state->tree = smb2_tree_init(state->session, state, true); - if (tevent_req_nomem(state->tree, req)) { - return; - } - - state->tcon.in.reserved = 0; - state->tcon.in.path = talloc_asprintf(state, "\\\\%s\\%s", - state->host, state->share); - if (tevent_req_nomem(state->tcon.in.path, req)) { - return; - } - - smb2req = smb2_tree_connect_send(state->tree, &state->tcon); - if (tevent_req_nomem(smb2req, req)) { - return; - } - smb2req->async.fn = smb2_connect_tcon_done; - smb2req->async.private_data = req; -} - static void smb2_connect_resolve_done(struct composite_context *creq); /* @@ -245,6 +209,8 @@ static void smb2_connect_socket_done(struct composite_context *creq) smb2req->async.private_data = req; } +static void smb2_connect_session_done(struct composite_context *creq); + static void smb2_connect_negprot_done(struct smb2_request *smb2req) { struct tevent_req *req = @@ -314,6 +280,42 @@ static void smb2_connect_negprot_done(struct smb2_request *smb2req) creq->async.private_data = req; } +static void smb2_connect_session_done(struct composite_context *creq) +{ + struct tevent_req *req = + talloc_get_type_abort(creq->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + struct smb2_request *smb2req; + NTSTATUS status; + + status = smb2_session_setup_spnego_recv(creq); + if (tevent_req_nterror(req, status)) { + return; + } + + state->tree = smb2_tree_init(state->session, state, true); + if (tevent_req_nomem(state->tree, req)) { + return; + } + + state->tcon.in.reserved = 0; + state->tcon.in.path = talloc_asprintf(state, "\\\\%s\\%s", + state->host, state->share); + if (tevent_req_nomem(state->tcon.in.path, req)) { + return; + } + + smb2req = smb2_tree_connect_send(state->tree, &state->tcon); + if (tevent_req_nomem(smb2req, req)) { + return; + } + smb2req->async.fn = smb2_connect_tcon_done; + smb2req->async.private_data = req; +} + NTSTATUS smb2_connect_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct smb2_tree **tree) -- cgit From 8116b19a2846261fe5dcc34fd640b7a52556503f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:11:50 +0200 Subject: s4:libcli/smb2: move smb2_connect_tcon_done() It should be after smb2_connect_session_done(). metze --- source4/libcli/smb2/connect.c | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index 22fb8747e9..b3d57ebff2 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -46,26 +46,6 @@ struct smb2_connect_state { struct smb2_tree *tree; }; -static void smb2_connect_tcon_done(struct smb2_request *smb2req) -{ - struct tevent_req *req = - talloc_get_type_abort(smb2req->async.private_data, - struct tevent_req); - struct smb2_connect_state *state = - tevent_req_data(req, - struct smb2_connect_state); - NTSTATUS status; - - status = smb2_tree_connect_recv(smb2req, &state->tcon); - if (tevent_req_nterror(req, status)) { - return; - } - - state->tree->tid = state->tcon.out.tid; - - tevent_req_done(req); -} - static void smb2_connect_resolve_done(struct composite_context *creq); /* @@ -280,6 +260,8 @@ static void smb2_connect_negprot_done(struct smb2_request *smb2req) creq->async.private_data = req; } +static void smb2_connect_tcon_done(struct smb2_request *smb2req); + static void smb2_connect_session_done(struct composite_context *creq) { struct tevent_req *req = @@ -316,6 +298,26 @@ static void smb2_connect_session_done(struct composite_context *creq) smb2req->async.private_data = req; } +static void smb2_connect_tcon_done(struct smb2_request *smb2req) +{ + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_connect_state *state = + tevent_req_data(req, + struct smb2_connect_state); + NTSTATUS status; + + status = smb2_tree_connect_recv(smb2req, &state->tcon); + if (tevent_req_nterror(req, status)) { + return; + } + + state->tree->tid = state->tcon.out.tid; + + tevent_req_done(req); +} + NTSTATUS smb2_connect_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct smb2_tree **tree) -- cgit From 6cb7d764d352ce69a85cfdb97a602dc040464200 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 27 Apr 2011 09:16:52 +0200 Subject: s4:libcli/smb2: move smb2_session_setup_spnego_send() to the top smb2_session_setup_spnego_send() should be on the top of the smb2_session_setup_spnego_* block. metze --- source4/libcli/smb2/session.c | 126 +++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 62 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/session.c b/source4/libcli/smb2/session.c index 12479623e7..121323e1dc 100644 --- a/source4/libcli/smb2/session.c +++ b/source4/libcli/smb2/session.c @@ -143,10 +143,72 @@ struct smb2_session_state { NTSTATUS gensec_status; }; +static void smb2_session_setup_spnego_handler(struct smb2_request *req); + +/* + a composite function that does a full SPNEGO session setup + */ +struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *session, + struct cli_credentials *credentials) +{ + struct composite_context *c; + struct smb2_session_state *state; + const char *chosen_oid; + + c = composite_create(session, session->transport->socket->event.ctx); + if (c == NULL) return NULL; + + state = talloc(c, struct smb2_session_state); + if (composite_nomem(state, c)) return c; + c->private_data = state; + + ZERO_STRUCT(state->io); + state->io.in.vc_number = 0; + if (session->transport->signing_required) { + state->io.in.security_mode = + SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED; + } + state->io.in.capabilities = 0; + state->io.in.channel = 0; + state->io.in.previous_sessionid = 0; + + c->status = gensec_set_credentials(session->gensec, credentials); + if (!composite_is_ok(c)) return c; + + c->status = gensec_set_target_hostname(session->gensec, + session->transport->socket->hostname); + if (!composite_is_ok(c)) return c; + + c->status = gensec_set_target_service(session->gensec, "cifs"); + if (!composite_is_ok(c)) return c; + + if (session->transport->negotiate.secblob.length > 0) { + chosen_oid = GENSEC_OID_SPNEGO; + } else { + chosen_oid = GENSEC_OID_NTLMSSP; + } + + c->status = gensec_start_mech_by_oid(session->gensec, chosen_oid); + if (!composite_is_ok(c)) return c; + + c->status = gensec_update(session->gensec, c, + session->transport->negotiate.secblob, + &state->io.in.secblob); + if (!NT_STATUS_EQUAL(c->status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { + composite_error(c, c->status); + return c; + } + state->gensec_status = c->status; + + state->req = smb2_session_setup_send(session, &state->io); + composite_continue_smb2(c, state->req, smb2_session_setup_spnego_handler, c); + return c; +} + /* handle continuations of the spnego session setup */ -static void session_request_handler(struct smb2_request *req) +static void smb2_session_setup_spnego_handler(struct smb2_request *req) { struct composite_context *c = talloc_get_type(req->async.private_data, struct composite_context); @@ -184,7 +246,7 @@ static void session_request_handler(struct smb2_request *req) return; } - state->req->async.fn = session_request_handler; + state->req->async.fn = smb2_session_setup_spnego_handler; state->req->async.private_data = c; return; } @@ -207,66 +269,6 @@ static void session_request_handler(struct smb2_request *req) composite_done(c); } -/* - a composite function that does a full SPNEGO session setup - */ -struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *session, - struct cli_credentials *credentials) -{ - struct composite_context *c; - struct smb2_session_state *state; - const char *chosen_oid; - - c = composite_create(session, session->transport->socket->event.ctx); - if (c == NULL) return NULL; - - state = talloc(c, struct smb2_session_state); - if (composite_nomem(state, c)) return c; - c->private_data = state; - - ZERO_STRUCT(state->io); - state->io.in.vc_number = 0; - if (session->transport->signing_required) { - state->io.in.security_mode = - SMB2_NEGOTIATE_SIGNING_ENABLED | SMB2_NEGOTIATE_SIGNING_REQUIRED; - } - state->io.in.capabilities = 0; - state->io.in.channel = 0; - state->io.in.previous_sessionid = 0; - - c->status = gensec_set_credentials(session->gensec, credentials); - if (!composite_is_ok(c)) return c; - - c->status = gensec_set_target_hostname(session->gensec, - session->transport->socket->hostname); - if (!composite_is_ok(c)) return c; - - c->status = gensec_set_target_service(session->gensec, "cifs"); - if (!composite_is_ok(c)) return c; - - if (session->transport->negotiate.secblob.length > 0) { - chosen_oid = GENSEC_OID_SPNEGO; - } else { - chosen_oid = GENSEC_OID_NTLMSSP; - } - - c->status = gensec_start_mech_by_oid(session->gensec, chosen_oid); - if (!composite_is_ok(c)) return c; - - c->status = gensec_update(session->gensec, c, - session->transport->negotiate.secblob, - &state->io.in.secblob); - if (!NT_STATUS_EQUAL(c->status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { - composite_error(c, c->status); - return c; - } - state->gensec_status = c->status; - - state->req = smb2_session_setup_send(session, &state->io); - composite_continue_smb2(c, state->req, session_request_handler, c); - return c; -} - /* receive a composite session setup reply */ -- cgit From 01cb5984ac0effb56b693590c2226d0bf6734010 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 27 Apr 2011 18:24:01 +0200 Subject: s4:libcli/smb2: let smb2_session_setup_spnego_* use tevent_req metze --- source4/libcli/smb2/connect.c | 20 ++--- source4/libcli/smb2/session.c | 170 ++++++++++++++++++++++++++---------------- 2 files changed, 118 insertions(+), 72 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index b3d57ebff2..c5cacc3e0b 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -189,7 +189,7 @@ static void smb2_connect_socket_done(struct composite_context *creq) smb2req->async.private_data = req; } -static void smb2_connect_session_done(struct composite_context *creq); +static void smb2_connect_session_done(struct tevent_req *subreq); static void smb2_connect_negprot_done(struct smb2_request *smb2req) { @@ -200,7 +200,7 @@ static void smb2_connect_negprot_done(struct smb2_request *smb2req) tevent_req_data(req, struct smb2_connect_state); struct smb2_transport *transport = smb2req->transport; - struct composite_context *creq; + struct tevent_req *subreq; NTSTATUS status; status = smb2_negprot_recv(smb2req, state, &state->negprot); @@ -252,20 +252,21 @@ static void smb2_connect_negprot_done(struct smb2_request *smb2req) return; } - creq = smb2_session_setup_spnego_send(state->session, state->credentials); - if (tevent_req_nomem(creq, req)) { + subreq = smb2_session_setup_spnego_send(state, state->ev, + state->session, + state->credentials); + if (tevent_req_nomem(subreq, req)) { return; } - creq->async.fn = smb2_connect_session_done; - creq->async.private_data = req; + tevent_req_set_callback(subreq, smb2_connect_session_done, req); } static void smb2_connect_tcon_done(struct smb2_request *smb2req); -static void smb2_connect_session_done(struct composite_context *creq) +static void smb2_connect_session_done(struct tevent_req *subreq) { struct tevent_req *req = - talloc_get_type_abort(creq->async.private_data, + tevent_req_callback_data(subreq, struct tevent_req); struct smb2_connect_state *state = tevent_req_data(req, @@ -273,7 +274,8 @@ static void smb2_connect_session_done(struct composite_context *creq) struct smb2_request *smb2req; NTSTATUS status; - status = smb2_session_setup_spnego_recv(creq); + status = smb2_session_setup_spnego_recv(subreq); + TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { return; } diff --git a/source4/libcli/smb2/session.c b/source4/libcli/smb2/session.c index 121323e1dc..0f285ecd87 100644 --- a/source4/libcli/smb2/session.c +++ b/source4/libcli/smb2/session.c @@ -20,10 +20,11 @@ */ #include "includes.h" +#include +#include "lib/util/tevent_ntstatus.h" #include "libcli/raw/libcliraw.h" #include "libcli/smb2/smb2.h" #include "libcli/smb2/smb2_calls.h" -#include "libcli/composite/composite.h" #include "auth/gensec/gensec.h" #include @@ -136,8 +137,7 @@ NTSTATUS smb2_session_setup(struct smb2_session *session, return smb2_session_setup_recv(req, mem_ctx, io); } - -struct smb2_session_state { +struct smb2_session_setup_spnego_state { struct smb2_session_setup io; struct smb2_request *req; NTSTATUS gensec_status; @@ -148,19 +148,22 @@ static void smb2_session_setup_spnego_handler(struct smb2_request *req); /* a composite function that does a full SPNEGO session setup */ -struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *session, - struct cli_credentials *credentials) +struct tevent_req *smb2_session_setup_spnego_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct smb2_session *session, + struct cli_credentials *credentials) { - struct composite_context *c; - struct smb2_session_state *state; + struct tevent_req *req; + struct smb2_session_setup_spnego_state *state; const char *chosen_oid; + struct smb2_request *subreq; + NTSTATUS status; - c = composite_create(session, session->transport->socket->event.ctx); - if (c == NULL) return NULL; - - state = talloc(c, struct smb2_session_state); - if (composite_nomem(state, c)) return c; - c->private_data = state; + req = tevent_req_create(mem_ctx, &state, + struct smb2_session_setup_spnego_state); + if (req == NULL) { + return NULL; + } ZERO_STRUCT(state->io); state->io.in.vc_number = 0; @@ -172,15 +175,21 @@ struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *se state->io.in.channel = 0; state->io.in.previous_sessionid = 0; - c->status = gensec_set_credentials(session->gensec, credentials); - if (!composite_is_ok(c)) return c; + status = gensec_set_credentials(session->gensec, credentials); + if (tevent_req_nterror(req, status)) { + return tevent_req_post(req, ev); + } - c->status = gensec_set_target_hostname(session->gensec, - session->transport->socket->hostname); - if (!composite_is_ok(c)) return c; + status = gensec_set_target_hostname(session->gensec, + session->transport->socket->hostname); + if (tevent_req_nterror(req, status)) { + return tevent_req_post(req, ev); + } - c->status = gensec_set_target_service(session->gensec, "cifs"); - if (!composite_is_ok(c)) return c; + status = gensec_set_target_service(session->gensec, "cifs"); + if (tevent_req_nterror(req, status)) { + return tevent_req_post(req, ev); + } if (session->transport->negotiate.secblob.length > 0) { chosen_oid = GENSEC_OID_SPNEGO; @@ -188,66 +197,73 @@ struct composite_context *smb2_session_setup_spnego_send(struct smb2_session *se chosen_oid = GENSEC_OID_NTLMSSP; } - c->status = gensec_start_mech_by_oid(session->gensec, chosen_oid); - if (!composite_is_ok(c)) return c; + status = gensec_start_mech_by_oid(session->gensec, chosen_oid); + if (tevent_req_nterror(req, status)) { + return tevent_req_post(req, ev); + } + + status = gensec_update(session->gensec, state, + session->transport->negotiate.secblob, + &state->io.in.secblob); + if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { + tevent_req_nterror(req, status); + return tevent_req_post(req, ev); + } + state->gensec_status = status; - c->status = gensec_update(session->gensec, c, - session->transport->negotiate.secblob, - &state->io.in.secblob); - if (!NT_STATUS_EQUAL(c->status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { - composite_error(c, c->status); - return c; + subreq = smb2_session_setup_send(session, &state->io); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); } - state->gensec_status = c->status; + subreq->async.fn = smb2_session_setup_spnego_handler; + subreq->async.private_data = req; - state->req = smb2_session_setup_send(session, &state->io); - composite_continue_smb2(c, state->req, smb2_session_setup_spnego_handler, c); - return c; + return req; } /* handle continuations of the spnego session setup */ -static void smb2_session_setup_spnego_handler(struct smb2_request *req) +static void smb2_session_setup_spnego_handler(struct smb2_request *subreq) { - struct composite_context *c = talloc_get_type(req->async.private_data, - struct composite_context); - struct smb2_session_state *state = talloc_get_type(c->private_data, - struct smb2_session_state); - struct smb2_session *session = req->session; + struct tevent_req *req = + talloc_get_type_abort(subreq->async.private_data, + struct tevent_req); + struct smb2_session_setup_spnego_state *state = + tevent_req_data(req, + struct smb2_session_setup_spnego_state); + struct smb2_session *session = subreq->session; NTSTATUS session_key_err; DATA_BLOB session_key; NTSTATUS peer_status; + NTSTATUS status; - c->status = smb2_session_setup_recv(req, c, &state->io); - peer_status = c->status; - + status = smb2_session_setup_recv(subreq, state, &state->io); + peer_status = status; if (NT_STATUS_EQUAL(peer_status, NT_STATUS_MORE_PROCESSING_REQUIRED) || (NT_STATUS_IS_OK(peer_status) && NT_STATUS_EQUAL(state->gensec_status, NT_STATUS_MORE_PROCESSING_REQUIRED))) { - c->status = gensec_update(session->gensec, c, - state->io.out.secblob, - &state->io.in.secblob); - state->gensec_status = c->status; - + status = gensec_update(session->gensec, state, + state->io.out.secblob, + &state->io.in.secblob); + state->gensec_status = status; session->uid = state->io.out.uid; } - if (!NT_STATUS_IS_OK(c->status) && - !NT_STATUS_EQUAL(c->status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { - composite_error(c, c->status); + if (!NT_STATUS_IS_OK(status) && + !NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { + tevent_req_nterror(req, status); return; } if (NT_STATUS_EQUAL(peer_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { - state->req = smb2_session_setup_send(session, &state->io); - if (state->req == NULL) { - composite_error(c, NT_STATUS_NO_MEMORY); + subreq = smb2_session_setup_send(session, &state->io); + if (tevent_req_nomem(subreq, req)) { return; } - state->req->async.fn = smb2_session_setup_spnego_handler; - state->req->async.private_data = c; + subreq->async.fn = smb2_session_setup_spnego_handler; + subreq->async.private_data = req; return; } @@ -260,24 +276,21 @@ static void smb2_session_setup_spnego_handler(struct smb2_request *req) if (session->session_key.length == 0) { DEBUG(0,("Wrong session key length %u for SMB2 signing\n", (unsigned)session->session_key.length)); - composite_error(c, NT_STATUS_ACCESS_DENIED); + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); return; } session->signing_active = true; } - composite_done(c); + tevent_req_done(req); } /* receive a composite session setup reply */ -NTSTATUS smb2_session_setup_spnego_recv(struct composite_context *c) +NTSTATUS smb2_session_setup_spnego_recv(struct tevent_req *req) { - NTSTATUS status; - status = composite_wait(c); - talloc_free(c); - return status; + return tevent_req_simple_recv_ntstatus(req); } /* @@ -286,6 +299,37 @@ NTSTATUS smb2_session_setup_spnego_recv(struct composite_context *c) NTSTATUS smb2_session_setup_spnego(struct smb2_session *session, struct cli_credentials *credentials) { - struct composite_context *c = smb2_session_setup_spnego_send(session, credentials); - return smb2_session_setup_spnego_recv(c); + struct tevent_req *subreq; + NTSTATUS status; + bool ok; + TALLOC_CTX *frame = talloc_stackframe(); + struct tevent_context *ev = session->transport->socket->event.ctx; + + if (frame == NULL) { + return NT_STATUS_NO_MEMORY; + } + + subreq = smb2_session_setup_spnego_send(frame, ev, + session, credentials); + if (subreq == NULL) { + TALLOC_FREE(frame); + return NT_STATUS_NO_MEMORY; + } + + ok = tevent_req_poll(subreq, ev); + if (!ok) { + status = map_nt_error_from_unix(errno); + TALLOC_FREE(frame); + return status; + } + + status = smb2_session_setup_spnego_recv(subreq); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + TALLOC_FREE(frame); + return NT_STATUS_OK; } -- cgit From 59651175fce9f24b5f17b44bcf9f54202e9fa56e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:42:48 +0200 Subject: s4:libcli/smb_composite: better names for smb2_composite_setpathinfo_* funcs and vars metze --- source4/libcli/smb_composite/smb2.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index d71708a974..df30fb7c81 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -265,20 +265,17 @@ NTSTATUS smb2_composite_rmdir(struct smb2_tree *tree, struct smb_rmdir *io) } -/* - continue after the setfileinfo in a composite setpathinfo - */ -static void continue_setpathinfo_close(struct smb2_request *req) +static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req) { - struct composite_context *ctx = talloc_get_type(req->async.private_data, + struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, struct composite_context); - struct smb2_tree *tree = req->tree; + struct smb2_tree *tree = smb2req->tree; struct smb2_close close_parm; NTSTATUS status; union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, union smb_setfileinfo); - status = smb2_setinfo_recv(req); + status = smb2_setinfo_recv(smb2req); if (!NT_STATUS_IS_OK(status)) { composite_error(ctx, status); return; @@ -287,25 +284,21 @@ static void continue_setpathinfo_close(struct smb2_request *req) ZERO_STRUCT(close_parm); close_parm.in.file.handle = io2->generic.in.file.handle; - req = smb2_close_send(tree, &close_parm); - composite_continue_smb2(ctx, req, continue_close, ctx); + smb2req = smb2_close_send(tree, &close_parm); + composite_continue_smb2(ctx, smb2req, continue_close, ctx); } - -/* - continue after the create in a composite setpathinfo - */ -static void continue_setpathinfo(struct smb2_request *req) +static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) { - struct composite_context *ctx = talloc_get_type(req->async.private_data, + struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, struct composite_context); - struct smb2_tree *tree = req->tree; + struct smb2_tree *tree = smb2req->tree; struct smb2_create create_parm; NTSTATUS status; union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, union smb_setfileinfo); - status = smb2_create_recv(req, ctx, &create_parm); + status = smb2_create_recv(smb2req, ctx, &create_parm); if (!NT_STATUS_IS_OK(status)) { composite_error(ctx, status); return; @@ -313,8 +306,8 @@ static void continue_setpathinfo(struct smb2_request *req) io2->generic.in.file.handle = create_parm.out.file.handle; - req = smb2_setinfo_file_send(tree, io2); - composite_continue_smb2(ctx, req, continue_setpathinfo_close, ctx); + smb2req = smb2_setinfo_file_send(tree, io2); + composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_setinfo_done, ctx); } @@ -326,7 +319,7 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree { struct composite_context *ctx; struct smb2_create create_parm; - struct smb2_request *req; + struct smb2_request *smb2req; union smb_setfileinfo *io2; ctx = composite_create(tree, tree->session->transport->socket->event.ctx); @@ -345,7 +338,7 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree create_parm.in.fname++; } - req = smb2_create_send(tree, &create_parm); + smb2req = smb2_create_send(tree, &create_parm); io2 = talloc(ctx, union smb_setfileinfo); if (composite_nomem(io2, ctx)) { @@ -355,7 +348,7 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree ctx->private_data = io2; - composite_continue_smb2(ctx, req, continue_setpathinfo, ctx); + composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_create_done, ctx); return ctx; } -- cgit From 9306b8b3c6cec486b57426610b1d9ea3112dfd03 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 16:58:41 +0200 Subject: s4:libcli/smb_composite: add smb2_composite_setpathinfo_close_done() metze --- source4/libcli/smb_composite/smb2.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index df30fb7c81..c4db7f8fbb 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -264,6 +264,7 @@ NTSTATUS smb2_composite_rmdir(struct smb2_tree *tree, struct smb_rmdir *io) return composite_wait_free(c); } +static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req); static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req) { @@ -285,7 +286,7 @@ static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req close_parm.in.file.handle = io2->generic.in.file.handle; smb2req = smb2_close_send(tree, &close_parm); - composite_continue_smb2(ctx, smb2req, continue_close, ctx); + composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_close_done, ctx); } static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) @@ -352,6 +353,16 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree return ctx; } +static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) +{ + struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, + struct composite_context); + NTSTATUS status; + struct smb2_close close_parm; + + status = smb2_close_recv(smb2req, &close_parm); + composite_error(ctx, status); +} /* composite setpathinfo call -- cgit From 77bed960d22e309f7799aa25da17c3065d1e1eb6 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 17:00:26 +0200 Subject: s4:libcli/smb_composite: move smb2_composite_setpathinfo_create_done() It should be after smb2_composite_setpathinfo_send(). metze --- source4/libcli/smb_composite/smb2.c | 45 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 22 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index c4db7f8fbb..972b3b0f4e 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -289,28 +289,7 @@ static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_close_done, ctx); } -static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) -{ - struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, - struct composite_context); - struct smb2_tree *tree = smb2req->tree; - struct smb2_create create_parm; - NTSTATUS status; - union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, - union smb_setfileinfo); - - status = smb2_create_recv(smb2req, ctx, &create_parm); - if (!NT_STATUS_IS_OK(status)) { - composite_error(ctx, status); - return; - } - - io2->generic.in.file.handle = create_parm.out.file.handle; - - smb2req = smb2_setinfo_file_send(tree, io2); - composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_setinfo_done, ctx); -} - +static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req); /* composite SMB2 setpathinfo call @@ -353,6 +332,28 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree return ctx; } +static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) +{ + struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, + struct composite_context); + struct smb2_tree *tree = smb2req->tree; + struct smb2_create create_parm; + NTSTATUS status; + union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, + union smb_setfileinfo); + + status = smb2_create_recv(smb2req, ctx, &create_parm); + if (!NT_STATUS_IS_OK(status)) { + composite_error(ctx, status); + return; + } + + io2->generic.in.file.handle = create_parm.out.file.handle; + + smb2req = smb2_setinfo_file_send(tree, io2); + composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_setinfo_done, ctx); +} + static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) { struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, -- cgit From ffb2dcf11b88d6b9aefcbcb1dd04305a04fa3af5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 28 Apr 2011 17:25:18 +0200 Subject: s4:libcli/smb_composite: move smb2_composite_setpathinfo_setinfo_done() It should be after smb2_composite_setpathinfo_create_done(). metze Autobuild-User: Stefan Metzmacher Autobuild-Date: Thu Apr 28 21:38:53 CEST 2011 on sn-devel-104 --- source4/libcli/smb_composite/smb2.c | 52 +++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index 972b3b0f4e..c2985f2ae8 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -264,31 +264,6 @@ NTSTATUS smb2_composite_rmdir(struct smb2_tree *tree, struct smb_rmdir *io) return composite_wait_free(c); } -static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req); - -static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req) -{ - struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, - struct composite_context); - struct smb2_tree *tree = smb2req->tree; - struct smb2_close close_parm; - NTSTATUS status; - union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, - union smb_setfileinfo); - - status = smb2_setinfo_recv(smb2req); - if (!NT_STATUS_IS_OK(status)) { - composite_error(ctx, status); - return; - } - - ZERO_STRUCT(close_parm); - close_parm.in.file.handle = io2->generic.in.file.handle; - - smb2req = smb2_close_send(tree, &close_parm); - composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_close_done, ctx); -} - static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req); /* @@ -332,6 +307,8 @@ struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree return ctx; } +static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req); + static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) { struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, @@ -354,6 +331,31 @@ static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_setinfo_done, ctx); } +static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req); + +static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req) +{ + struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, + struct composite_context); + struct smb2_tree *tree = smb2req->tree; + struct smb2_close close_parm; + NTSTATUS status; + union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, + union smb_setfileinfo); + + status = smb2_setinfo_recv(smb2req); + if (!NT_STATUS_IS_OK(status)) { + composite_error(ctx, status); + return; + } + + ZERO_STRUCT(close_parm); + close_parm.in.file.handle = io2->generic.in.file.handle; + + smb2req = smb2_close_send(tree, &close_parm); + composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_close_done, ctx); +} + static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) { struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, -- cgit From 9f75b7cbb3d25b3a799f0dc50587260036e40719 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 29 Apr 2011 11:25:56 +1000 Subject: libcli/smb Move FILE_ATTRIBUTE defines to the top level --- source4/libcli/raw/smb.h | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/smb.h b/source4/libcli/raw/smb.h index 05bf91fe3b..c3fdbbba23 100644 --- a/source4/libcli/raw/smb.h +++ b/source4/libcli/raw/smb.h @@ -366,24 +366,6 @@ #define DESIRED_ACCESS_PIPE 0x2019f -/* FileAttributes (search attributes) field */ -#define FILE_ATTRIBUTE_READONLY 0x0001 -#define FILE_ATTRIBUTE_HIDDEN 0x0002 -#define FILE_ATTRIBUTE_SYSTEM 0x0004 -#define FILE_ATTRIBUTE_VOLUME 0x0008 -#define FILE_ATTRIBUTE_DIRECTORY 0x0010 -#define FILE_ATTRIBUTE_ARCHIVE 0x0020 -#define FILE_ATTRIBUTE_DEVICE 0x0040 -#define FILE_ATTRIBUTE_NORMAL 0x0080 -#define FILE_ATTRIBUTE_TEMPORARY 0x0100 -#define FILE_ATTRIBUTE_SPARSE 0x0200 -#define FILE_ATTRIBUTE_REPARSE_POINT 0x0400 -#define FILE_ATTRIBUTE_COMPRESSED 0x0800 -#define FILE_ATTRIBUTE_OFFLINE 0x1000 -#define FILE_ATTRIBUTE_NONINDEXED 0x2000 -#define FILE_ATTRIBUTE_ENCRYPTED 0x4000 -#define FILE_ATTRIBUTE_ALL_MASK 0x7FFF - /* Flags - combined with attributes. */ #define FILE_FLAG_WRITE_THROUGH 0x80000000L #define FILE_FLAG_NO_BUFFERING 0x20000000L -- cgit From 6021af4fd38d2a712dca42a3cacf8537007fd160 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 29 Apr 2011 12:41:27 +1000 Subject: libcli/smb Move attrib_string in common --- source4/libcli/raw/rawfile.c | 46 -------------------------------------------- 1 file changed, 46 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/rawfile.c b/source4/libcli/raw/rawfile.c index 5797540edd..626067a2a2 100644 --- a/source4/libcli/raw/rawfile.c +++ b/source4/libcli/raw/rawfile.c @@ -29,52 +29,6 @@ if (!req) return NULL; \ } while (0) -/** - Return a string representing a CIFS attribute for a file. -**/ -char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib) -{ - int i, len; - const struct { - char c; - uint16_t attr; - } attr_strs[] = { - {'V', FILE_ATTRIBUTE_VOLUME}, - {'D', FILE_ATTRIBUTE_DIRECTORY}, - {'A', FILE_ATTRIBUTE_ARCHIVE}, - {'H', FILE_ATTRIBUTE_HIDDEN}, - {'S', FILE_ATTRIBUTE_SYSTEM}, - {'N', FILE_ATTRIBUTE_NORMAL}, - {'R', FILE_ATTRIBUTE_READONLY}, - {'d', FILE_ATTRIBUTE_DEVICE}, - {'t', FILE_ATTRIBUTE_TEMPORARY}, - {'s', FILE_ATTRIBUTE_SPARSE}, - {'r', FILE_ATTRIBUTE_REPARSE_POINT}, - {'c', FILE_ATTRIBUTE_COMPRESSED}, - {'o', FILE_ATTRIBUTE_OFFLINE}, - {'n', FILE_ATTRIBUTE_NONINDEXED}, - {'e', FILE_ATTRIBUTE_ENCRYPTED} - }; - char *ret; - - ret = talloc_array(mem_ctx, char, ARRAY_SIZE(attr_strs)+1); - if (!ret) { - return NULL; - } - - for (len=i=0; i Date: Fri, 29 Apr 2011 16:57:41 +1000 Subject: build: put doserr.c into it's own subsystem, so it's no longer a duplicate Autobuild-User: Andrew Bartlett Autobuild-Date: Fri Apr 29 10:00:32 CEST 2011 on sn-devel-104 --- source4/libcli/wscript_build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/wscript_build b/source4/libcli/wscript_build index fbe13ea8e9..46bca5aa0b 100644 --- a/source4/libcli/wscript_build +++ b/source4/libcli/wscript_build @@ -4,10 +4,10 @@ bld.RECURSE('ldap') bld.RECURSE('wbclient') bld.SAMBA_LIBRARY('errors', - source='../../libcli/util/doserr.c util/errormap.c util/nterr.c', + source='util/errormap.c util/nterr.c', public_headers='../../libcli/util/error.h ../../libcli/util/ntstatus.h ../../libcli/util/doserr.h ../../libcli/util/werror.h', header_path='core', - deps='talloc', + deps='talloc LIBCLI_ERRORS', private_library=True ) -- cgit From 6dd97ac093ee00281ed029d549d5882d76c2735d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 2 May 2011 12:41:46 +0200 Subject: s4:libcli/util/nterr: NO_S4U_PROT_SUPPORT and CROSSREALM_DELEGATION_FAILURE metze Autobuild-User: Stefan Metzmacher Autobuild-Date: Mon May 2 15:02:56 CEST 2011 on sn-devel-104 --- source4/libcli/util/nterr.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/libcli') diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c index ca998bbf6f..99b5191273 100644 --- a/source4/libcli/util/nterr.c +++ b/source4/libcli/util/nterr.c @@ -569,6 +569,8 @@ static const nt_err_code_struct nt_errs[] = { "NT_STATUS_CURRENT_DOMAIN_NOT_ALLOWED", NT_STATUS_CURRENT_DOMAIN_NOT_ALLOWED }, { "NT_STATUS_OBJECTID_NOT_FOUND", NT_STATUS_OBJECTID_NOT_FOUND }, { "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED }, + { "NT_STATUS_NO_S4U_PROT_SUPPORT", NT_STATUS_NO_S4U_PROT_SUPPORT }, + { "NT_STATUS_CROSSREALM_DELEGATION_FAILURE", NT_STATUS_CROSSREALM_DELEGATION_FAILURE }, { "NT_STATUS_INVALID_LOCK_RANGE", NT_STATUS_INVALID_LOCK_RANGE }, { "NT_STATUS_ERROR_DS_OBJ_STRING_NAME_EXISTS", NT_STATUS_ERROR_DS_OBJ_STRING_NAME_EXISTS }, { "NT_STATUS_ERROR_DS_INCOMPATIBLE_VERSION", NT_STATUS_ERROR_DS_INCOMPATIBLE_VERSION }, -- cgit From 7261a9b9f76d19e6a2179a48e903e2fee4ee64a1 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 2 May 2011 16:36:48 +1000 Subject: s4-libcli Remove resolve_name() as it conflicts with Samba3. This was just a wrapper around resolve_name_ex(), so just call that instead. Andrew Bartlett --- source4/libcli/raw/clisocket.c | 2 +- source4/libcli/resolve/resolve.c | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/clisocket.c b/source4/libcli/raw/clisocket.c index 84bf250f6a..bf608f1ec1 100644 --- a/source4/libcli/raw/clisocket.c +++ b/source4/libcli/raw/clisocket.c @@ -229,7 +229,7 @@ _PUBLIC_ struct smbcli_socket *smbcli_sock_connect_byname(const char *host, cons make_nbt_name(&nbt_name, host, name_type); - status = resolve_name(resolve_ctx, &nbt_name, tmp_ctx, &address, event_ctx); + status = resolve_name_ex(resolve_ctx, 0, 0, &nbt_name, tmp_ctx, &address, event_ctx); if (!NT_STATUS_IS_OK(status)) { talloc_free(tmp_ctx); return NULL; diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index c17e93a1f6..ef61c38f79 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -316,18 +316,6 @@ NTSTATUS resolve_name_ex(struct resolve_context *ctx, } -/* - general name resolution - sync call - */ -NTSTATUS resolve_name(struct resolve_context *ctx, - struct nbt_name *name, - TALLOC_CTX *mem_ctx, - const char **reply_addr, - struct tevent_context *ev) -{ - return resolve_name_ex(ctx, 0, 0, name, mem_ctx, reply_addr, ev); -} - /* Initialise a struct nbt_name with a NULL scope */ void make_nbt_name(struct nbt_name *nbt, const char *name, int type) -- cgit From cdd802af8319e0b0744d8e727cef75526269ece2 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 3 May 2011 10:40:33 +1000 Subject: s4-messaging Rename messaging -> imessaging This avoid symbol and structure conflicts between Samba3 and Samba4, and chooses a less generic name. Andrew Bartlett --- source4/libcli/finddcs_nbt.c | 6 +++--- source4/libcli/wbclient/wbclient.c | 2 +- source4/libcli/wbclient/wbclient.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/finddcs_nbt.c b/source4/libcli/finddcs_nbt.c index 12b94f7bab..9579a9e449 100644 --- a/source4/libcli/finddcs_nbt.c +++ b/source4/libcli/finddcs_nbt.c @@ -33,7 +33,7 @@ struct finddcs_nbt_state { struct tevent_context *ev; struct tevent_req *req; - struct messaging_context *msg_ctx; + struct imessaging_context *msg_ctx; const char *my_netbios_name; const char *domain_name; @@ -70,7 +70,7 @@ struct tevent_req *finddcs_nbt_send(TALLOC_CTX *mem_ctx, struct dom_sid *domain_sid, struct resolve_context *resolve_ctx, struct tevent_context *event_ctx, - struct messaging_context *msg_ctx) + struct imessaging_context *msg_ctx) { struct finddcs_nbt_state *state; struct nbt_name name; @@ -295,7 +295,7 @@ NTSTATUS finddcs_nbt(TALLOC_CTX *mem_ctx, struct dom_sid *domain_sid, struct resolve_context *resolve_ctx, struct tevent_context *event_ctx, - struct messaging_context *msg_ctx, + struct imessaging_context *msg_ctx, int *num_dcs, struct nbt_dc_name **dcs) { struct tevent_req *req = finddcs_nbt_send(mem_ctx, diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c index 5c4312cc66..4f50c10694 100644 --- a/source4/libcli/wbclient/wbclient.c +++ b/source4/libcli/wbclient/wbclient.c @@ -31,7 +31,7 @@ * \param */ struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx, - struct messaging_context *msg_ctx, + struct imessaging_context *msg_ctx, struct tevent_context *event_ctx) { struct wbc_context *ctx; diff --git a/source4/libcli/wbclient/wbclient.h b/source4/libcli/wbclient/wbclient.h index e7473e3e7b..1fa2f59c57 100644 --- a/source4/libcli/wbclient/wbclient.h +++ b/source4/libcli/wbclient/wbclient.h @@ -28,7 +28,7 @@ struct wbc_context { }; struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx, - struct messaging_context *msg_ctx, + struct imessaging_context *msg_ctx, struct tevent_context *event_ctx); struct composite_context *wbc_sids_to_xids_send(struct wbc_context *wbc_ctx, -- cgit From 39ded87b45851894f157d2cc800feb402e650420 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 2 May 2011 11:34:57 +1000 Subject: libcli/raw: use a different ifdef than s3 smb.h this allows both headers to be included in 1 C file Pair-Programmed-With: Andrew Bartlett --- source4/libcli/raw/smb.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/smb.h b/source4/libcli/raw/smb.h index c3fdbbba23..f1d0bfd294 100644 --- a/source4/libcli/raw/smb.h +++ b/source4/libcli/raw/smb.h @@ -23,8 +23,8 @@ along with this program. If not, see . */ -#ifndef _SMB_H -#define _SMB_H +#ifndef _RAW_SMB_H +#define _RAW_SMB_H /* deny modes */ #define DENY_DOS 0 @@ -582,4 +582,4 @@ #include "libcli/raw/interfaces.h" #include "libcli/smb/smb_common.h" -#endif /* _SMB_H */ +#endif /* _RAW_SMB_H */ -- cgit From 4f41be356a4e6b311d30de3b2e36e4c33aa72ca3 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 5 May 2011 10:41:59 -0700 Subject: Fix many const compiler warnings. --- source4/libcli/raw/smb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/smb.h b/source4/libcli/raw/smb.h index f1d0bfd294..008ab57c0d 100644 --- a/source4/libcli/raw/smb.h +++ b/source4/libcli/raw/smb.h @@ -454,7 +454,7 @@ /* where to find the base of the SMB packet proper */ /* REWRITE TODO: smb_base needs to be removed */ -#define smb_base(buf) (((char *)(buf))+4) +#define smb_base(buf) (((const char *)(buf))+4) /* we don't allow server strings to be longer than 48 characters as otherwise NT will not honour the announce packets */ -- cgit From fa289e8982ea260a87548c145ef061e7eb64acf6 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 11:39:21 +1000 Subject: s3-lib Remove unused dos error codes from errmap_unix This also makes unix_nt_errmap private to errmap_unix.c and errormap.c so the tables themselves cannot be duplicate symbols until merged. Andrew Bartlett --- source4/libcli/util/errormap.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index a0154e370b..962dc24a45 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -1259,14 +1259,12 @@ WERROR ntstatus_to_werror(NTSTATUS error) return W_ERROR(NT_STATUS_V(error) & 0xffff); } -/* Mapping between Unix, DOS and NT error numbers */ +/* Mapping between Unix, and NT error numbers */ -struct unix_error_map { +static const struct { int unix_error; NTSTATUS nt_error; -}; - -const struct unix_error_map unix_nt_errmap[] = { +} unix_nt_errmap[] = { { EAGAIN, STATUS_MORE_ENTRIES }, { EINTR, STATUS_MORE_ENTRIES }, { ENOBUFS, STATUS_MORE_ENTRIES }, -- cgit From 865a93767159be087ec78f56687c4d3ba24a3756 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 13:47:26 +1000 Subject: errors: Merge ntstatus -> DOS error table between Samba3 and Samba4. They are now identical Andrew Bartlett --- source4/libcli/util/errormap.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 962dc24a45..ef0d482388 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -49,6 +49,10 @@ static const struct { uint32_t dos_code; NTSTATUS ntstatus; } ntstatus_to_dos_map[] = { +/* + * Not an official error, as only bit 0x80000000, not bits 0xC0000000 are set. + */ + {ERRDOS, ERRmoredata, STATUS_BUFFER_OVERFLOW}, {ERRDOS, ERRnofiles, STATUS_NO_MORE_FILES}, {ERRDOS, ERRnofiles, NT_STATUS_NO_MORE_ENTRIES}, {ERRDOS, ERRgeneral, NT_STATUS_UNSUCCESSFUL}, @@ -63,7 +67,7 @@ static const struct { {ERRDOS, 193, NT_STATUS_BAD_INITIAL_PC}, {ERRDOS, 87, NT_STATUS_INVALID_CID}, {ERRHRD, ERRgeneral, NT_STATUS_TIMER_NOT_CANCELED}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER}, + {ERRDOS, ERRinvalidparam, NT_STATUS_INVALID_PARAMETER}, {ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_DEVICE}, {ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE}, {ERRDOS, ERRbadfunc, NT_STATUS_INVALID_DEVICE_REQUEST}, @@ -116,13 +120,13 @@ static const struct { {ERRHRD, ERRgeneral, NT_STATUS_DISK_CORRUPT_ERROR}, {ERRDOS, ERRinvalidname, NT_STATUS_OBJECT_NAME_INVALID}, {ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND}, - {ERRDOS, ERRfilexists, NT_STATUS_OBJECT_NAME_COLLISION}, + {ERRDOS, 183, NT_STATUS_OBJECT_NAME_COLLISION}, {ERRHRD, ERRgeneral, NT_STATUS_HANDLE_NOT_WAITABLE}, {ERRDOS, ERRbadfid, NT_STATUS_PORT_DISCONNECTED}, {ERRHRD, ERRgeneral, NT_STATUS_DEVICE_ALREADY_ATTACHED}, - {ERRDOS, 161, NT_STATUS_OBJECT_PATH_INVALID}, + {ERRDOS, ERRinvalidpath, NT_STATUS_OBJECT_PATH_INVALID}, {ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND}, - {ERRDOS, 161, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, + {ERRDOS, ERRinvalidpath, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, {ERRHRD, ERRgeneral, NT_STATUS_DATA_OVERRUN}, {ERRHRD, ERRgeneral, NT_STATUS_DATA_LATE_ERROR}, {ERRDOS, 23, NT_STATUS_DATA_ERROR}, @@ -142,7 +146,7 @@ static const struct { {ERRDOS, 87, NT_STATUS_BAD_WORKING_SET_LIMIT}, {ERRDOS, 87, NT_STATUS_INCOMPATIBLE_FILE_MAP}, {ERRDOS, 87, NT_STATUS_SECTION_PROTECTION}, - {ERRDOS, 282, NT_STATUS_EAS_NOT_SUPPORTED}, + {ERRDOS, ERReasnotsupported, NT_STATUS_EAS_NOT_SUPPORTED}, {ERRDOS, 255, NT_STATUS_EA_TOO_LARGE}, {ERRHRD, ERRgeneral, NT_STATUS_NONEXISTENT_EA_ENTRY}, {ERRHRD, ERRgeneral, NT_STATUS_NO_EAS_ON_FILE}, @@ -335,7 +339,7 @@ static const struct { {ERRDOS, 203, NT_STATUS(0xc0000100)}, {ERRDOS, 145, NT_STATUS_DIRECTORY_NOT_EMPTY}, {ERRHRD, ERRgeneral, NT_STATUS_FILE_CORRUPT_ERROR}, - {ERRDOS, 267, NT_STATUS_NOT_A_DIRECTORY}, + {ERRDOS, ERRbaddirectory, NT_STATUS_NOT_A_DIRECTORY}, {ERRHRD, ERRgeneral, NT_STATUS_BAD_LOGON_SESSION_STATE}, {ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_COLLISION}, {ERRDOS, 206, NT_STATUS_NAME_TOO_LONG}, @@ -404,7 +408,7 @@ static const struct { {ERRHRD, ERRgeneral, NT_STATUS_APP_INIT_FAILURE}, {ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_CREATE_FAILED}, {ERRHRD, ERRgeneral, NT_STATUS_NO_PAGEFILE}, - {ERRDOS, 124, NT_STATUS_INVALID_LEVEL}, + {ERRDOS, ERRunknownlevel, NT_STATUS_INVALID_LEVEL}, {ERRDOS, 86, NT_STATUS_WRONG_PASSWORD_CORE}, {ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, {ERRDOS, 109, NT_STATUS_PIPE_BROKEN}, -- cgit From 2b0de5b5ca1196a39379dcd86a25b6e73c52cf3c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 16:51:23 +1000 Subject: errors: Merge source3/ werror_to_ntstatus() code to source4/ --- source4/libcli/util/errormap.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index ef0d482388..68a8e5e0ea 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -621,11 +621,6 @@ static const struct { NTSTATUS ntstatus; WERROR werror; } ntstatus_to_werror_map[] = { - /* - * we add this manualy here, so that W_ERROR(0x5) - * gets mapped to NTSTATUS_ACCESS_DENIED - */ - {NT_STATUS_ACCESS_DENIED, WERR_ACCESS_DENIED}, {NT_STATUS(0x103), W_ERROR(0x3e5)}, {NT_STATUS(0x105), W_ERROR(0xea)}, {NT_STATUS(0x106), W_ERROR(0x514)}, @@ -1160,7 +1155,14 @@ static const struct { {NT_STATUS(0x80000025), W_ERROR(0x962)}, {NT_STATUS(0x80000288), W_ERROR(0x48d)}, {NT_STATUS(0x80000289), W_ERROR(0x48e)}, - {NT_STATUS_OK, WERR_OK} + {NT_STATUS_OK, WERR_OK}}; + +static const struct { + WERROR werror; + NTSTATUS ntstatus; +} werror_to_ntstatus_map[] = { + { W_ERROR(0x5), NT_STATUS_ACCESS_DENIED }, + { WERR_OK, NT_STATUS_OK } }; bool ntstatus_check_dos_mapping = true; @@ -1234,6 +1236,14 @@ NTSTATUS werror_to_ntstatus(WERROR error) { int i; if (W_ERROR_IS_OK(error)) return NT_STATUS_OK; + + for (i=0; !W_ERROR_IS_OK(werror_to_ntstatus_map[i].werror); i++) { + if (W_ERROR_V(error) == + W_ERROR_V(werror_to_ntstatus_map[i].werror)) { + return werror_to_ntstatus_map[i].ntstatus; + } + } + for (i=0; NT_STATUS_V(ntstatus_to_werror_map[i].ntstatus); i++) { if (W_ERROR_V(error) == W_ERROR_V(ntstatus_to_werror_map[i].werror)) { -- cgit From f1ec28827f61fcb168249aa9855e7f19c65780ae Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 13:59:57 +1000 Subject: libcli/util Merge ntstatus_to_dos() ntstatus_to_werror() to the top level This takes the Samba4 version, with the NT_STATUS_IS_DOS() check. This will be used in smbd/error.c shortly. Andrew Bartlett --- source4/libcli/util/errormap.c | 668 ----------------------------------------- 1 file changed, 668 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 68a8e5e0ea..b06f27e120 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -21,601 +21,6 @@ #include "includes.h" -/* This map was extracted by the ERRMAPEXTRACT smbtorture command. - The setup was a Samba HEAD (2002-01-03) PDC and an Win2k member - workstation. The PDC was modified (by using the 'name_to_nt_status' - authentication module) to convert the username (in hex) into the - corresponding NTSTATUS error return. - - By opening two nbt sessions to the Win2k workstation, one negotiating - DOS and one negotiating NT errors it was possible to extract the - error mapping. (Because the server only supplies NT errors, the - NT4 workstation had to use its own error tables to convert these - to dos errors). - - Some errors show up as 'squashed' because the NT error connection - got back a different error to the one it sent, so a mapping could - not be determined (a guess has been made in this case, to map the - error as squashed). This is done mainly to prevent users from getting - NT_STATUS_WRONG_PASSWORD and NT_STATUS_NO_SUCH_USER errors (they get - NT_STATUS_LOGON_FAILURE instead. - - -- abartlet (2002-01-03) -*/ - -/* NT status -> dos error map */ -static const struct { - uint8_t dos_class; - uint32_t dos_code; - NTSTATUS ntstatus; -} ntstatus_to_dos_map[] = { -/* - * Not an official error, as only bit 0x80000000, not bits 0xC0000000 are set. - */ - {ERRDOS, ERRmoredata, STATUS_BUFFER_OVERFLOW}, - {ERRDOS, ERRnofiles, STATUS_NO_MORE_FILES}, - {ERRDOS, ERRnofiles, NT_STATUS_NO_MORE_ENTRIES}, - {ERRDOS, ERRgeneral, NT_STATUS_UNSUCCESSFUL}, - {ERRDOS, ERRbadfunc, NT_STATUS_NOT_IMPLEMENTED}, - {ERRDOS, 87, NT_STATUS_INVALID_INFO_CLASS}, - {ERRDOS, 24, NT_STATUS_INFO_LENGTH_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS_ACCESS_VIOLATION}, - {ERRHRD, ERRgeneral, NT_STATUS_IN_PAGE_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA}, - {ERRDOS, ERRbadfid, NT_STATUS_INVALID_HANDLE}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_INITIAL_STACK}, - {ERRDOS, 193, NT_STATUS_BAD_INITIAL_PC}, - {ERRDOS, 87, NT_STATUS_INVALID_CID}, - {ERRHRD, ERRgeneral, NT_STATUS_TIMER_NOT_CANCELED}, - {ERRDOS, ERRinvalidparam, NT_STATUS_INVALID_PARAMETER}, - {ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_DEVICE}, - {ERRDOS, ERRbadfile, NT_STATUS_NO_SUCH_FILE}, - {ERRDOS, ERRbadfunc, NT_STATUS_INVALID_DEVICE_REQUEST}, - {ERRDOS, 38, NT_STATUS_END_OF_FILE}, - {ERRDOS, 34, NT_STATUS_WRONG_VOLUME}, - {ERRDOS, 21, NT_STATUS_NO_MEDIA_IN_DEVICE}, - {ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_MEDIA}, - {ERRDOS, 27, NT_STATUS_NONEXISTENT_SECTOR}, -/** Session setup succeeded. This shouldn't happen...*/ -/** Session setup succeeded. This shouldn't happen...*/ -/** NT error on DOS connection! (NT_STATUS_OK) */ -/* { This NT error code was 'sqashed' - from NT_STATUS_MORE_PROCESSING_REQUIRED to NT_STATUS_OK - during the session setup } -*/ -#if 0 - {SUCCESS, 0, NT_STATUS_OK}, -#endif - {ERRDOS, ERRnomem, NT_STATUS_NO_MEMORY}, - {ERRDOS, 487, NT_STATUS_CONFLICTING_ADDRESSES}, - {ERRDOS, 487, NT_STATUS_NOT_MAPPED_VIEW}, - {ERRDOS, 87, NT_STATUS_UNABLE_TO_FREE_VM}, - {ERRDOS, 87, NT_STATUS_UNABLE_TO_DELETE_SECTION}, - {ERRDOS, 2142, NT_STATUS_INVALID_SYSTEM_SERVICE}, - {ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_INSTRUCTION}, - {ERRDOS, ERRnoaccess, NT_STATUS_INVALID_LOCK_SEQUENCE}, - {ERRDOS, ERRnoaccess, NT_STATUS_INVALID_VIEW_SIZE}, - {ERRDOS, 193, NT_STATUS_INVALID_FILE_FOR_SECTION}, - {ERRDOS, ERRnoaccess, NT_STATUS_ALREADY_COMMITTED}, -/* { This NT error code was 'sqashed' - from NT_STATUS_ACCESS_DENIED to NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE - during the session setup } -*/ - {ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED}, - {ERRDOS, 111, NT_STATUS_BUFFER_TOO_SMALL}, - {ERRDOS, ERRbadfid, NT_STATUS_OBJECT_TYPE_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS_NONCONTINUABLE_EXCEPTION}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_DISPOSITION}, - {ERRHRD, ERRgeneral, NT_STATUS_UNWIND}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_STACK}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_UNWIND_TARGET}, - {ERRDOS, 158, NT_STATUS_NOT_LOCKED}, - {ERRHRD, ERRgeneral, NT_STATUS_PARITY_ERROR}, - {ERRDOS, 487, NT_STATUS_UNABLE_TO_DECOMMIT_VM}, - {ERRDOS, 487, NT_STATUS_NOT_COMMITTED}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_PORT_ATTRIBUTES}, - {ERRHRD, ERRgeneral, NT_STATUS_PORT_MESSAGE_TOO_LONG}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_MIX}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_QUOTA_LOWER}, - {ERRHRD, ERRgeneral, NT_STATUS_DISK_CORRUPT_ERROR}, - {ERRDOS, ERRinvalidname, NT_STATUS_OBJECT_NAME_INVALID}, - {ERRDOS, ERRbadfile, NT_STATUS_OBJECT_NAME_NOT_FOUND}, - {ERRDOS, 183, NT_STATUS_OBJECT_NAME_COLLISION}, - {ERRHRD, ERRgeneral, NT_STATUS_HANDLE_NOT_WAITABLE}, - {ERRDOS, ERRbadfid, NT_STATUS_PORT_DISCONNECTED}, - {ERRHRD, ERRgeneral, NT_STATUS_DEVICE_ALREADY_ATTACHED}, - {ERRDOS, ERRinvalidpath, NT_STATUS_OBJECT_PATH_INVALID}, - {ERRDOS, ERRbadpath, NT_STATUS_OBJECT_PATH_NOT_FOUND}, - {ERRDOS, ERRinvalidpath, NT_STATUS_OBJECT_PATH_SYNTAX_BAD}, - {ERRHRD, ERRgeneral, NT_STATUS_DATA_OVERRUN}, - {ERRHRD, ERRgeneral, NT_STATUS_DATA_LATE_ERROR}, - {ERRDOS, 23, NT_STATUS_DATA_ERROR}, - {ERRDOS, 23, NT_STATUS_CRC_ERROR}, - {ERRDOS, ERRnomem, NT_STATUS_SECTION_TOO_BIG}, - {ERRDOS, ERRnoaccess, NT_STATUS_PORT_CONNECTION_REFUSED}, - {ERRDOS, ERRbadfid, NT_STATUS_INVALID_PORT_HANDLE}, - {ERRDOS, ERRbadshare, NT_STATUS_SHARING_VIOLATION}, - {ERRHRD, ERRgeneral, NT_STATUS_QUOTA_EXCEEDED}, - {ERRDOS, 87, NT_STATUS_INVALID_PAGE_PROTECTION}, - {ERRDOS, 288, NT_STATUS_MUTANT_NOT_OWNED}, - {ERRDOS, 298, NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED}, - {ERRDOS, 87, NT_STATUS_PORT_ALREADY_SET}, - {ERRDOS, 87, NT_STATUS_SECTION_NOT_IMAGE}, - {ERRDOS, 156, NT_STATUS_SUSPEND_COUNT_EXCEEDED}, - {ERRDOS, ERRnoaccess, NT_STATUS_THREAD_IS_TERMINATING}, - {ERRDOS, 87, NT_STATUS_BAD_WORKING_SET_LIMIT}, - {ERRDOS, 87, NT_STATUS_INCOMPATIBLE_FILE_MAP}, - {ERRDOS, 87, NT_STATUS_SECTION_PROTECTION}, - {ERRDOS, ERReasnotsupported, NT_STATUS_EAS_NOT_SUPPORTED}, - {ERRDOS, 255, NT_STATUS_EA_TOO_LARGE}, - {ERRHRD, ERRgeneral, NT_STATUS_NONEXISTENT_EA_ENTRY}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_EAS_ON_FILE}, - {ERRHRD, ERRgeneral, NT_STATUS_EA_CORRUPT_ERROR}, - {ERRDOS, ERRlock, NT_STATUS_FILE_LOCK_CONFLICT}, - {ERRDOS, ERRlock, NT_STATUS_LOCK_NOT_GRANTED}, - {ERRDOS, ERRnoaccess, NT_STATUS_DELETE_PENDING}, - {ERRDOS, ERRunsup, NT_STATUS_CTL_FILE_NOT_SUPPORTED}, - {ERRHRD, ERRgeneral, NT_STATUS_UNKNOWN_REVISION}, - {ERRHRD, ERRgeneral, NT_STATUS_REVISION_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_OWNER}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_PRIMARY_GROUP}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_IMPERSONATION_TOKEN}, - {ERRHRD, ERRgeneral, NT_STATUS_CANT_DISABLE_MANDATORY}, - {ERRDOS, 2215, NT_STATUS_NO_LOGON_SERVERS}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_LOGON_SESSION}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PRIVILEGE}, - {ERRDOS, ERRnoaccess, NT_STATUS_PRIVILEGE_NOT_HELD}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACCOUNT_NAME}, - {ERRHRD, ERRgeneral, NT_STATUS_USER_EXISTS}, -/* { This NT error code was 'sqashed' - from NT_STATUS_NO_SUCH_USER to NT_STATUS_LOGON_FAILURE - during the session setup } -*/ - {ERRDOS, ERRnoaccess, NT_STATUS_NO_SUCH_USER}, - {ERRHRD, ERRgeneral, NT_STATUS_GROUP_EXISTS}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_GROUP}, - {ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_GROUP}, - {ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_GROUP}, - {ERRHRD, ERRgeneral, NT_STATUS_LAST_ADMIN}, -/* { This NT error code was 'sqashed' - from NT_STATUS_WRONG_PASSWORD to NT_STATUS_LOGON_FAILURE - during the session setup } -*/ - {ERRSRV, ERRbadpw, NT_STATUS_WRONG_PASSWORD}, - {ERRSRV, ERRbaduid, NT_STATUS_USER_SESSION_DELETED}, - {ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_PASSWORD}, - {ERRHRD, ERRgeneral, NT_STATUS_PASSWORD_RESTRICTION}, - {ERRDOS, ERRnoaccess, NT_STATUS_LOGON_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_ACCOUNT_RESTRICTION}, - {ERRSRV, 2241, NT_STATUS_INVALID_LOGON_HOURS}, - {ERRSRV, 2240, NT_STATUS_INVALID_WORKSTATION}, - {ERRSRV, 2242, NT_STATUS_PASSWORD_EXPIRED}, - {ERRSRV, 2239, NT_STATUS_ACCOUNT_DISABLED}, - {ERRHRD, ERRgeneral, NT_STATUS_NONE_MAPPED}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_LUIDS_REQUESTED}, - {ERRHRD, ERRgeneral, NT_STATUS_LUIDS_EXHAUSTED}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_SUB_AUTHORITY}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACL}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_SID}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_SECURITY_DESCR}, - {ERRDOS, 127, NT_STATUS_PROCEDURE_NOT_FOUND}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_FORMAT}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_TOKEN}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_INHERITANCE_ACL}, - {ERRDOS, 158, NT_STATUS_RANGE_NOT_LOCKED}, - {ERRDOS, 112, NT_STATUS_DISK_FULL}, - {ERRHRD, ERRgeneral, NT_STATUS_SERVER_DISABLED}, - {ERRHRD, ERRgeneral, NT_STATUS_SERVER_NOT_DISABLED}, - {ERRDOS, 68, NT_STATUS_TOO_MANY_GUIDS_REQUESTED}, - {ERRDOS, 259, NT_STATUS_GUIDS_EXHAUSTED}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_ID_AUTHORITY}, - {ERRDOS, 259, NT_STATUS_AGENTS_EXHAUSTED}, - {ERRDOS, 154, NT_STATUS_INVALID_VOLUME_LABEL}, - {ERRDOS, ERRres, NT_STATUS_SECTION_NOT_EXTENDED}, - {ERRDOS, 487, NT_STATUS_NOT_MAPPED_DATA}, - {ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_DATA_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_TYPE_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_NAME_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_ARRAY_BOUNDS_EXCEEDED}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DENORMAL_OPERAND}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_DIVIDE_BY_ZERO}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INEXACT_RESULT}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_INVALID_OPERATION}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_OVERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_STACK_CHECK}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOAT_UNDERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_INTEGER_DIVIDE_BY_ZERO}, - {ERRDOS, 534, NT_STATUS_INTEGER_OVERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_PRIVILEGED_INSTRUCTION}, - {ERRDOS, ERRnomem, NT_STATUS_TOO_MANY_PAGING_FILES}, - {ERRHRD, ERRgeneral, NT_STATUS_FILE_INVALID}, - {ERRHRD, ERRgeneral, NT_STATUS_ALLOTTED_SPACE_EXCEEDED}, -/* { This NT error code was 'sqashed' - from NT_STATUS_INSUFFICIENT_RESOURCES to NT_STATUS_INSUFF_SERVER_RESOURCES - during the session setup } -*/ - {ERRDOS, ERRnomem, NT_STATUS_INSUFFICIENT_RESOURCES}, - {ERRDOS, ERRbadpath, NT_STATUS_DFS_EXIT_PATH_FOUND}, - {ERRDOS, 23, NT_STATUS_DEVICE_DATA_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_CONNECTED}, - {ERRDOS, 21, NT_STATUS_DEVICE_POWER_FAILURE}, - {ERRDOS, 487, NT_STATUS_FREE_VM_NOT_AT_BASE}, - {ERRDOS, 487, NT_STATUS_MEMORY_NOT_ALLOCATED}, - {ERRHRD, ERRgeneral, NT_STATUS_WORKING_SET_QUOTA}, - {ERRDOS, 19, NT_STATUS_MEDIA_WRITE_PROTECTED}, - {ERRDOS, 21, NT_STATUS_DEVICE_NOT_READY}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_GROUP_ATTRIBUTES}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_IMPERSONATION_LEVEL}, - {ERRHRD, ERRgeneral, NT_STATUS_CANT_OPEN_ANONYMOUS}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_VALIDATION_CLASS}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_TOKEN_TYPE}, - {ERRDOS, 87, NT_STATUS_BAD_MASTER_BOOT_RECORD}, - {ERRHRD, ERRgeneral, NT_STATUS_INSTRUCTION_MISALIGNMENT}, - {ERRDOS, ERRpipebusy, NT_STATUS_INSTANCE_NOT_AVAILABLE}, - {ERRDOS, ERRpipebusy, NT_STATUS_PIPE_NOT_AVAILABLE}, - {ERRDOS, ERRbadpipe, NT_STATUS_INVALID_PIPE_STATE}, - {ERRDOS, ERRpipebusy, NT_STATUS_PIPE_BUSY}, - {ERRDOS, ERRbadfunc, NT_STATUS_ILLEGAL_FUNCTION}, - {ERRDOS, ERRnotconnected, NT_STATUS_PIPE_DISCONNECTED}, - {ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_CLOSING}, - {ERRHRD, ERRgeneral, NT_STATUS_PIPE_CONNECTED}, - {ERRHRD, ERRgeneral, NT_STATUS_PIPE_LISTENING}, - {ERRDOS, ERRbadpipe, NT_STATUS_INVALID_READ_MODE}, - {ERRDOS, 121, NT_STATUS_IO_TIMEOUT}, - {ERRDOS, 38, NT_STATUS_FILE_FORCED_CLOSED}, - {ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STARTED}, - {ERRHRD, ERRgeneral, NT_STATUS_PROFILING_NOT_STOPPED}, - {ERRHRD, ERRgeneral, NT_STATUS_COULD_NOT_INTERPRET}, - {ERRDOS, ERRnoaccess, NT_STATUS_FILE_IS_A_DIRECTORY}, - {ERRDOS, ERRunsup, NT_STATUS_NOT_SUPPORTED}, - {ERRDOS, 51, NT_STATUS_REMOTE_NOT_LISTENING}, - {ERRDOS, 52, NT_STATUS_DUPLICATE_NAME}, - {ERRDOS, 53, NT_STATUS_BAD_NETWORK_PATH}, - {ERRDOS, 54, NT_STATUS_NETWORK_BUSY}, - {ERRDOS, 55, NT_STATUS_DEVICE_DOES_NOT_EXIST}, - {ERRDOS, 56, NT_STATUS_TOO_MANY_COMMANDS}, - {ERRDOS, 57, NT_STATUS_ADAPTER_HARDWARE_ERROR}, - {ERRDOS, 58, NT_STATUS_INVALID_NETWORK_RESPONSE}, - {ERRDOS, 59, NT_STATUS_UNEXPECTED_NETWORK_ERROR}, - {ERRDOS, 60, NT_STATUS_BAD_REMOTE_ADAPTER}, - {ERRDOS, 61, NT_STATUS_PRINT_QUEUE_FULL}, - {ERRDOS, 62, NT_STATUS_NO_SPOOL_SPACE}, - {ERRDOS, 63, NT_STATUS_PRINT_CANCELLED}, - {ERRDOS, 64, NT_STATUS_NETWORK_NAME_DELETED}, - {ERRDOS, 65, NT_STATUS_NETWORK_ACCESS_DENIED}, - {ERRDOS, 66, NT_STATUS_BAD_DEVICE_TYPE}, - {ERRDOS, ERRnosuchshare, NT_STATUS_BAD_NETWORK_NAME}, - {ERRDOS, 68, NT_STATUS_TOO_MANY_NAMES}, - {ERRDOS, 69, NT_STATUS_TOO_MANY_SESSIONS}, - {ERRDOS, 70, NT_STATUS_SHARING_PAUSED}, - {ERRDOS, 71, NT_STATUS_REQUEST_NOT_ACCEPTED}, - {ERRDOS, 72, NT_STATUS_REDIRECTOR_PAUSED}, - {ERRDOS, 88, NT_STATUS_NET_WRITE_FAULT}, - {ERRHRD, ERRgeneral, NT_STATUS_PROFILING_AT_LIMIT}, - {ERRDOS, ERRdiffdevice, NT_STATUS_NOT_SAME_DEVICE}, - {ERRDOS, ERRnoaccess, NT_STATUS_FILE_RENAMED}, - {ERRDOS, 240, NT_STATUS_VIRTUAL_CIRCUIT_CLOSED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SECURITY_ON_OBJECT}, - {ERRHRD, ERRgeneral, NT_STATUS_CANT_WAIT}, - {ERRDOS, ERRpipeclosing, NT_STATUS_PIPE_EMPTY}, - {ERRHRD, ERRgeneral, NT_STATUS_CANT_ACCESS_DOMAIN_INFO}, - {ERRHRD, ERRgeneral, NT_STATUS_CANT_TERMINATE_SELF}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_SERVER_STATE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_STATE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_DOMAIN_ROLE}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_DOMAIN}, - {ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_EXISTS}, - {ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_LIMIT_EXCEEDED}, - {ERRDOS, 300, NT_STATUS_OPLOCK_NOT_GRANTED}, - {ERRDOS, 301, NT_STATUS_INVALID_OPLOCK_PROTOCOL}, - {ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_CORRUPTION}, - {ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_GENERIC_NOT_MAPPED}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_DESCRIPTOR_FORMAT}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_USER_BUFFER}, - {ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_IO_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_CREATE_ERR}, - {ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_MAP_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_UNEXPECTED_MM_EXTEND_ERR}, - {ERRHRD, ERRgeneral, NT_STATUS_NOT_LOGON_PROCESS}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_EXISTS}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_1}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_2}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_3}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_4}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_5}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_6}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_7}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_8}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_9}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_10}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_11}, - {ERRDOS, 87, NT_STATUS_INVALID_PARAMETER_12}, - {ERRDOS, ERRbadpath, NT_STATUS_REDIRECTOR_NOT_STARTED}, - {ERRHRD, ERRgeneral, NT_STATUS_REDIRECTOR_STARTED}, - {ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PACKAGE}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_FUNCTION_TABLE}, - {ERRDOS, 203, NT_STATUS(0xc0000100)}, - {ERRDOS, 145, NT_STATUS_DIRECTORY_NOT_EMPTY}, - {ERRHRD, ERRgeneral, NT_STATUS_FILE_CORRUPT_ERROR}, - {ERRDOS, ERRbaddirectory, NT_STATUS_NOT_A_DIRECTORY}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_LOGON_SESSION_STATE}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGON_SESSION_COLLISION}, - {ERRDOS, 206, NT_STATUS_NAME_TOO_LONG}, - {ERRDOS, 2401, NT_STATUS_FILES_OPEN}, - {ERRDOS, 2404, NT_STATUS_CONNECTION_IN_USE}, - {ERRHRD, ERRgeneral, NT_STATUS_MESSAGE_NOT_FOUND}, - {ERRDOS, ERRnoaccess, NT_STATUS_PROCESS_IS_TERMINATING}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_LOGON_TYPE}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_GUID_TRANSLATION}, - {ERRHRD, ERRgeneral, NT_STATUS_CANNOT_IMPERSONATE}, - {ERRHRD, ERRgeneral, NT_STATUS_IMAGE_ALREADY_LOADED}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_PRESENT}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_NOT_EXIST}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_LID_ALREADY_OWNED}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_NOT_LID_OWNER}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_COMMAND}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_LID}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_ABIOS_INVALID_SELECTOR}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_LDT}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_SIZE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_OFFSET}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_LDT_DESCRIPTOR}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NE_FORMAT}, - {ERRHRD, ERRgeneral, NT_STATUS_RXACT_INVALID_STATE}, - {ERRHRD, ERRgeneral, NT_STATUS_RXACT_COMMIT_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_MAPPED_FILE_SIZE_ZERO}, - {ERRDOS, ERRnofids, NT_STATUS_TOO_MANY_OPENED_FILES}, - {ERRHRD, ERRgeneral, NT_STATUS_CANCELLED}, - {ERRDOS, ERRnoaccess, NT_STATUS_CANNOT_DELETE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_COMPUTER_NAME}, - {ERRDOS, ERRnoaccess, NT_STATUS_FILE_DELETED}, - {ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_ACCOUNT}, - {ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_GROUP}, - {ERRHRD, ERRgeneral, NT_STATUS_SPECIAL_USER}, - {ERRHRD, ERRgeneral, NT_STATUS_MEMBERS_PRIMARY_GROUP}, - {ERRDOS, ERRbadfid, NT_STATUS_FILE_CLOSED}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_THREADS}, - {ERRHRD, ERRgeneral, NT_STATUS_THREAD_NOT_IN_PROCESS}, - {ERRHRD, ERRgeneral, NT_STATUS_TOKEN_ALREADY_IN_USE}, - {ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_QUOTA_EXCEEDED}, - {ERRHRD, ERRgeneral, NT_STATUS_COMMITMENT_LIMIT}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_LE_FORMAT}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_NOT_MZ}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_PROTECT}, - {ERRDOS, 193, NT_STATUS_INVALID_IMAGE_WIN_16}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGON_SERVER_CONFLICT}, - {ERRHRD, ERRgeneral, NT_STATUS_TIME_DIFFERENCE_AT_DC}, - {ERRHRD, ERRgeneral, NT_STATUS_SYNCHRONIZATION_REQUIRED}, - {ERRDOS, 126, NT_STATUS_DLL_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_OPEN_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_IO_PRIVILEGE_FAILED}, - {ERRDOS, 182, NT_STATUS_ORDINAL_NOT_FOUND}, - {ERRDOS, 127, NT_STATUS_ENTRYPOINT_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_CONTROL_C_EXIT}, - {ERRDOS, 64, NT_STATUS_LOCAL_DISCONNECT}, - {ERRDOS, 64, NT_STATUS_REMOTE_DISCONNECT}, - {ERRDOS, 51, NT_STATUS_REMOTE_RESOURCES}, - {ERRDOS, 59, NT_STATUS_LINK_FAILED}, - {ERRDOS, 59, NT_STATUS_LINK_TIMEOUT}, - {ERRDOS, 59, NT_STATUS_INVALID_CONNECTION}, - {ERRDOS, 59, NT_STATUS_INVALID_ADDRESS}, - {ERRHRD, ERRgeneral, NT_STATUS_DLL_INIT_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_MISSING_SYSTEMFILE}, - {ERRHRD, ERRgeneral, NT_STATUS_UNHANDLED_EXCEPTION}, - {ERRHRD, ERRgeneral, NT_STATUS_APP_INIT_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_PAGEFILE_CREATE_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_PAGEFILE}, - {ERRDOS, ERRunknownlevel, NT_STATUS_INVALID_LEVEL}, - {ERRDOS, 86, NT_STATUS_WRONG_PASSWORD_CORE}, - {ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_FLOAT_CONTEXT}, - {ERRDOS, 109, NT_STATUS_PIPE_BROKEN}, - {ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_CORRUPT}, - {ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_IO_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_EVENT_PAIR}, - {ERRHRD, ERRgeneral, NT_STATUS_UNRECOGNIZED_VOLUME}, - {ERRHRD, ERRgeneral, NT_STATUS_SERIAL_NO_DEVICE_INITED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_ALIAS}, - {ERRHRD, ERRgeneral, NT_STATUS_MEMBER_NOT_IN_ALIAS}, - {ERRHRD, ERRgeneral, NT_STATUS_MEMBER_IN_ALIAS}, - {ERRHRD, ERRgeneral, NT_STATUS_ALIAS_EXISTS}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGON_NOT_GRANTED}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SECRETS}, - {ERRHRD, ERRgeneral, NT_STATUS_SECRET_TOO_LONG}, - {ERRHRD, ERRgeneral, NT_STATUS_INTERNAL_DB_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_FULLSCREEN_MODE}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_CONTEXT_IDS}, - {ERRDOS, ERRnoaccess, NT_STATUS_LOGON_TYPE_NOT_GRANTED}, - {ERRHRD, ERRgeneral, NT_STATUS_NOT_REGISTRY_FILE}, - {ERRHRD, ERRgeneral, NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED}, - {ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_FT_MISSING_MEMBER}, - {ERRHRD, ERRgeneral, NT_STATUS_ILL_FORMED_SERVICE_ENTRY}, - {ERRHRD, ERRgeneral, NT_STATUS_ILLEGAL_CHARACTER}, - {ERRHRD, ERRgeneral, NT_STATUS_UNMAPPABLE_CHARACTER}, - {ERRHRD, ERRgeneral, NT_STATUS_UNDEFINED_CHARACTER}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_VOLUME}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_WRONG_CYLINDER}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_UNKNOWN_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_FLOPPY_BAD_REGISTERS}, - {ERRHRD, ERRgeneral, NT_STATUS_DISK_RECALIBRATE_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_DISK_OPERATION_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_DISK_RESET_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_SHARED_IRQ_BUSY}, - {ERRHRD, ERRgeneral, NT_STATUS_FT_ORPHANING}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000016e)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000016f)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc0000170)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc0000171)}, - {ERRHRD, ERRgeneral, NT_STATUS_PARTITION_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_BLOCK_LENGTH}, - {ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_PARTITIONED}, - {ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_LOCK_MEDIA}, - {ERRHRD, ERRgeneral, NT_STATUS_UNABLE_TO_UNLOAD_MEDIA}, - {ERRHRD, ERRgeneral, NT_STATUS_EOM_OVERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_MEDIA}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc0000179)}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_MEMBER}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_MEMBER}, - {ERRHRD, ERRgeneral, NT_STATUS_KEY_DELETED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_LOG_SPACE}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_SIDS}, - {ERRHRD, ERRgeneral, NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED}, - {ERRHRD, ERRgeneral, NT_STATUS_KEY_HAS_CHILDREN}, - {ERRHRD, ERRgeneral, NT_STATUS_CHILD_MUST_BE_VOLATILE}, - {ERRDOS, 87, NT_STATUS_DEVICE_CONFIGURATION_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_DRIVER_INTERNAL_ERROR}, - {ERRDOS, 22, NT_STATUS_INVALID_DEVICE_STATE}, - {ERRHRD, ERRgeneral, NT_STATUS_IO_DEVICE_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_DEVICE_PROTOCOL_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_BACKUP_CONTROLLER}, - {ERRHRD, ERRgeneral, NT_STATUS_LOG_FILE_FULL}, - {ERRDOS, 19, NT_STATUS_TOO_LATE}, - {ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_LSA_SECRET}, -/* { This NT error code was 'sqashed' - from NT_STATUS_NO_TRUST_SAM_ACCOUNT to NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE - during the session setup } -*/ - {ERRDOS, ERRnoaccess, NT_STATUS_NO_TRUST_SAM_ACCOUNT}, - {ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_DOMAIN_FAILURE}, - {ERRDOS, ERRnoaccess, NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CORRUPT}, - {ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_CANT_START}, - {ERRDOS, ERRnoaccess, NT_STATUS_TRUST_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_MUTANT_LIMIT_EXCEEDED}, - {ERRDOS, ERRinvgroup, NT_STATUS_NETLOGON_NOT_STARTED}, - {ERRSRV, 2239, NT_STATUS_ACCOUNT_EXPIRED}, - {ERRHRD, ERRgeneral, NT_STATUS_POSSIBLE_DEADLOCK}, - {ERRHRD, ERRgeneral, NT_STATUS_NETWORK_CREDENTIAL_CONFLICT}, - {ERRHRD, ERRgeneral, NT_STATUS_REMOTE_SESSION_LIMIT}, - {ERRHRD, ERRgeneral, NT_STATUS_EVENTLOG_FILE_CHANGED}, - {ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT}, - {ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT}, - {ERRDOS, ERRnoaccess, NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT}, -/* { This NT error code was 'sqashed' - from NT_STATUS_DOMAIN_TRUST_INCONSISTENT to NT_STATUS_LOGON_FAILURE - during the session setup } -*/ - {ERRDOS, ERRnoaccess, NT_STATUS_DOMAIN_TRUST_INCONSISTENT}, - {ERRHRD, ERRgeneral, NT_STATUS_FS_DRIVER_REQUIRED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_USER_SESSION_KEY}, - {ERRDOS, 59, NT_STATUS_USER_SESSION_DELETED}, - {ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_LANG_NOT_FOUND}, - {ERRDOS, ERRnomem, NT_STATUS_INSUFF_SERVER_RESOURCES}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_BUFFER_SIZE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_COMPONENT}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_WILDCARD}, - {ERRDOS, 68, NT_STATUS_TOO_MANY_ADDRESSES}, - {ERRDOS, 52, NT_STATUS_ADDRESS_ALREADY_EXISTS}, - {ERRDOS, 64, NT_STATUS_ADDRESS_CLOSED}, - {ERRDOS, 64, NT_STATUS_CONNECTION_DISCONNECTED}, - {ERRDOS, 64, NT_STATUS_CONNECTION_RESET}, - {ERRDOS, 68, NT_STATUS_TOO_MANY_NODES}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_ABORTED}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_TIMED_OUT}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_NO_RELEASE}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_NO_MATCH}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_RESPONDED}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_ID}, - {ERRDOS, 59, NT_STATUS_TRANSACTION_INVALID_TYPE}, - {ERRDOS, ERRunsup, NT_STATUS_NOT_SERVER_SESSION}, - {ERRDOS, ERRunsup, NT_STATUS_NOT_CLIENT_SESSION}, - {ERRHRD, ERRgeneral, NT_STATUS_CANNOT_LOAD_REGISTRY_FILE}, - {ERRHRD, ERRgeneral, NT_STATUS_DEBUG_ATTACH_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_SYSTEM_PROCESS_TERMINATED}, - {ERRHRD, ERRgeneral, NT_STATUS_DATA_NOT_ACCEPTED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_BROWSER_SERVERS_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_VDM_HARD_ERROR}, - {ERRHRD, ERRgeneral, NT_STATUS_DRIVER_CANCEL_TIMEOUT}, - {ERRHRD, ERRgeneral, NT_STATUS_REPLY_MESSAGE_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS_MAPPED_ALIGNMENT}, - {ERRDOS, 193, NT_STATUS_IMAGE_CHECKSUM_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS_LOST_WRITEBEHIND_DATA}, - {ERRHRD, ERRgeneral, NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID}, - {ERRSRV, 2242, NT_STATUS_PASSWORD_MUST_CHANGE}, - {ERRHRD, ERRgeneral, NT_STATUS_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_NOT_TINY_STREAM}, - {ERRHRD, ERRgeneral, NT_STATUS_RECOVERY_FAILURE}, - {ERRHRD, ERRgeneral, NT_STATUS_STACK_OVERFLOW_READ}, - {ERRHRD, ERRgeneral, NT_STATUS_FAIL_CHECK}, - {ERRHRD, ERRgeneral, NT_STATUS_DUPLICATE_OBJECTID}, - {ERRHRD, ERRgeneral, NT_STATUS_OBJECTID_EXISTS}, - {ERRHRD, ERRgeneral, NT_STATUS_CONVERT_TO_LARGE}, - {ERRHRD, ERRgeneral, NT_STATUS_RETRY}, - {ERRHRD, ERRgeneral, NT_STATUS_FOUND_OUT_OF_SCOPE}, - {ERRHRD, ERRgeneral, NT_STATUS_ALLOCATE_BUCKET}, - {ERRHRD, ERRgeneral, NT_STATUS_PROPSET_NOT_FOUND}, - {ERRHRD, ERRgeneral, NT_STATUS_MARSHALL_OVERFLOW}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_VARIANT}, - {ERRHRD, ERRgeneral, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND}, - {ERRDOS, ERRnoaccess, NT_STATUS_ACCOUNT_LOCKED_OUT}, - {ERRDOS, ERRbadfid, NT_STATUS_HANDLE_NOT_CLOSABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_REFUSED}, - {ERRHRD, ERRgeneral, NT_STATUS_GRACEFUL_DISCONNECT}, - {ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, - {ERRHRD, ERRgeneral, NT_STATUS_ADDRESS_NOT_ASSOCIATED}, - {ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_INVALID}, - {ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ACTIVE}, - {ERRHRD, ERRgeneral, NT_STATUS_NETWORK_UNREACHABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_HOST_UNREACHABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_PROTOCOL_UNREACHABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_PORT_UNREACHABLE}, - {ERRHRD, ERRgeneral, NT_STATUS_REQUEST_ABORTED}, - {ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_ABORTED}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_COMPRESSION_BUFFER}, - {ERRHRD, ERRgeneral, NT_STATUS_USER_MAPPED_FILE}, - {ERRHRD, ERRgeneral, NT_STATUS_AUDIT_FAILED}, - {ERRHRD, ERRgeneral, NT_STATUS_TIMER_RESOLUTION_NOT_SET}, - {ERRHRD, ERRgeneral, NT_STATUS_CONNECTION_COUNT_LIMIT}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGIN_TIME_RESTRICTION}, - {ERRHRD, ERRgeneral, NT_STATUS_LOGIN_WKSTA_RESTRICTION}, - {ERRDOS, 193, NT_STATUS_IMAGE_MP_UP_MISMATCH}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024a)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024b)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024c)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024d)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024e)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000024f)}, - {ERRHRD, ERRgeneral, NT_STATUS_INSUFFICIENT_LOGON_INFO}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_DLL_ENTRYPOINT}, - {ERRHRD, ERRgeneral, NT_STATUS_BAD_SERVICE_ENTRYPOINT}, - {ERRHRD, ERRgeneral, NT_STATUS_LPC_REPLY_LOST}, - {ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT1}, - {ERRHRD, ERRgeneral, NT_STATUS_IP_ADDRESS_CONFLICT2}, - {ERRHRD, ERRgeneral, NT_STATUS_REGISTRY_QUOTA_LIMIT}, - {ERRSRV, ERRbadtype, NT_STATUS_PATH_NOT_COVERED}, - {ERRHRD, ERRgeneral, NT_STATUS_NO_CALLBACK_ACTIVE}, - {ERRHRD, ERRgeneral, NT_STATUS_LICENSE_QUOTA_EXCEEDED}, - {ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_SHORT}, - {ERRHRD, ERRgeneral, NT_STATUS_PWD_TOO_RECENT}, - {ERRHRD, ERRgeneral, NT_STATUS_PWD_HISTORY_CONFLICT}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000025d)}, - {ERRHRD, ERRgeneral, NT_STATUS_PLUGPLAY_NO_DEVICE}, - {ERRHRD, ERRgeneral, NT_STATUS_UNSUPPORTED_COMPRESSION}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_HW_PROFILE}, - {ERRHRD, ERRgeneral, NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH}, - {ERRDOS, 182, NT_STATUS_DRIVER_ORDINAL_NOT_FOUND}, - {ERRDOS, 127, NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND}, - {ERRDOS, 288, NT_STATUS_RESOURCE_NOT_OWNED}, - {ERRHRD, ERRgeneral, NT_STATUS_TOO_MANY_LINKS}, - {ERRHRD, ERRgeneral, NT_STATUS_QUOTA_LIST_INCONSISTENT}, - {ERRHRD, ERRgeneral, NT_STATUS_FILE_IS_OFFLINE}, - {ERRDOS, 21, NT_STATUS(0xc000026e)}, - {ERRDOS, 161, NT_STATUS(0xc0000281)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc000028a)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc000028b)}, - {ERRHRD, ERRgeneral, NT_STATUS(0xc000028c)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc000028d)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc000028e)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc000028f)}, - {ERRDOS, ERRnoaccess, NT_STATUS(0xc0000290)}, - {ERRDOS, ERRbadfunc, NT_STATUS(0xc000029c)}, -}; - - /* errmap NTSTATUS->Win32 */ static const struct { NTSTATUS ntstatus; @@ -1200,79 +605,6 @@ bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2) return NT_STATUS_V(status1) == NT_STATUS_V(status2); } -/***************************************************************************** -convert a NT status code to a dos class/code - *****************************************************************************/ -void ntstatus_to_dos(NTSTATUS ntstatus, uint8_t *eclass, uint32_t *ecode) -{ - int i; - if (NT_STATUS_IS_OK(ntstatus)) { - *eclass = 0; - *ecode = 0; - return; - } - if (NT_STATUS_IS_DOS(ntstatus)) { - *eclass = NT_STATUS_DOS_CLASS(ntstatus); - *ecode = NT_STATUS_DOS_CODE(ntstatus); - return; - } - for (i=0; NT_STATUS_V(ntstatus_to_dos_map[i].ntstatus); i++) { - if (NT_STATUS_V(ntstatus) == - NT_STATUS_V(ntstatus_to_dos_map[i].ntstatus)) { - *eclass = ntstatus_to_dos_map[i].dos_class; - *ecode = ntstatus_to_dos_map[i].dos_code; - return; - } - } - *eclass = ERRHRD; - *ecode = ERRgeneral; -} - - -/***************************************************************************** -convert a WERROR to a NT status32 code - *****************************************************************************/ -NTSTATUS werror_to_ntstatus(WERROR error) -{ - int i; - if (W_ERROR_IS_OK(error)) return NT_STATUS_OK; - - for (i=0; !W_ERROR_IS_OK(werror_to_ntstatus_map[i].werror); i++) { - if (W_ERROR_V(error) == - W_ERROR_V(werror_to_ntstatus_map[i].werror)) { - return werror_to_ntstatus_map[i].ntstatus; - } - } - - for (i=0; NT_STATUS_V(ntstatus_to_werror_map[i].ntstatus); i++) { - if (W_ERROR_V(error) == - W_ERROR_V(ntstatus_to_werror_map[i].werror)) { - return ntstatus_to_werror_map[i].ntstatus; - } - } - - /* just guess ... */ - return NT_STATUS(W_ERROR_V(error) | 0xc0000000); -} - -/***************************************************************************** -convert a NTSTATUS to a WERROR - *****************************************************************************/ -WERROR ntstatus_to_werror(NTSTATUS error) -{ - int i; - if (NT_STATUS_IS_OK(error)) return WERR_OK; - for (i=0; NT_STATUS_V(ntstatus_to_werror_map[i].ntstatus); i++) { - if (NT_STATUS_V(error) == - NT_STATUS_V(ntstatus_to_werror_map[i].ntstatus)) { - return ntstatus_to_werror_map[i].werror; - } - } - - /* a lame guess */ - return W_ERROR(NT_STATUS_V(error) & 0xffff); -} - /* Mapping between Unix, and NT error numbers */ static const struct { -- cgit From 344eb08ee4e444c1fc1beac26e50c6a85b942885 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 15:30:01 +1000 Subject: nterr: Add mem_ctx for return string from get_nt_error_c_code() It is clearer to avoid the implicit return on talloc_tos() Andrew Bartlett --- source4/libcli/util/nterr.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c index 99b5191273..f2b15f03e8 100644 --- a/source4/libcli/util/nterr.c +++ b/source4/libcli/util/nterr.c @@ -897,22 +897,23 @@ const char *get_friendly_nt_error_msg(NTSTATUS nt_code) Returns an NT_STATUS constant as a string for inclusion in autogen C code. *****************************************************************************/ -const char *get_nt_error_c_code(NTSTATUS nt_code) +const char *get_nt_error_c_code(TALLOC_CTX *mem_ctx, NTSTATUS nt_code) { - static char out[40]; + char *result; int idx = 0; while (nt_errs[idx].nt_errstr != NULL) { if (NT_STATUS_V(nt_errs[idx].nt_errcode) == NT_STATUS_V(nt_code)) { - return nt_errs[idx].nt_errstr; + result = talloc_strdup(mem_ctx, nt_errs[idx].nt_errstr); + return result; } idx++; } - slprintf(out, sizeof(out), "NT_STATUS(0x%08x)", NT_STATUS_V(nt_code)); - - return out; + result = talloc_asprintf(mem_ctx, "NT_STATUS(0x%08x)", + NT_STATUS_V(nt_code)); + return result; } /***************************************************************************** -- cgit From db74cad1c638ae2142b89757397b50009ea0678a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 15:50:07 +1000 Subject: libcli/util Move NTSTATUS table to the top level --- source4/libcli/util/nterr.c | 891 +------------------------------------------- 1 file changed, 2 insertions(+), 889 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c index f2b15f03e8..ea8c0fcd35 100644 --- a/source4/libcli/util/nterr.c +++ b/source4/libcli/util/nterr.c @@ -23,828 +23,8 @@ #include "../libcli/ldap/ldap_errors.h" #undef strcasecmp -#if !defined(N_) -#define N_(string) string -#endif - -typedef struct -{ - const char *nt_errstr; - NTSTATUS nt_errcode; -} nt_err_code_struct; - -#define DOS_CODE(class, code) { #class ":" #code, NT_STATUS_DOS(class, code) } -#define LDAP_CODE(code) { #code, NT_STATUS_LDAP(code) } - -static const nt_err_code_struct nt_errs[] = -{ - { "NT_STATUS_OK", NT_STATUS_OK }, - { "STATUS_NO_MORE_FILES", STATUS_NO_MORE_FILES }, - { "STATUS_NO_MORE_EAS", STATUS_NO_MORE_EAS }, - { "STATUS_INVALID_EA_NAME", STATUS_INVALID_EA_NAME }, - { "STATUS_EA_LIST_INCONSISTENT", STATUS_EA_LIST_INCONSISTENT }, - { "STATUS_INVALID_EA_FLAG", STATUS_INVALID_EA_FLAG }, - { "NT_STATUS_UNSUCCESSFUL", NT_STATUS_UNSUCCESSFUL }, - { "NT_STATUS_NOT_IMPLEMENTED", NT_STATUS_NOT_IMPLEMENTED }, - { "NT_STATUS_INVALID_INFO_CLASS", NT_STATUS_INVALID_INFO_CLASS }, - { "NT_STATUS_INFO_LENGTH_MISMATCH", NT_STATUS_INFO_LENGTH_MISMATCH }, - { "NT_STATUS_ACCESS_VIOLATION", NT_STATUS_ACCESS_VIOLATION }, - { "STATUS_BUFFER_OVERFLOW", STATUS_BUFFER_OVERFLOW }, - { "NT_STATUS_IN_PAGE_ERROR", NT_STATUS_IN_PAGE_ERROR }, - { "NT_STATUS_PAGEFILE_QUOTA", NT_STATUS_PAGEFILE_QUOTA }, - { "NT_STATUS_INVALID_HANDLE", NT_STATUS_INVALID_HANDLE }, - { "NT_STATUS_BAD_INITIAL_STACK", NT_STATUS_BAD_INITIAL_STACK }, - { "NT_STATUS_BAD_INITIAL_PC", NT_STATUS_BAD_INITIAL_PC }, - { "NT_STATUS_INVALID_CID", NT_STATUS_INVALID_CID }, - { "NT_STATUS_TIMER_NOT_CANCELED", NT_STATUS_TIMER_NOT_CANCELED }, - { "NT_STATUS_INVALID_PARAMETER", NT_STATUS_INVALID_PARAMETER }, - { "NT_STATUS_NO_SUCH_DEVICE", NT_STATUS_NO_SUCH_DEVICE }, - { "NT_STATUS_NO_SUCH_FILE", NT_STATUS_NO_SUCH_FILE }, - { "NT_STATUS_INVALID_DEVICE_REQUEST", NT_STATUS_INVALID_DEVICE_REQUEST }, - { "NT_STATUS_END_OF_FILE", NT_STATUS_END_OF_FILE }, - { "NT_STATUS_WRONG_VOLUME", NT_STATUS_WRONG_VOLUME }, - { "NT_STATUS_NO_MEDIA_IN_DEVICE", NT_STATUS_NO_MEDIA_IN_DEVICE }, - { "NT_STATUS_UNRECOGNIZED_MEDIA", NT_STATUS_UNRECOGNIZED_MEDIA }, - { "NT_STATUS_NONEXISTENT_SECTOR", NT_STATUS_NONEXISTENT_SECTOR }, - { "NT_STATUS_MORE_PROCESSING_REQUIRED", NT_STATUS_MORE_PROCESSING_REQUIRED }, - { "NT_STATUS_NO_MEMORY", NT_STATUS_NO_MEMORY }, - { "NT_STATUS_CONFLICTING_ADDRESSES", NT_STATUS_CONFLICTING_ADDRESSES }, - { "NT_STATUS_NOT_MAPPED_VIEW", NT_STATUS_NOT_MAPPED_VIEW }, - { "NT_STATUS_UNABLE_TO_FREE_VM", NT_STATUS_UNABLE_TO_FREE_VM }, - { "NT_STATUS_UNABLE_TO_DELETE_SECTION", NT_STATUS_UNABLE_TO_DELETE_SECTION }, - { "NT_STATUS_INVALID_SYSTEM_SERVICE", NT_STATUS_INVALID_SYSTEM_SERVICE }, - { "NT_STATUS_ILLEGAL_INSTRUCTION", NT_STATUS_ILLEGAL_INSTRUCTION }, - { "NT_STATUS_INVALID_LOCK_SEQUENCE", NT_STATUS_INVALID_LOCK_SEQUENCE }, - { "NT_STATUS_INVALID_VIEW_SIZE", NT_STATUS_INVALID_VIEW_SIZE }, - { "NT_STATUS_INVALID_FILE_FOR_SECTION", NT_STATUS_INVALID_FILE_FOR_SECTION }, - { "NT_STATUS_ALREADY_COMMITTED", NT_STATUS_ALREADY_COMMITTED }, - { "NT_STATUS_ACCESS_DENIED", NT_STATUS_ACCESS_DENIED }, - { "NT_STATUS_BUFFER_TOO_SMALL", NT_STATUS_BUFFER_TOO_SMALL }, - { "NT_STATUS_OBJECT_TYPE_MISMATCH", NT_STATUS_OBJECT_TYPE_MISMATCH }, - { "NT_STATUS_NONCONTINUABLE_EXCEPTION", NT_STATUS_NONCONTINUABLE_EXCEPTION }, - { "NT_STATUS_INVALID_DISPOSITION", NT_STATUS_INVALID_DISPOSITION }, - { "NT_STATUS_UNWIND", NT_STATUS_UNWIND }, - { "NT_STATUS_BAD_STACK", NT_STATUS_BAD_STACK }, - { "NT_STATUS_INVALID_UNWIND_TARGET", NT_STATUS_INVALID_UNWIND_TARGET }, - { "NT_STATUS_NOT_LOCKED", NT_STATUS_NOT_LOCKED }, - { "NT_STATUS_PARITY_ERROR", NT_STATUS_PARITY_ERROR }, - { "NT_STATUS_UNABLE_TO_DECOMMIT_VM", NT_STATUS_UNABLE_TO_DECOMMIT_VM }, - { "NT_STATUS_NOT_COMMITTED", NT_STATUS_NOT_COMMITTED }, - { "NT_STATUS_INVALID_PORT_ATTRIBUTES", NT_STATUS_INVALID_PORT_ATTRIBUTES }, - { "NT_STATUS_PORT_MESSAGE_TOO_LONG", NT_STATUS_PORT_MESSAGE_TOO_LONG }, - { "NT_STATUS_INVALID_PARAMETER_MIX", NT_STATUS_INVALID_PARAMETER_MIX }, - { "NT_STATUS_INVALID_QUOTA_LOWER", NT_STATUS_INVALID_QUOTA_LOWER }, - { "NT_STATUS_DISK_CORRUPT_ERROR", NT_STATUS_DISK_CORRUPT_ERROR }, - { "NT_STATUS_OBJECT_NAME_INVALID", NT_STATUS_OBJECT_NAME_INVALID }, - { "NT_STATUS_OBJECT_NAME_NOT_FOUND", NT_STATUS_OBJECT_NAME_NOT_FOUND }, - { "NT_STATUS_OBJECT_NAME_COLLISION", NT_STATUS_OBJECT_NAME_COLLISION }, - { "NT_STATUS_HANDLE_NOT_WAITABLE", NT_STATUS_HANDLE_NOT_WAITABLE }, - { "NT_STATUS_PORT_DISCONNECTED", NT_STATUS_PORT_DISCONNECTED }, - { "NT_STATUS_DEVICE_ALREADY_ATTACHED", NT_STATUS_DEVICE_ALREADY_ATTACHED }, - { "NT_STATUS_OBJECT_PATH_INVALID", NT_STATUS_OBJECT_PATH_INVALID }, - { "NT_STATUS_OBJECT_PATH_NOT_FOUND", NT_STATUS_OBJECT_PATH_NOT_FOUND }, - { "NT_STATUS_OBJECT_PATH_SYNTAX_BAD", NT_STATUS_OBJECT_PATH_SYNTAX_BAD }, - { "NT_STATUS_DATA_OVERRUN", NT_STATUS_DATA_OVERRUN }, - { "NT_STATUS_DATA_LATE_ERROR", NT_STATUS_DATA_LATE_ERROR }, - { "NT_STATUS_DATA_ERROR", NT_STATUS_DATA_ERROR }, - { "NT_STATUS_CRC_ERROR", NT_STATUS_CRC_ERROR }, - { "NT_STATUS_SECTION_TOO_BIG", NT_STATUS_SECTION_TOO_BIG }, - { "NT_STATUS_PORT_CONNECTION_REFUSED", NT_STATUS_PORT_CONNECTION_REFUSED }, - { "NT_STATUS_INVALID_PORT_HANDLE", NT_STATUS_INVALID_PORT_HANDLE }, - { "NT_STATUS_SHARING_VIOLATION", NT_STATUS_SHARING_VIOLATION }, - { "NT_STATUS_QUOTA_EXCEEDED", NT_STATUS_QUOTA_EXCEEDED }, - { "NT_STATUS_INVALID_PAGE_PROTECTION", NT_STATUS_INVALID_PAGE_PROTECTION }, - { "NT_STATUS_MUTANT_NOT_OWNED", NT_STATUS_MUTANT_NOT_OWNED }, - { "NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED", NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED }, - { "NT_STATUS_PORT_ALREADY_SET", NT_STATUS_PORT_ALREADY_SET }, - { "NT_STATUS_SECTION_NOT_IMAGE", NT_STATUS_SECTION_NOT_IMAGE }, - { "NT_STATUS_SUSPEND_COUNT_EXCEEDED", NT_STATUS_SUSPEND_COUNT_EXCEEDED }, - { "NT_STATUS_THREAD_IS_TERMINATING", NT_STATUS_THREAD_IS_TERMINATING }, - { "NT_STATUS_BAD_WORKING_SET_LIMIT", NT_STATUS_BAD_WORKING_SET_LIMIT }, - { "NT_STATUS_INCOMPATIBLE_FILE_MAP", NT_STATUS_INCOMPATIBLE_FILE_MAP }, - { "NT_STATUS_SECTION_PROTECTION", NT_STATUS_SECTION_PROTECTION }, - { "NT_STATUS_EAS_NOT_SUPPORTED", NT_STATUS_EAS_NOT_SUPPORTED }, - { "NT_STATUS_EA_TOO_LARGE", NT_STATUS_EA_TOO_LARGE }, - { "NT_STATUS_NONEXISTENT_EA_ENTRY", NT_STATUS_NONEXISTENT_EA_ENTRY }, - { "NT_STATUS_NO_EAS_ON_FILE", NT_STATUS_NO_EAS_ON_FILE }, - { "NT_STATUS_EA_CORRUPT_ERROR", NT_STATUS_EA_CORRUPT_ERROR }, - { "NT_STATUS_FILE_LOCK_CONFLICT", NT_STATUS_FILE_LOCK_CONFLICT }, - { "NT_STATUS_LOCK_NOT_GRANTED", NT_STATUS_LOCK_NOT_GRANTED }, - { "NT_STATUS_DELETE_PENDING", NT_STATUS_DELETE_PENDING }, - { "NT_STATUS_CTL_FILE_NOT_SUPPORTED", NT_STATUS_CTL_FILE_NOT_SUPPORTED }, - { "NT_STATUS_UNKNOWN_REVISION", NT_STATUS_UNKNOWN_REVISION }, - { "NT_STATUS_REVISION_MISMATCH", NT_STATUS_REVISION_MISMATCH }, - { "NT_STATUS_INVALID_OWNER", NT_STATUS_INVALID_OWNER }, - { "NT_STATUS_INVALID_PRIMARY_GROUP", NT_STATUS_INVALID_PRIMARY_GROUP }, - { "NT_STATUS_NO_IMPERSONATION_TOKEN", NT_STATUS_NO_IMPERSONATION_TOKEN }, - { "NT_STATUS_CANT_DISABLE_MANDATORY", NT_STATUS_CANT_DISABLE_MANDATORY }, - { "NT_STATUS_NO_LOGON_SERVERS", NT_STATUS_NO_LOGON_SERVERS }, - { "NT_STATUS_NO_SUCH_LOGON_SESSION", NT_STATUS_NO_SUCH_LOGON_SESSION }, - { "NT_STATUS_NO_SUCH_PRIVILEGE", NT_STATUS_NO_SUCH_PRIVILEGE }, - { "NT_STATUS_PRIVILEGE_NOT_HELD", NT_STATUS_PRIVILEGE_NOT_HELD }, - { "NT_STATUS_INVALID_ACCOUNT_NAME", NT_STATUS_INVALID_ACCOUNT_NAME }, - { "NT_STATUS_USER_EXISTS", NT_STATUS_USER_EXISTS }, - { "NT_STATUS_NO_SUCH_USER", NT_STATUS_NO_SUCH_USER }, - { "NT_STATUS_GROUP_EXISTS", NT_STATUS_GROUP_EXISTS }, - { "NT_STATUS_NO_SUCH_GROUP", NT_STATUS_NO_SUCH_GROUP }, - { "NT_STATUS_MEMBER_IN_GROUP", NT_STATUS_MEMBER_IN_GROUP }, - { "NT_STATUS_MEMBER_NOT_IN_GROUP", NT_STATUS_MEMBER_NOT_IN_GROUP }, - { "NT_STATUS_LAST_ADMIN", NT_STATUS_LAST_ADMIN }, - { "NT_STATUS_WRONG_PASSWORD", NT_STATUS_WRONG_PASSWORD }, - { "NT_STATUS_ILL_FORMED_PASSWORD", NT_STATUS_ILL_FORMED_PASSWORD }, - { "NT_STATUS_PASSWORD_RESTRICTION", NT_STATUS_PASSWORD_RESTRICTION }, - { "NT_STATUS_LOGON_FAILURE", NT_STATUS_LOGON_FAILURE }, - { "NT_STATUS_ACCOUNT_RESTRICTION", NT_STATUS_ACCOUNT_RESTRICTION }, - { "NT_STATUS_INVALID_LOGON_HOURS", NT_STATUS_INVALID_LOGON_HOURS }, - { "NT_STATUS_INVALID_WORKSTATION", NT_STATUS_INVALID_WORKSTATION }, - { "NT_STATUS_PASSWORD_EXPIRED", NT_STATUS_PASSWORD_EXPIRED }, - { "NT_STATUS_ACCOUNT_DISABLED", NT_STATUS_ACCOUNT_DISABLED }, - { "NT_STATUS_NONE_MAPPED", NT_STATUS_NONE_MAPPED }, - { "NT_STATUS_TOO_MANY_LUIDS_REQUESTED", NT_STATUS_TOO_MANY_LUIDS_REQUESTED }, - { "NT_STATUS_LUIDS_EXHAUSTED", NT_STATUS_LUIDS_EXHAUSTED }, - { "NT_STATUS_INVALID_SUB_AUTHORITY", NT_STATUS_INVALID_SUB_AUTHORITY }, - { "NT_STATUS_INVALID_ACL", NT_STATUS_INVALID_ACL }, - { "NT_STATUS_INVALID_SID", NT_STATUS_INVALID_SID }, - { "NT_STATUS_INVALID_SECURITY_DESCR", NT_STATUS_INVALID_SECURITY_DESCR }, - { "NT_STATUS_PROCEDURE_NOT_FOUND", NT_STATUS_PROCEDURE_NOT_FOUND }, - { "NT_STATUS_INVALID_IMAGE_FORMAT", NT_STATUS_INVALID_IMAGE_FORMAT }, - { "NT_STATUS_NO_TOKEN", NT_STATUS_NO_TOKEN }, - { "NT_STATUS_BAD_INHERITANCE_ACL", NT_STATUS_BAD_INHERITANCE_ACL }, - { "NT_STATUS_RANGE_NOT_LOCKED", NT_STATUS_RANGE_NOT_LOCKED }, - { "NT_STATUS_DISK_FULL", NT_STATUS_DISK_FULL }, - { "NT_STATUS_SERVER_DISABLED", NT_STATUS_SERVER_DISABLED }, - { "NT_STATUS_SERVER_NOT_DISABLED", NT_STATUS_SERVER_NOT_DISABLED }, - { "NT_STATUS_TOO_MANY_GUIDS_REQUESTED", NT_STATUS_TOO_MANY_GUIDS_REQUESTED }, - { "NT_STATUS_GUIDS_EXHAUSTED", NT_STATUS_GUIDS_EXHAUSTED }, - { "NT_STATUS_INVALID_ID_AUTHORITY", NT_STATUS_INVALID_ID_AUTHORITY }, - { "NT_STATUS_AGENTS_EXHAUSTED", NT_STATUS_AGENTS_EXHAUSTED }, - { "NT_STATUS_INVALID_VOLUME_LABEL", NT_STATUS_INVALID_VOLUME_LABEL }, - { "NT_STATUS_SECTION_NOT_EXTENDED", NT_STATUS_SECTION_NOT_EXTENDED }, - { "NT_STATUS_NOT_MAPPED_DATA", NT_STATUS_NOT_MAPPED_DATA }, - { "NT_STATUS_RESOURCE_DATA_NOT_FOUND", NT_STATUS_RESOURCE_DATA_NOT_FOUND }, - { "NT_STATUS_RESOURCE_TYPE_NOT_FOUND", NT_STATUS_RESOURCE_TYPE_NOT_FOUND }, - { "NT_STATUS_RESOURCE_NAME_NOT_FOUND", NT_STATUS_RESOURCE_NAME_NOT_FOUND }, - { "NT_STATUS_ARRAY_BOUNDS_EXCEEDED", NT_STATUS_ARRAY_BOUNDS_EXCEEDED }, - { "NT_STATUS_FLOAT_DENORMAL_OPERAND", NT_STATUS_FLOAT_DENORMAL_OPERAND }, - { "NT_STATUS_FLOAT_DIVIDE_BY_ZERO", NT_STATUS_FLOAT_DIVIDE_BY_ZERO }, - { "NT_STATUS_FLOAT_INEXACT_RESULT", NT_STATUS_FLOAT_INEXACT_RESULT }, - { "NT_STATUS_FLOAT_INVALID_OPERATION", NT_STATUS_FLOAT_INVALID_OPERATION }, - { "NT_STATUS_FLOAT_OVERFLOW", NT_STATUS_FLOAT_OVERFLOW }, - { "NT_STATUS_FLOAT_STACK_CHECK", NT_STATUS_FLOAT_STACK_CHECK }, - { "NT_STATUS_FLOAT_UNDERFLOW", NT_STATUS_FLOAT_UNDERFLOW }, - { "NT_STATUS_INTEGER_DIVIDE_BY_ZERO", NT_STATUS_INTEGER_DIVIDE_BY_ZERO }, - { "NT_STATUS_INTEGER_OVERFLOW", NT_STATUS_INTEGER_OVERFLOW }, - { "NT_STATUS_PRIVILEGED_INSTRUCTION", NT_STATUS_PRIVILEGED_INSTRUCTION }, - { "NT_STATUS_TOO_MANY_PAGING_FILES", NT_STATUS_TOO_MANY_PAGING_FILES }, - { "NT_STATUS_FILE_INVALID", NT_STATUS_FILE_INVALID }, - { "NT_STATUS_ALLOTTED_SPACE_EXCEEDED", NT_STATUS_ALLOTTED_SPACE_EXCEEDED }, - { "NT_STATUS_INSUFFICIENT_RESOURCES", NT_STATUS_INSUFFICIENT_RESOURCES }, - { "NT_STATUS_DFS_EXIT_PATH_FOUND", NT_STATUS_DFS_EXIT_PATH_FOUND }, - { "NT_STATUS_DEVICE_DATA_ERROR", NT_STATUS_DEVICE_DATA_ERROR }, - { "NT_STATUS_DEVICE_NOT_CONNECTED", NT_STATUS_DEVICE_NOT_CONNECTED }, - { "NT_STATUS_DEVICE_POWER_FAILURE", NT_STATUS_DEVICE_POWER_FAILURE }, - { "NT_STATUS_FREE_VM_NOT_AT_BASE", NT_STATUS_FREE_VM_NOT_AT_BASE }, - { "NT_STATUS_MEMORY_NOT_ALLOCATED", NT_STATUS_MEMORY_NOT_ALLOCATED }, - { "NT_STATUS_WORKING_SET_QUOTA", NT_STATUS_WORKING_SET_QUOTA }, - { "NT_STATUS_MEDIA_WRITE_PROTECTED", NT_STATUS_MEDIA_WRITE_PROTECTED }, - { "NT_STATUS_DEVICE_NOT_READY", NT_STATUS_DEVICE_NOT_READY }, - { "NT_STATUS_INVALID_GROUP_ATTRIBUTES", NT_STATUS_INVALID_GROUP_ATTRIBUTES }, - { "NT_STATUS_BAD_IMPERSONATION_LEVEL", NT_STATUS_BAD_IMPERSONATION_LEVEL }, - { "NT_STATUS_CANT_OPEN_ANONYMOUS", NT_STATUS_CANT_OPEN_ANONYMOUS }, - { "NT_STATUS_BAD_VALIDATION_CLASS", NT_STATUS_BAD_VALIDATION_CLASS }, - { "NT_STATUS_BAD_TOKEN_TYPE", NT_STATUS_BAD_TOKEN_TYPE }, - { "NT_STATUS_BAD_MASTER_BOOT_RECORD", NT_STATUS_BAD_MASTER_BOOT_RECORD }, - { "NT_STATUS_INSTRUCTION_MISALIGNMENT", NT_STATUS_INSTRUCTION_MISALIGNMENT }, - { "NT_STATUS_INSTANCE_NOT_AVAILABLE", NT_STATUS_INSTANCE_NOT_AVAILABLE }, - { "NT_STATUS_PIPE_NOT_AVAILABLE", NT_STATUS_PIPE_NOT_AVAILABLE }, - { "NT_STATUS_INVALID_PIPE_STATE", NT_STATUS_INVALID_PIPE_STATE }, - { "NT_STATUS_PIPE_BUSY", NT_STATUS_PIPE_BUSY }, - { "NT_STATUS_ILLEGAL_FUNCTION", NT_STATUS_ILLEGAL_FUNCTION }, - { "NT_STATUS_PIPE_DISCONNECTED", NT_STATUS_PIPE_DISCONNECTED }, - { "NT_STATUS_PIPE_CLOSING", NT_STATUS_PIPE_CLOSING }, - { "NT_STATUS_PIPE_CONNECTED", NT_STATUS_PIPE_CONNECTED }, - { "NT_STATUS_PIPE_LISTENING", NT_STATUS_PIPE_LISTENING }, - { "NT_STATUS_INVALID_READ_MODE", NT_STATUS_INVALID_READ_MODE }, - { "NT_STATUS_IO_TIMEOUT", NT_STATUS_IO_TIMEOUT }, - { "NT_STATUS_FILE_FORCED_CLOSED", NT_STATUS_FILE_FORCED_CLOSED }, - { "NT_STATUS_PROFILING_NOT_STARTED", NT_STATUS_PROFILING_NOT_STARTED }, - { "NT_STATUS_PROFILING_NOT_STOPPED", NT_STATUS_PROFILING_NOT_STOPPED }, - { "NT_STATUS_COULD_NOT_INTERPRET", NT_STATUS_COULD_NOT_INTERPRET }, - { "NT_STATUS_FILE_IS_A_DIRECTORY", NT_STATUS_FILE_IS_A_DIRECTORY }, - { "NT_STATUS_NOT_SUPPORTED", NT_STATUS_NOT_SUPPORTED }, - { "NT_STATUS_REMOTE_NOT_LISTENING", NT_STATUS_REMOTE_NOT_LISTENING }, - { "NT_STATUS_DUPLICATE_NAME", NT_STATUS_DUPLICATE_NAME }, - { "NT_STATUS_BAD_NETWORK_PATH", NT_STATUS_BAD_NETWORK_PATH }, - { "NT_STATUS_NETWORK_BUSY", NT_STATUS_NETWORK_BUSY }, - { "NT_STATUS_DEVICE_DOES_NOT_EXIST", NT_STATUS_DEVICE_DOES_NOT_EXIST }, - { "NT_STATUS_TOO_MANY_COMMANDS", NT_STATUS_TOO_MANY_COMMANDS }, - { "NT_STATUS_ADAPTER_HARDWARE_ERROR", NT_STATUS_ADAPTER_HARDWARE_ERROR }, - { "NT_STATUS_INVALID_NETWORK_RESPONSE", NT_STATUS_INVALID_NETWORK_RESPONSE }, - { "NT_STATUS_UNEXPECTED_NETWORK_ERROR", NT_STATUS_UNEXPECTED_NETWORK_ERROR }, - { "NT_STATUS_BAD_REMOTE_ADAPTER", NT_STATUS_BAD_REMOTE_ADAPTER }, - { "NT_STATUS_PRINT_QUEUE_FULL", NT_STATUS_PRINT_QUEUE_FULL }, - { "NT_STATUS_NO_SPOOL_SPACE", NT_STATUS_NO_SPOOL_SPACE }, - { "NT_STATUS_PRINT_CANCELLED", NT_STATUS_PRINT_CANCELLED }, - { "NT_STATUS_NETWORK_NAME_DELETED", NT_STATUS_NETWORK_NAME_DELETED }, - { "NT_STATUS_NETWORK_ACCESS_DENIED", NT_STATUS_NETWORK_ACCESS_DENIED }, - { "NT_STATUS_BAD_DEVICE_TYPE", NT_STATUS_BAD_DEVICE_TYPE }, - { "NT_STATUS_BAD_NETWORK_NAME", NT_STATUS_BAD_NETWORK_NAME }, - { "NT_STATUS_TOO_MANY_NAMES", NT_STATUS_TOO_MANY_NAMES }, - { "NT_STATUS_TOO_MANY_SESSIONS", NT_STATUS_TOO_MANY_SESSIONS }, - { "NT_STATUS_SHARING_PAUSED", NT_STATUS_SHARING_PAUSED }, - { "NT_STATUS_REQUEST_NOT_ACCEPTED", NT_STATUS_REQUEST_NOT_ACCEPTED }, - { "NT_STATUS_REDIRECTOR_PAUSED", NT_STATUS_REDIRECTOR_PAUSED }, - { "NT_STATUS_NET_WRITE_FAULT", NT_STATUS_NET_WRITE_FAULT }, - { "NT_STATUS_PROFILING_AT_LIMIT", NT_STATUS_PROFILING_AT_LIMIT }, - { "NT_STATUS_NOT_SAME_DEVICE", NT_STATUS_NOT_SAME_DEVICE }, - { "NT_STATUS_FILE_RENAMED", NT_STATUS_FILE_RENAMED }, - { "NT_STATUS_VIRTUAL_CIRCUIT_CLOSED", NT_STATUS_VIRTUAL_CIRCUIT_CLOSED }, - { "NT_STATUS_NO_SECURITY_ON_OBJECT", NT_STATUS_NO_SECURITY_ON_OBJECT }, - { "NT_STATUS_CANT_WAIT", NT_STATUS_CANT_WAIT }, - { "NT_STATUS_PIPE_EMPTY", NT_STATUS_PIPE_EMPTY }, - { "NT_STATUS_CANT_ACCESS_DOMAIN_INFO", NT_STATUS_CANT_ACCESS_DOMAIN_INFO }, - { "NT_STATUS_CANT_TERMINATE_SELF", NT_STATUS_CANT_TERMINATE_SELF }, - { "NT_STATUS_INVALID_SERVER_STATE", NT_STATUS_INVALID_SERVER_STATE }, - { "NT_STATUS_INVALID_DOMAIN_STATE", NT_STATUS_INVALID_DOMAIN_STATE }, - { "NT_STATUS_INVALID_DOMAIN_ROLE", NT_STATUS_INVALID_DOMAIN_ROLE }, - { "NT_STATUS_NO_SUCH_DOMAIN", NT_STATUS_NO_SUCH_DOMAIN }, - { "NT_STATUS_DOMAIN_EXISTS", NT_STATUS_DOMAIN_EXISTS }, - { "NT_STATUS_DOMAIN_LIMIT_EXCEEDED", NT_STATUS_DOMAIN_LIMIT_EXCEEDED }, - { "NT_STATUS_OPLOCK_NOT_GRANTED", NT_STATUS_OPLOCK_NOT_GRANTED }, - { "NT_STATUS_INVALID_OPLOCK_PROTOCOL", NT_STATUS_INVALID_OPLOCK_PROTOCOL }, - { "NT_STATUS_INTERNAL_DB_CORRUPTION", NT_STATUS_INTERNAL_DB_CORRUPTION }, - { "NT_STATUS_INTERNAL_ERROR", NT_STATUS_INTERNAL_ERROR }, - { "NT_STATUS_GENERIC_NOT_MAPPED", NT_STATUS_GENERIC_NOT_MAPPED }, - { "NT_STATUS_BAD_DESCRIPTOR_FORMAT", NT_STATUS_BAD_DESCRIPTOR_FORMAT }, - { "NT_STATUS_INVALID_USER_BUFFER", NT_STATUS_INVALID_USER_BUFFER }, - { "NT_STATUS_UNEXPECTED_IO_ERROR", NT_STATUS_UNEXPECTED_IO_ERROR }, - { "NT_STATUS_UNEXPECTED_MM_CREATE_ERR", NT_STATUS_UNEXPECTED_MM_CREATE_ERR }, - { "NT_STATUS_UNEXPECTED_MM_MAP_ERROR", NT_STATUS_UNEXPECTED_MM_MAP_ERROR }, - { "NT_STATUS_UNEXPECTED_MM_EXTEND_ERR", NT_STATUS_UNEXPECTED_MM_EXTEND_ERR }, - { "NT_STATUS_NOT_LOGON_PROCESS", NT_STATUS_NOT_LOGON_PROCESS }, - { "NT_STATUS_LOGON_SESSION_EXISTS", NT_STATUS_LOGON_SESSION_EXISTS }, - { "NT_STATUS_INVALID_PARAMETER_1", NT_STATUS_INVALID_PARAMETER_1 }, - { "NT_STATUS_INVALID_PARAMETER_2", NT_STATUS_INVALID_PARAMETER_2 }, - { "NT_STATUS_INVALID_PARAMETER_3", NT_STATUS_INVALID_PARAMETER_3 }, - { "NT_STATUS_INVALID_PARAMETER_4", NT_STATUS_INVALID_PARAMETER_4 }, - { "NT_STATUS_INVALID_PARAMETER_5", NT_STATUS_INVALID_PARAMETER_5 }, - { "NT_STATUS_INVALID_PARAMETER_6", NT_STATUS_INVALID_PARAMETER_6 }, - { "NT_STATUS_INVALID_PARAMETER_7", NT_STATUS_INVALID_PARAMETER_7 }, - { "NT_STATUS_INVALID_PARAMETER_8", NT_STATUS_INVALID_PARAMETER_8 }, - { "NT_STATUS_INVALID_PARAMETER_9", NT_STATUS_INVALID_PARAMETER_9 }, - { "NT_STATUS_INVALID_PARAMETER_10", NT_STATUS_INVALID_PARAMETER_10 }, - { "NT_STATUS_INVALID_PARAMETER_11", NT_STATUS_INVALID_PARAMETER_11 }, - { "NT_STATUS_INVALID_PARAMETER_12", NT_STATUS_INVALID_PARAMETER_12 }, - { "NT_STATUS_REDIRECTOR_NOT_STARTED", NT_STATUS_REDIRECTOR_NOT_STARTED }, - { "NT_STATUS_REDIRECTOR_STARTED", NT_STATUS_REDIRECTOR_STARTED }, - { "NT_STATUS_STACK_OVERFLOW", NT_STATUS_STACK_OVERFLOW }, - { "NT_STATUS_NO_SUCH_PACKAGE", NT_STATUS_NO_SUCH_PACKAGE }, - { "NT_STATUS_BAD_FUNCTION_TABLE", NT_STATUS_BAD_FUNCTION_TABLE }, - { "NT_STATUS_DIRECTORY_NOT_EMPTY", NT_STATUS_DIRECTORY_NOT_EMPTY }, - { "NT_STATUS_FILE_CORRUPT_ERROR", NT_STATUS_FILE_CORRUPT_ERROR }, - { "NT_STATUS_NOT_A_DIRECTORY", NT_STATUS_NOT_A_DIRECTORY }, - { "NT_STATUS_BAD_LOGON_SESSION_STATE", NT_STATUS_BAD_LOGON_SESSION_STATE }, - { "NT_STATUS_LOGON_SESSION_COLLISION", NT_STATUS_LOGON_SESSION_COLLISION }, - { "NT_STATUS_NAME_TOO_LONG", NT_STATUS_NAME_TOO_LONG }, - { "NT_STATUS_FILES_OPEN", NT_STATUS_FILES_OPEN }, - { "NT_STATUS_CONNECTION_IN_USE", NT_STATUS_CONNECTION_IN_USE }, - { "NT_STATUS_MESSAGE_NOT_FOUND", NT_STATUS_MESSAGE_NOT_FOUND }, - { "NT_STATUS_PROCESS_IS_TERMINATING", NT_STATUS_PROCESS_IS_TERMINATING }, - { "NT_STATUS_INVALID_LOGON_TYPE", NT_STATUS_INVALID_LOGON_TYPE }, - { "NT_STATUS_NO_GUID_TRANSLATION", NT_STATUS_NO_GUID_TRANSLATION }, - { "NT_STATUS_CANNOT_IMPERSONATE", NT_STATUS_CANNOT_IMPERSONATE }, - { "NT_STATUS_IMAGE_ALREADY_LOADED", NT_STATUS_IMAGE_ALREADY_LOADED }, - { "NT_STATUS_ABIOS_NOT_PRESENT", NT_STATUS_ABIOS_NOT_PRESENT }, - { "NT_STATUS_ABIOS_LID_NOT_EXIST", NT_STATUS_ABIOS_LID_NOT_EXIST }, - { "NT_STATUS_ABIOS_LID_ALREADY_OWNED", NT_STATUS_ABIOS_LID_ALREADY_OWNED }, - { "NT_STATUS_ABIOS_NOT_LID_OWNER", NT_STATUS_ABIOS_NOT_LID_OWNER }, - { "NT_STATUS_ABIOS_INVALID_COMMAND", NT_STATUS_ABIOS_INVALID_COMMAND }, - { "NT_STATUS_ABIOS_INVALID_LID", NT_STATUS_ABIOS_INVALID_LID }, - { "NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE", NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE }, - { "NT_STATUS_ABIOS_INVALID_SELECTOR", NT_STATUS_ABIOS_INVALID_SELECTOR }, - { "NT_STATUS_NO_LDT", NT_STATUS_NO_LDT }, - { "NT_STATUS_INVALID_LDT_SIZE", NT_STATUS_INVALID_LDT_SIZE }, - { "NT_STATUS_INVALID_LDT_OFFSET", NT_STATUS_INVALID_LDT_OFFSET }, - { "NT_STATUS_INVALID_LDT_DESCRIPTOR", NT_STATUS_INVALID_LDT_DESCRIPTOR }, - { "NT_STATUS_INVALID_IMAGE_NE_FORMAT", NT_STATUS_INVALID_IMAGE_NE_FORMAT }, - { "NT_STATUS_RXACT_INVALID_STATE", NT_STATUS_RXACT_INVALID_STATE }, - { "NT_STATUS_RXACT_COMMIT_FAILURE", NT_STATUS_RXACT_COMMIT_FAILURE }, - { "NT_STATUS_MAPPED_FILE_SIZE_ZERO", NT_STATUS_MAPPED_FILE_SIZE_ZERO }, - { "NT_STATUS_TOO_MANY_OPENED_FILES", NT_STATUS_TOO_MANY_OPENED_FILES }, - { "NT_STATUS_CANCELLED", NT_STATUS_CANCELLED }, - { "NT_STATUS_CANNOT_DELETE", NT_STATUS_CANNOT_DELETE }, - { "NT_STATUS_INVALID_COMPUTER_NAME", NT_STATUS_INVALID_COMPUTER_NAME }, - { "NT_STATUS_FILE_DELETED", NT_STATUS_FILE_DELETED }, - { "NT_STATUS_SPECIAL_ACCOUNT", NT_STATUS_SPECIAL_ACCOUNT }, - { "NT_STATUS_SPECIAL_GROUP", NT_STATUS_SPECIAL_GROUP }, - { "NT_STATUS_SPECIAL_USER", NT_STATUS_SPECIAL_USER }, - { "NT_STATUS_MEMBERS_PRIMARY_GROUP", NT_STATUS_MEMBERS_PRIMARY_GROUP }, - { "NT_STATUS_FILE_CLOSED", NT_STATUS_FILE_CLOSED }, - { "NT_STATUS_TOO_MANY_THREADS", NT_STATUS_TOO_MANY_THREADS }, - { "NT_STATUS_THREAD_NOT_IN_PROCESS", NT_STATUS_THREAD_NOT_IN_PROCESS }, - { "NT_STATUS_TOKEN_ALREADY_IN_USE", NT_STATUS_TOKEN_ALREADY_IN_USE }, - { "NT_STATUS_PAGEFILE_QUOTA_EXCEEDED", NT_STATUS_PAGEFILE_QUOTA_EXCEEDED }, - { "NT_STATUS_COMMITMENT_LIMIT", NT_STATUS_COMMITMENT_LIMIT }, - { "NT_STATUS_INVALID_IMAGE_LE_FORMAT", NT_STATUS_INVALID_IMAGE_LE_FORMAT }, - { "NT_STATUS_INVALID_IMAGE_NOT_MZ", NT_STATUS_INVALID_IMAGE_NOT_MZ }, - { "NT_STATUS_INVALID_IMAGE_PROTECT", NT_STATUS_INVALID_IMAGE_PROTECT }, - { "NT_STATUS_INVALID_IMAGE_WIN_16", NT_STATUS_INVALID_IMAGE_WIN_16 }, - { "NT_STATUS_LOGON_SERVER_CONFLICT", NT_STATUS_LOGON_SERVER_CONFLICT }, - { "NT_STATUS_TIME_DIFFERENCE_AT_DC", NT_STATUS_TIME_DIFFERENCE_AT_DC }, - { "NT_STATUS_SYNCHRONIZATION_REQUIRED", NT_STATUS_SYNCHRONIZATION_REQUIRED }, - { "NT_STATUS_DLL_NOT_FOUND", NT_STATUS_DLL_NOT_FOUND }, - { "NT_STATUS_OPEN_FAILED", NT_STATUS_OPEN_FAILED }, - { "NT_STATUS_IO_PRIVILEGE_FAILED", NT_STATUS_IO_PRIVILEGE_FAILED }, - { "NT_STATUS_ORDINAL_NOT_FOUND", NT_STATUS_ORDINAL_NOT_FOUND }, - { "NT_STATUS_ENTRYPOINT_NOT_FOUND", NT_STATUS_ENTRYPOINT_NOT_FOUND }, - { "NT_STATUS_CONTROL_C_EXIT", NT_STATUS_CONTROL_C_EXIT }, - { "NT_STATUS_LOCAL_DISCONNECT", NT_STATUS_LOCAL_DISCONNECT }, - { "NT_STATUS_REMOTE_DISCONNECT", NT_STATUS_REMOTE_DISCONNECT }, - { "NT_STATUS_REMOTE_RESOURCES", NT_STATUS_REMOTE_RESOURCES }, - { "NT_STATUS_LINK_FAILED", NT_STATUS_LINK_FAILED }, - { "NT_STATUS_LINK_TIMEOUT", NT_STATUS_LINK_TIMEOUT }, - { "NT_STATUS_INVALID_CONNECTION", NT_STATUS_INVALID_CONNECTION }, - { "NT_STATUS_INVALID_ADDRESS", NT_STATUS_INVALID_ADDRESS }, - { "NT_STATUS_DLL_INIT_FAILED", NT_STATUS_DLL_INIT_FAILED }, - { "NT_STATUS_MISSING_SYSTEMFILE", NT_STATUS_MISSING_SYSTEMFILE }, - { "NT_STATUS_UNHANDLED_EXCEPTION", NT_STATUS_UNHANDLED_EXCEPTION }, - { "NT_STATUS_APP_INIT_FAILURE", NT_STATUS_APP_INIT_FAILURE }, - { "NT_STATUS_PAGEFILE_CREATE_FAILED", NT_STATUS_PAGEFILE_CREATE_FAILED }, - { "NT_STATUS_NO_PAGEFILE", NT_STATUS_NO_PAGEFILE }, - { "NT_STATUS_INVALID_LEVEL", NT_STATUS_INVALID_LEVEL }, - { "NT_STATUS_WRONG_PASSWORD_CORE", NT_STATUS_WRONG_PASSWORD_CORE }, - { "NT_STATUS_ILLEGAL_FLOAT_CONTEXT", NT_STATUS_ILLEGAL_FLOAT_CONTEXT }, - { "NT_STATUS_PIPE_BROKEN", NT_STATUS_PIPE_BROKEN }, - { "NT_STATUS_REGISTRY_CORRUPT", NT_STATUS_REGISTRY_CORRUPT }, - { "NT_STATUS_REGISTRY_IO_FAILED", NT_STATUS_REGISTRY_IO_FAILED }, - { "NT_STATUS_NO_EVENT_PAIR", NT_STATUS_NO_EVENT_PAIR }, - { "NT_STATUS_UNRECOGNIZED_VOLUME", NT_STATUS_UNRECOGNIZED_VOLUME }, - { "NT_STATUS_SERIAL_NO_DEVICE_INITED", NT_STATUS_SERIAL_NO_DEVICE_INITED }, - { "NT_STATUS_NO_SUCH_ALIAS", NT_STATUS_NO_SUCH_ALIAS }, - { "NT_STATUS_MEMBER_NOT_IN_ALIAS", NT_STATUS_MEMBER_NOT_IN_ALIAS }, - { "NT_STATUS_MEMBER_IN_ALIAS", NT_STATUS_MEMBER_IN_ALIAS }, - { "NT_STATUS_ALIAS_EXISTS", NT_STATUS_ALIAS_EXISTS }, - { "NT_STATUS_LOGON_NOT_GRANTED", NT_STATUS_LOGON_NOT_GRANTED }, - { "NT_STATUS_TOO_MANY_SECRETS", NT_STATUS_TOO_MANY_SECRETS }, - { "NT_STATUS_SECRET_TOO_LONG", NT_STATUS_SECRET_TOO_LONG }, - { "NT_STATUS_INTERNAL_DB_ERROR", NT_STATUS_INTERNAL_DB_ERROR }, - { "NT_STATUS_FULLSCREEN_MODE", NT_STATUS_FULLSCREEN_MODE }, - { "NT_STATUS_TOO_MANY_CONTEXT_IDS", NT_STATUS_TOO_MANY_CONTEXT_IDS }, - { "NT_STATUS_LOGON_TYPE_NOT_GRANTED", NT_STATUS_LOGON_TYPE_NOT_GRANTED }, - { "NT_STATUS_NOT_REGISTRY_FILE", NT_STATUS_NOT_REGISTRY_FILE }, - { "NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED", NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED }, - { "NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR", NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR }, - { "NT_STATUS_FT_MISSING_MEMBER", NT_STATUS_FT_MISSING_MEMBER }, - { "NT_STATUS_ILL_FORMED_SERVICE_ENTRY", NT_STATUS_ILL_FORMED_SERVICE_ENTRY }, - { "NT_STATUS_ILLEGAL_CHARACTER", NT_STATUS_ILLEGAL_CHARACTER }, - { "NT_STATUS_UNMAPPABLE_CHARACTER", NT_STATUS_UNMAPPABLE_CHARACTER }, - { "NT_STATUS_UNDEFINED_CHARACTER", NT_STATUS_UNDEFINED_CHARACTER }, - { "NT_STATUS_FLOPPY_VOLUME", NT_STATUS_FLOPPY_VOLUME }, - { "NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND", NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND }, - { "NT_STATUS_FLOPPY_WRONG_CYLINDER", NT_STATUS_FLOPPY_WRONG_CYLINDER }, - { "NT_STATUS_FLOPPY_UNKNOWN_ERROR", NT_STATUS_FLOPPY_UNKNOWN_ERROR }, - { "NT_STATUS_FLOPPY_BAD_REGISTERS", NT_STATUS_FLOPPY_BAD_REGISTERS }, - { "NT_STATUS_DISK_RECALIBRATE_FAILED", NT_STATUS_DISK_RECALIBRATE_FAILED }, - { "NT_STATUS_DISK_OPERATION_FAILED", NT_STATUS_DISK_OPERATION_FAILED }, - { "NT_STATUS_DISK_RESET_FAILED", NT_STATUS_DISK_RESET_FAILED }, - { "NT_STATUS_SHARED_IRQ_BUSY", NT_STATUS_SHARED_IRQ_BUSY }, - { "NT_STATUS_FT_ORPHANING", NT_STATUS_FT_ORPHANING }, - { "NT_STATUS_PARTITION_FAILURE", NT_STATUS_PARTITION_FAILURE }, - { "NT_STATUS_INVALID_BLOCK_LENGTH", NT_STATUS_INVALID_BLOCK_LENGTH }, - { "NT_STATUS_DEVICE_NOT_PARTITIONED", NT_STATUS_DEVICE_NOT_PARTITIONED }, - { "NT_STATUS_UNABLE_TO_LOCK_MEDIA", NT_STATUS_UNABLE_TO_LOCK_MEDIA }, - { "NT_STATUS_UNABLE_TO_UNLOAD_MEDIA", NT_STATUS_UNABLE_TO_UNLOAD_MEDIA }, - { "NT_STATUS_EOM_OVERFLOW", NT_STATUS_EOM_OVERFLOW }, - { "NT_STATUS_NO_MEDIA", NT_STATUS_NO_MEDIA }, - { "NT_STATUS_NO_SUCH_MEMBER", NT_STATUS_NO_SUCH_MEMBER }, - { "NT_STATUS_INVALID_MEMBER", NT_STATUS_INVALID_MEMBER }, - { "NT_STATUS_KEY_DELETED", NT_STATUS_KEY_DELETED }, - { "NT_STATUS_NO_LOG_SPACE", NT_STATUS_NO_LOG_SPACE }, - { "NT_STATUS_TOO_MANY_SIDS", NT_STATUS_TOO_MANY_SIDS }, - { "NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED", NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED }, - { "NT_STATUS_KEY_HAS_CHILDREN", NT_STATUS_KEY_HAS_CHILDREN }, - { "NT_STATUS_CHILD_MUST_BE_VOLATILE", NT_STATUS_CHILD_MUST_BE_VOLATILE }, - { "NT_STATUS_DEVICE_CONFIGURATION_ERROR", NT_STATUS_DEVICE_CONFIGURATION_ERROR }, - { "NT_STATUS_DRIVER_INTERNAL_ERROR", NT_STATUS_DRIVER_INTERNAL_ERROR }, - { "NT_STATUS_INVALID_DEVICE_STATE", NT_STATUS_INVALID_DEVICE_STATE }, - { "NT_STATUS_IO_DEVICE_ERROR", NT_STATUS_IO_DEVICE_ERROR }, - { "NT_STATUS_DEVICE_PROTOCOL_ERROR", NT_STATUS_DEVICE_PROTOCOL_ERROR }, - { "NT_STATUS_BACKUP_CONTROLLER", NT_STATUS_BACKUP_CONTROLLER }, - { "NT_STATUS_LOG_FILE_FULL", NT_STATUS_LOG_FILE_FULL }, - { "NT_STATUS_TOO_LATE", NT_STATUS_TOO_LATE }, - { "NT_STATUS_NO_TRUST_LSA_SECRET", NT_STATUS_NO_TRUST_LSA_SECRET }, - { "NT_STATUS_NO_TRUST_SAM_ACCOUNT", NT_STATUS_NO_TRUST_SAM_ACCOUNT }, - { "NT_STATUS_TRUSTED_DOMAIN_FAILURE", NT_STATUS_TRUSTED_DOMAIN_FAILURE }, - { "NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE", NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE }, - { "NT_STATUS_EVENTLOG_FILE_CORRUPT", NT_STATUS_EVENTLOG_FILE_CORRUPT }, - { "NT_STATUS_EVENTLOG_CANT_START", NT_STATUS_EVENTLOG_CANT_START }, - { "NT_STATUS_TRUST_FAILURE", NT_STATUS_TRUST_FAILURE }, - { "NT_STATUS_MUTANT_LIMIT_EXCEEDED", NT_STATUS_MUTANT_LIMIT_EXCEEDED }, - { "NT_STATUS_NETLOGON_NOT_STARTED", NT_STATUS_NETLOGON_NOT_STARTED }, - { "NT_STATUS_ACCOUNT_EXPIRED", NT_STATUS_ACCOUNT_EXPIRED }, - { "NT_STATUS_POSSIBLE_DEADLOCK", NT_STATUS_POSSIBLE_DEADLOCK }, - { "NT_STATUS_NETWORK_CREDENTIAL_CONFLICT", NT_STATUS_NETWORK_CREDENTIAL_CONFLICT }, - { "NT_STATUS_REMOTE_SESSION_LIMIT", NT_STATUS_REMOTE_SESSION_LIMIT }, - { "NT_STATUS_EVENTLOG_FILE_CHANGED", NT_STATUS_EVENTLOG_FILE_CHANGED }, - { "NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT", NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT }, - { "NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT", NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT }, - { "NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT", NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT }, - { "NT_STATUS_DOMAIN_TRUST_INCONSISTENT", NT_STATUS_DOMAIN_TRUST_INCONSISTENT }, - { "NT_STATUS_FS_DRIVER_REQUIRED", NT_STATUS_FS_DRIVER_REQUIRED }, - { "NT_STATUS_NO_USER_SESSION_KEY", NT_STATUS_NO_USER_SESSION_KEY }, - { "NT_STATUS_USER_SESSION_DELETED", NT_STATUS_USER_SESSION_DELETED }, - { "NT_STATUS_RESOURCE_LANG_NOT_FOUND", NT_STATUS_RESOURCE_LANG_NOT_FOUND }, - { "NT_STATUS_INSUFF_SERVER_RESOURCES", NT_STATUS_INSUFF_SERVER_RESOURCES }, - { "NT_STATUS_INVALID_BUFFER_SIZE", NT_STATUS_INVALID_BUFFER_SIZE }, - { "NT_STATUS_INVALID_ADDRESS_COMPONENT", NT_STATUS_INVALID_ADDRESS_COMPONENT }, - { "NT_STATUS_INVALID_ADDRESS_WILDCARD", NT_STATUS_INVALID_ADDRESS_WILDCARD }, - { "NT_STATUS_TOO_MANY_ADDRESSES", NT_STATUS_TOO_MANY_ADDRESSES }, - { "NT_STATUS_ADDRESS_ALREADY_EXISTS", NT_STATUS_ADDRESS_ALREADY_EXISTS }, - { "NT_STATUS_ADDRESS_CLOSED", NT_STATUS_ADDRESS_CLOSED }, - { "NT_STATUS_CONNECTION_DISCONNECTED", NT_STATUS_CONNECTION_DISCONNECTED }, - { "NT_STATUS_CONNECTION_RESET", NT_STATUS_CONNECTION_RESET }, - { "NT_STATUS_TOO_MANY_NODES", NT_STATUS_TOO_MANY_NODES }, - { "NT_STATUS_TRANSACTION_ABORTED", NT_STATUS_TRANSACTION_ABORTED }, - { "NT_STATUS_TRANSACTION_TIMED_OUT", NT_STATUS_TRANSACTION_TIMED_OUT }, - { "NT_STATUS_TRANSACTION_NO_RELEASE", NT_STATUS_TRANSACTION_NO_RELEASE }, - { "NT_STATUS_TRANSACTION_NO_MATCH", NT_STATUS_TRANSACTION_NO_MATCH }, - { "NT_STATUS_TRANSACTION_RESPONDED", NT_STATUS_TRANSACTION_RESPONDED }, - { "NT_STATUS_TRANSACTION_INVALID_ID", NT_STATUS_TRANSACTION_INVALID_ID }, - { "NT_STATUS_TRANSACTION_INVALID_TYPE", NT_STATUS_TRANSACTION_INVALID_TYPE }, - { "NT_STATUS_NOT_SERVER_SESSION", NT_STATUS_NOT_SERVER_SESSION }, - { "NT_STATUS_NOT_CLIENT_SESSION", NT_STATUS_NOT_CLIENT_SESSION }, - { "NT_STATUS_CANNOT_LOAD_REGISTRY_FILE", NT_STATUS_CANNOT_LOAD_REGISTRY_FILE }, - { "NT_STATUS_DEBUG_ATTACH_FAILED", NT_STATUS_DEBUG_ATTACH_FAILED }, - { "NT_STATUS_SYSTEM_PROCESS_TERMINATED", NT_STATUS_SYSTEM_PROCESS_TERMINATED }, - { "NT_STATUS_DATA_NOT_ACCEPTED", NT_STATUS_DATA_NOT_ACCEPTED }, - { "NT_STATUS_NO_BROWSER_SERVERS_FOUND", NT_STATUS_NO_BROWSER_SERVERS_FOUND }, - { "NT_STATUS_VDM_HARD_ERROR", NT_STATUS_VDM_HARD_ERROR }, - { "NT_STATUS_DRIVER_CANCEL_TIMEOUT", NT_STATUS_DRIVER_CANCEL_TIMEOUT }, - { "NT_STATUS_REPLY_MESSAGE_MISMATCH", NT_STATUS_REPLY_MESSAGE_MISMATCH }, - { "NT_STATUS_MAPPED_ALIGNMENT", NT_STATUS_MAPPED_ALIGNMENT }, - { "NT_STATUS_IMAGE_CHECKSUM_MISMATCH", NT_STATUS_IMAGE_CHECKSUM_MISMATCH }, - { "NT_STATUS_LOST_WRITEBEHIND_DATA", NT_STATUS_LOST_WRITEBEHIND_DATA }, - { "NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID", NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID }, - { "NT_STATUS_PASSWORD_MUST_CHANGE", NT_STATUS_PASSWORD_MUST_CHANGE }, - { "NT_STATUS_NOT_FOUND", NT_STATUS_NOT_FOUND }, - { "NT_STATUS_NOT_TINY_STREAM", NT_STATUS_NOT_TINY_STREAM }, - { "NT_STATUS_RECOVERY_FAILURE", NT_STATUS_RECOVERY_FAILURE }, - { "NT_STATUS_STACK_OVERFLOW_READ", NT_STATUS_STACK_OVERFLOW_READ }, - { "NT_STATUS_FAIL_CHECK", NT_STATUS_FAIL_CHECK }, - { "NT_STATUS_DUPLICATE_OBJECTID", NT_STATUS_DUPLICATE_OBJECTID }, - { "NT_STATUS_OBJECTID_EXISTS", NT_STATUS_OBJECTID_EXISTS }, - { "NT_STATUS_CONVERT_TO_LARGE", NT_STATUS_CONVERT_TO_LARGE }, - { "NT_STATUS_RETRY", NT_STATUS_RETRY }, - { "NT_STATUS_FOUND_OUT_OF_SCOPE", NT_STATUS_FOUND_OUT_OF_SCOPE }, - { "NT_STATUS_ALLOCATE_BUCKET", NT_STATUS_ALLOCATE_BUCKET }, - { "NT_STATUS_PROPSET_NOT_FOUND", NT_STATUS_PROPSET_NOT_FOUND }, - { "NT_STATUS_MARSHALL_OVERFLOW", NT_STATUS_MARSHALL_OVERFLOW }, - { "NT_STATUS_INVALID_VARIANT", NT_STATUS_INVALID_VARIANT }, - { "NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND", NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND }, - { "NT_STATUS_ACCOUNT_LOCKED_OUT", NT_STATUS_ACCOUNT_LOCKED_OUT }, - { "NT_STATUS_HANDLE_NOT_CLOSABLE", NT_STATUS_HANDLE_NOT_CLOSABLE }, - { "NT_STATUS_CONNECTION_REFUSED", NT_STATUS_CONNECTION_REFUSED }, - { "NT_STATUS_GRACEFUL_DISCONNECT", NT_STATUS_GRACEFUL_DISCONNECT }, - { "NT_STATUS_ADDRESS_ALREADY_ASSOCIATED", NT_STATUS_ADDRESS_ALREADY_ASSOCIATED }, - { "NT_STATUS_ADDRESS_NOT_ASSOCIATED", NT_STATUS_ADDRESS_NOT_ASSOCIATED }, - { "NT_STATUS_CONNECTION_INVALID", NT_STATUS_CONNECTION_INVALID }, - { "NT_STATUS_CONNECTION_ACTIVE", NT_STATUS_CONNECTION_ACTIVE }, - { "NT_STATUS_NETWORK_UNREACHABLE", NT_STATUS_NETWORK_UNREACHABLE }, - { "NT_STATUS_HOST_UNREACHABLE", NT_STATUS_HOST_UNREACHABLE }, - { "NT_STATUS_PROTOCOL_UNREACHABLE", NT_STATUS_PROTOCOL_UNREACHABLE }, - { "NT_STATUS_PORT_UNREACHABLE", NT_STATUS_PORT_UNREACHABLE }, - { "NT_STATUS_REQUEST_ABORTED", NT_STATUS_REQUEST_ABORTED }, - { "NT_STATUS_CONNECTION_ABORTED", NT_STATUS_CONNECTION_ABORTED }, - { "NT_STATUS_BAD_COMPRESSION_BUFFER", NT_STATUS_BAD_COMPRESSION_BUFFER }, - { "NT_STATUS_USER_MAPPED_FILE", NT_STATUS_USER_MAPPED_FILE }, - { "NT_STATUS_AUDIT_FAILED", NT_STATUS_AUDIT_FAILED }, - { "NT_STATUS_TIMER_RESOLUTION_NOT_SET", NT_STATUS_TIMER_RESOLUTION_NOT_SET }, - { "NT_STATUS_CONNECTION_COUNT_LIMIT", NT_STATUS_CONNECTION_COUNT_LIMIT }, - { "NT_STATUS_LOGIN_TIME_RESTRICTION", NT_STATUS_LOGIN_TIME_RESTRICTION }, - { "NT_STATUS_LOGIN_WKSTA_RESTRICTION", NT_STATUS_LOGIN_WKSTA_RESTRICTION }, - { "NT_STATUS_IMAGE_MP_UP_MISMATCH", NT_STATUS_IMAGE_MP_UP_MISMATCH }, - { "NT_STATUS_INSUFFICIENT_LOGON_INFO", NT_STATUS_INSUFFICIENT_LOGON_INFO }, - { "NT_STATUS_BAD_DLL_ENTRYPOINT", NT_STATUS_BAD_DLL_ENTRYPOINT }, - { "NT_STATUS_BAD_SERVICE_ENTRYPOINT", NT_STATUS_BAD_SERVICE_ENTRYPOINT }, - { "NT_STATUS_LPC_REPLY_LOST", NT_STATUS_LPC_REPLY_LOST }, - { "NT_STATUS_IP_ADDRESS_CONFLICT1", NT_STATUS_IP_ADDRESS_CONFLICT1 }, - { "NT_STATUS_IP_ADDRESS_CONFLICT2", NT_STATUS_IP_ADDRESS_CONFLICT2 }, - { "NT_STATUS_REGISTRY_QUOTA_LIMIT", NT_STATUS_REGISTRY_QUOTA_LIMIT }, - { "NT_STATUS_PATH_NOT_COVERED", NT_STATUS_PATH_NOT_COVERED }, - { "NT_STATUS_NO_CALLBACK_ACTIVE", NT_STATUS_NO_CALLBACK_ACTIVE }, - { "NT_STATUS_LICENSE_QUOTA_EXCEEDED", NT_STATUS_LICENSE_QUOTA_EXCEEDED }, - { "NT_STATUS_PWD_TOO_SHORT", NT_STATUS_PWD_TOO_SHORT }, - { "NT_STATUS_PWD_TOO_RECENT", NT_STATUS_PWD_TOO_RECENT }, - { "NT_STATUS_PWD_HISTORY_CONFLICT", NT_STATUS_PWD_HISTORY_CONFLICT }, - { "NT_STATUS_PLUGPLAY_NO_DEVICE", NT_STATUS_PLUGPLAY_NO_DEVICE }, - { "NT_STATUS_UNSUPPORTED_COMPRESSION", NT_STATUS_UNSUPPORTED_COMPRESSION }, - { "NT_STATUS_INVALID_HW_PROFILE", NT_STATUS_INVALID_HW_PROFILE }, - { "NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH", NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH }, - { "NT_STATUS_DRIVER_ORDINAL_NOT_FOUND", NT_STATUS_DRIVER_ORDINAL_NOT_FOUND }, - { "NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND", NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND }, - { "NT_STATUS_RESOURCE_NOT_OWNED", NT_STATUS_RESOURCE_NOT_OWNED }, - { "NT_STATUS_TOO_MANY_LINKS", NT_STATUS_TOO_MANY_LINKS }, - { "NT_STATUS_QUOTA_LIST_INCONSISTENT", NT_STATUS_QUOTA_LIST_INCONSISTENT }, - { "NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE }, - { "NT_STATUS_DS_NO_MORE_RIDS", NT_STATUS_DS_NO_MORE_RIDS }, - { "NT_STATUS_NOT_A_REPARSE_POINT", NT_STATUS_NOT_A_REPARSE_POINT }, - { "NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES }, - { "NT_STATUS_RPC_PROTSEQ_NOT_SUPPORTED", NT_STATUS_RPC_PROTSEQ_NOT_SUPPORTED }, - { "NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX", NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX }, - { "NT_STATUS_RPC_UNKNOWN_IF", NT_STATUS_RPC_UNKNOWN_IF }, - { "NT_STATUS_RPC_CALL_FAILED", NT_STATUS_RPC_CALL_FAILED }, - { "NT_STATUS_RPC_PROTOCOL_ERROR", NT_STATUS_RPC_PROTOCOL_ERROR }, - { "NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE", NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE }, - { "NT_STATUS_RPC_CANNOT_SUPPORT", NT_STATUS_RPC_CANNOT_SUPPORT }, - { "NT_STATUS_RPC_SEC_PKG_ERROR", NT_STATUS_RPC_SEC_PKG_ERROR }, - { "NT_STATUS_RPC_SS_CONTEXT_MISMATCH", NT_STATUS_RPC_SS_CONTEXT_MISMATCH }, - { "NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE", NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE }, - { "NT_STATUS_RPC_BAD_STUB_DATA", NT_STATUS_RPC_BAD_STUB_DATA }, - { "NT_STATUS_RPC_INVALID_PIPE_OBJECT", NT_STATUS_RPC_INVALID_PIPE_OBJECT }, - { "NT_STATUS_RPC_INVALID_PIPE_OPERATION", NT_STATUS_RPC_INVALID_PIPE_OPERATION }, - { "NT_STATUS_RPC_WRONG_PIPE_VERSION", NT_STATUS_RPC_WRONG_PIPE_VERSION }, - { "NT_STATUS_RPC_PIPE_CLOSED", NT_STATUS_RPC_PIPE_CLOSED }, - { "NT_STATUS_RPC_PIPE_DISCIPLINE_ERROR", NT_STATUS_RPC_PIPE_DISCIPLINE_ERROR }, - { "NT_STATUS_RPC_PIPE_EMPTY", NT_STATUS_RPC_PIPE_EMPTY }, - { "NT_STATUS_CURRENT_DOMAIN_NOT_ALLOWED", NT_STATUS_CURRENT_DOMAIN_NOT_ALLOWED }, - { "NT_STATUS_OBJECTID_NOT_FOUND", NT_STATUS_OBJECTID_NOT_FOUND }, - { "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED }, - { "NT_STATUS_NO_S4U_PROT_SUPPORT", NT_STATUS_NO_S4U_PROT_SUPPORT }, - { "NT_STATUS_CROSSREALM_DELEGATION_FAILURE", NT_STATUS_CROSSREALM_DELEGATION_FAILURE }, - { "NT_STATUS_INVALID_LOCK_RANGE", NT_STATUS_INVALID_LOCK_RANGE }, - { "NT_STATUS_ERROR_DS_OBJ_STRING_NAME_EXISTS", NT_STATUS_ERROR_DS_OBJ_STRING_NAME_EXISTS }, - { "NT_STATUS_ERROR_DS_INCOMPATIBLE_VERSION", NT_STATUS_ERROR_DS_INCOMPATIBLE_VERSION }, - { "STATUS_MORE_ENTRIES", STATUS_MORE_ENTRIES }, - { "STATUS_SOME_UNMAPPED", STATUS_SOME_UNMAPPED }, - { "STATUS_NOTIFY_CLEANUP", STATUS_NOTIFY_CLEANUP }, - { "STATUS_NOTIFY_ENUM_DIR", STATUS_NOTIFY_ENUM_DIR }, - - DOS_CODE(ERRDOS, ERRsuccess), - DOS_CODE(ERRDOS, ERRbadfunc), - DOS_CODE(ERRDOS, ERRbadfile), - DOS_CODE(ERRDOS, ERRbadpath), - DOS_CODE(ERRDOS, ERRnofids), - DOS_CODE(ERRDOS, ERRnoaccess), - DOS_CODE(ERRDOS, ERRbadfid), - DOS_CODE(ERRDOS, ERRbadmcb), - DOS_CODE(ERRDOS, ERRnomem), - DOS_CODE(ERRDOS, ERRbadmem), - DOS_CODE(ERRDOS, ERRbadenv), - DOS_CODE(ERRDOS, ERRbadaccess), - DOS_CODE(ERRDOS, ERRbaddata), - DOS_CODE(ERRDOS, ERRres), - DOS_CODE(ERRDOS, ERRbaddrive), - DOS_CODE(ERRDOS, ERRremcd), - DOS_CODE(ERRDOS, ERRdiffdevice), - DOS_CODE(ERRDOS, ERRnofiles), - DOS_CODE(ERRDOS, ERRgeneral), - DOS_CODE(ERRDOS, ERRbadshare), - DOS_CODE(ERRDOS, ERRlock), - DOS_CODE(ERRDOS, ERRunsup), - DOS_CODE(ERRDOS, ERRnetnamedel), - DOS_CODE(ERRDOS, ERRnosuchshare), - DOS_CODE(ERRDOS, ERRfilexists), - DOS_CODE(ERRDOS, ERRinvalidparam), - DOS_CODE(ERRDOS, ERRcannotopen), - DOS_CODE(ERRDOS, ERRinsufficientbuffer), - DOS_CODE(ERRDOS, ERRinvalidname), - DOS_CODE(ERRDOS, ERRunknownlevel), - DOS_CODE(ERRDOS, ERRnotlocked), - DOS_CODE(ERRDOS, ERRinvalidpath), - DOS_CODE(ERRDOS, ERRcancelviolation), - DOS_CODE(ERRDOS, ERRnoatomiclocks), - DOS_CODE(ERRDOS, ERRrename), - DOS_CODE(ERRDOS, ERRbadpipe), - DOS_CODE(ERRDOS, ERRpipebusy), - DOS_CODE(ERRDOS, ERRpipeclosing), - DOS_CODE(ERRDOS, ERRnotconnected), - DOS_CODE(ERRDOS, ERRmoredata), - DOS_CODE(ERRDOS, ERRnomoreitems), - DOS_CODE(ERRDOS, ERRbaddirectory), - DOS_CODE(ERRDOS, ERReasnotsupported), - DOS_CODE(ERRDOS, ERRlogonfailure), - DOS_CODE(ERRDOS, ERRbuftoosmall), - DOS_CODE(ERRDOS, ERRunknownipc), - DOS_CODE(ERRDOS, ERRnosuchprintjob), - DOS_CODE(ERRDOS, ERRinvgroup), - DOS_CODE(ERRDOS, ERRnoipc), - DOS_CODE(ERRDOS, ERRdriveralreadyinstalled), - DOS_CODE(ERRDOS, ERRunknownprinterport), - DOS_CODE(ERRDOS, ERRunknownprinterdriver), - DOS_CODE(ERRDOS, ERRunknownprintprocessor), - DOS_CODE(ERRDOS, ERRinvalidseparatorfile), - DOS_CODE(ERRDOS, ERRinvalidjobpriority), - DOS_CODE(ERRDOS, ERRinvalidprintername), - DOS_CODE(ERRDOS, ERRprinteralreadyexists), - DOS_CODE(ERRDOS, ERRinvalidprintercommand), - DOS_CODE(ERRDOS, ERRinvaliddatatype), - DOS_CODE(ERRDOS, ERRinvalidenvironment), - DOS_CODE(ERRDOS, ERRunknownprintmonitor), - DOS_CODE(ERRDOS, ERRprinterdriverinuse), - DOS_CODE(ERRDOS, ERRspoolfilenotfound), - DOS_CODE(ERRDOS, ERRnostartdoc), - DOS_CODE(ERRDOS, ERRnoaddjob), - DOS_CODE(ERRDOS, ERRprintprocessoralreadyinstalled), - DOS_CODE(ERRDOS, ERRprintmonitoralreadyinstalled), - DOS_CODE(ERRDOS, ERRinvalidprintmonitor), - DOS_CODE(ERRDOS, ERRprintmonitorinuse), - DOS_CODE(ERRDOS, ERRprinterhasjobsqueued), - DOS_CODE(ERRDOS, ERReainconsistent), - - DOS_CODE(ERRSRV, ERRerror), - DOS_CODE(ERRSRV, ERRbadpw), - DOS_CODE(ERRSRV, ERRbadtype), - DOS_CODE(ERRSRV, ERRaccess), - DOS_CODE(ERRSRV, ERRinvnid), - DOS_CODE(ERRSRV, ERRinvnetname), - DOS_CODE(ERRSRV, ERRinvdevice), - DOS_CODE(ERRSRV, ERRqfull), - DOS_CODE(ERRSRV, ERRqtoobig), - DOS_CODE(ERRSRV, ERRinvpfid), - DOS_CODE(ERRSRV, ERRsmbcmd), - DOS_CODE(ERRSRV, ERRsrverror), - DOS_CODE(ERRSRV, ERRfilespecs), - DOS_CODE(ERRSRV, ERRbadlink), - DOS_CODE(ERRSRV, ERRbadpermits), - DOS_CODE(ERRSRV, ERRbadpid), - DOS_CODE(ERRSRV, ERRsetattrmode), - DOS_CODE(ERRSRV, ERRpaused), - DOS_CODE(ERRSRV, ERRmsgoff), - DOS_CODE(ERRSRV, ERRnoroom), - DOS_CODE(ERRSRV, ERRrmuns), - DOS_CODE(ERRSRV, ERRtimeout), - DOS_CODE(ERRSRV, ERRnoresource), - DOS_CODE(ERRSRV, ERRtoomanyuids), - DOS_CODE(ERRSRV, ERRbaduid), - DOS_CODE(ERRSRV, ERRuseMPX), - DOS_CODE(ERRSRV, ERRuseSTD), - DOS_CODE(ERRSRV, ERRcontMPX), - DOS_CODE(ERRSRV, ERRnosupport), - DOS_CODE(ERRSRV, ERRunknownsmb), - - DOS_CODE(ERRHRD, ERRnowrite), - DOS_CODE(ERRHRD, ERRbadunit), - DOS_CODE(ERRHRD, ERRnotready), - DOS_CODE(ERRHRD, ERRbadcmd), - DOS_CODE(ERRHRD, ERRdata), - DOS_CODE(ERRHRD, ERRbadreq), - DOS_CODE(ERRHRD, ERRseek), - DOS_CODE(ERRHRD, ERRbadmedia), - DOS_CODE(ERRHRD, ERRbadsector), - DOS_CODE(ERRHRD, ERRnopaper), - DOS_CODE(ERRHRD, ERRwrite), - DOS_CODE(ERRHRD, ERRread), - DOS_CODE(ERRHRD, ERRgeneral), - DOS_CODE(ERRHRD, ERRwrongdisk), - DOS_CODE(ERRHRD, ERRFCBunavail), - DOS_CODE(ERRHRD, ERRsharebufexc), - DOS_CODE(ERRHRD, ERRdiskfull), - - LDAP_CODE(LDAP_SUCCESS), - LDAP_CODE(LDAP_OPERATIONS_ERROR), - LDAP_CODE(LDAP_PROTOCOL_ERROR), - LDAP_CODE(LDAP_TIME_LIMIT_EXCEEDED), - LDAP_CODE(LDAP_SIZE_LIMIT_EXCEEDED), - LDAP_CODE(LDAP_COMPARE_FALSE), - LDAP_CODE(LDAP_COMPARE_TRUE), - LDAP_CODE(LDAP_AUTH_METHOD_NOT_SUPPORTED), - LDAP_CODE(LDAP_STRONG_AUTH_REQUIRED), - LDAP_CODE(LDAP_REFERRAL), - LDAP_CODE(LDAP_ADMIN_LIMIT_EXCEEDED), - LDAP_CODE(LDAP_UNAVAILABLE_CRITICAL_EXTENSION), - LDAP_CODE(LDAP_CONFIDENTIALITY_REQUIRED), - LDAP_CODE(LDAP_SASL_BIND_IN_PROGRESS), - LDAP_CODE(LDAP_NO_SUCH_ATTRIBUTE), - LDAP_CODE(LDAP_UNDEFINED_ATTRIBUTE_TYPE), - LDAP_CODE(LDAP_INAPPROPRIATE_MATCHING), - LDAP_CODE(LDAP_CONSTRAINT_VIOLATION), - LDAP_CODE(LDAP_ATTRIBUTE_OR_VALUE_EXISTS), - LDAP_CODE(LDAP_INVALID_ATTRIBUTE_SYNTAX), - LDAP_CODE(LDAP_NO_SUCH_OBJECT), - LDAP_CODE(LDAP_ALIAS_PROBLEM), - LDAP_CODE(LDAP_INVALID_DN_SYNTAX), - LDAP_CODE(LDAP_ALIAS_DEREFERENCING_PROBLEM), - LDAP_CODE(LDAP_INAPPROPRIATE_AUTHENTICATION), - LDAP_CODE(LDAP_INVALID_CREDENTIALS), - LDAP_CODE(LDAP_INSUFFICIENT_ACCESS_RIGHTS), - LDAP_CODE(LDAP_BUSY), - LDAP_CODE(LDAP_UNAVAILABLE), - LDAP_CODE(LDAP_UNWILLING_TO_PERFORM), - LDAP_CODE(LDAP_LOOP_DETECT), - LDAP_CODE(LDAP_NAMING_VIOLATION), - LDAP_CODE(LDAP_OBJECT_CLASS_VIOLATION), - LDAP_CODE(LDAP_NOT_ALLOWED_ON_NON_LEAF), - LDAP_CODE(LDAP_NOT_ALLOWED_ON_RDN), - LDAP_CODE(LDAP_ENTRY_ALREADY_EXISTS), - LDAP_CODE(LDAP_OBJECT_CLASS_MODS_PROHIBITED), - LDAP_CODE(LDAP_AFFECTS_MULTIPLE_DSAS), - LDAP_CODE(LDAP_OTHER), - - { NULL, NT_STATUS(0) } -}; - -/* These need sorting..... */ - -static const nt_err_code_struct nt_err_desc[] = -{ - { N_("Success"), NT_STATUS_OK }, - { N_("Undetermined error"), NT_STATUS_UNSUCCESSFUL }, - { N_("Access denied"), NT_STATUS_ACCESS_DENIED }, - { N_("Account locked out"), NT_STATUS_ACCOUNT_LOCKED_OUT }, - { N_("Must change password"), NT_STATUS_PASSWORD_MUST_CHANGE }, - { N_("Password is too short"), NT_STATUS_PWD_TOO_SHORT }, - { N_("Password is too recent"), NT_STATUS_PWD_TOO_RECENT }, - { N_("Password history conflict"), NT_STATUS_PWD_HISTORY_CONFLICT }, - { N_("No logon servers"), NT_STATUS_NO_LOGON_SERVERS }, - { N_("Improperly formed account name"), NT_STATUS_INVALID_ACCOUNT_NAME }, - { N_("User exists"), NT_STATUS_USER_EXISTS }, - { N_("No such user"), NT_STATUS_NO_SUCH_USER }, - { N_("Group exists"), NT_STATUS_GROUP_EXISTS }, - { N_("No such group"), NT_STATUS_NO_SUCH_GROUP }, - { N_("Member not in group"), NT_STATUS_MEMBER_NOT_IN_GROUP }, - { N_("Wrong Password"), NT_STATUS_WRONG_PASSWORD }, - { N_("Ill formed password"), NT_STATUS_ILL_FORMED_PASSWORD }, - { N_("Password restriction"), NT_STATUS_PASSWORD_RESTRICTION }, - { N_("Logon failure"), NT_STATUS_LOGON_FAILURE }, - { N_("Account restriction"), NT_STATUS_ACCOUNT_RESTRICTION }, - { N_("Invalid logon hours"), NT_STATUS_INVALID_LOGON_HOURS }, - { N_("Invalid workstation"), NT_STATUS_INVALID_WORKSTATION }, - { N_("Password expired"), NT_STATUS_PASSWORD_EXPIRED }, - { N_("Account disabled"), NT_STATUS_ACCOUNT_DISABLED }, - { N_("Unexpected information received"), NT_STATUS_INVALID_PARAMETER }, - { N_("Memory allocation error"), NT_STATUS_NO_MEMORY }, - { N_("No domain controllers located"), NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND }, - { N_("Account locked out"), NT_STATUS_ACCOUNT_LOCKED_OUT }, - { N_("Named pipe not available"), NT_STATUS_PIPE_NOT_AVAILABLE }, - { N_("Not implemented"), NT_STATUS_NOT_IMPLEMENTED }, - { N_("Invalid information class"), NT_STATUS_INVALID_INFO_CLASS }, - { N_("Information length mismatch"), NT_STATUS_INFO_LENGTH_MISMATCH }, - { N_("Access violation"), NT_STATUS_ACCESS_VIOLATION }, - { N_("Invalid handle"), NT_STATUS_INVALID_HANDLE }, - { N_("Invalid parameter"), NT_STATUS_INVALID_PARAMETER }, - { N_("No memory"), NT_STATUS_NO_MEMORY }, - { N_("Buffer too small"), NT_STATUS_BUFFER_TOO_SMALL }, - { N_("Revision mismatch"), NT_STATUS_REVISION_MISMATCH }, - { N_("No logon servers"), NT_STATUS_NO_LOGON_SERVERS }, - { N_("No such logon session"), NT_STATUS_NO_SUCH_LOGON_SESSION }, - { N_("No such privilege"), NT_STATUS_NO_SUCH_PRIVILEGE }, - { N_("Procedure not found"), NT_STATUS_PROCEDURE_NOT_FOUND }, - { N_("Server disabled"), NT_STATUS_SERVER_DISABLED }, - { N_("Invalid pipe state"), NT_STATUS_INVALID_PIPE_STATE }, - { N_("Named pipe busy"), NT_STATUS_PIPE_BUSY }, - { N_("Illegal function"), NT_STATUS_ILLEGAL_FUNCTION }, - { N_("Named pipe disconnected"), NT_STATUS_PIPE_DISCONNECTED }, - { N_("Named pipe closing"), NT_STATUS_PIPE_CLOSING }, - { N_("Remote host not listening"), NT_STATUS_REMOTE_NOT_LISTENING }, - { N_("Duplicate name on network"), NT_STATUS_DUPLICATE_NAME }, - { N_("Print queue is full"), NT_STATUS_PRINT_QUEUE_FULL }, - { N_("No print spool space available"), NT_STATUS_NO_SPOOL_SPACE }, - { N_("The network name cannot be found"), NT_STATUS_BAD_NETWORK_NAME }, - { N_("The connection was refused"), NT_STATUS_CONNECTION_REFUSED }, - { N_("Too many names"), NT_STATUS_TOO_MANY_NAMES }, - { N_("Too many sessions"), NT_STATUS_TOO_MANY_SESSIONS }, - { N_("Invalid server state"), NT_STATUS_INVALID_SERVER_STATE }, - { N_("Invalid domain state"), NT_STATUS_INVALID_DOMAIN_STATE }, - { N_("Invalid domain role"), NT_STATUS_INVALID_DOMAIN_ROLE }, - { N_("No such domain"), NT_STATUS_NO_SUCH_DOMAIN }, - { N_("Domain exists"), NT_STATUS_DOMAIN_EXISTS }, - { N_("Domain limit exceeded"), NT_STATUS_DOMAIN_LIMIT_EXCEEDED }, - { N_("Bad logon session state"), NT_STATUS_BAD_LOGON_SESSION_STATE }, - { N_("Logon session collision"), NT_STATUS_LOGON_SESSION_COLLISION }, - { N_("Invalid logon type"), NT_STATUS_INVALID_LOGON_TYPE }, - { N_("Cancelled"), NT_STATUS_CANCELLED }, - { N_("Invalid computer name"), NT_STATUS_INVALID_COMPUTER_NAME }, - { N_("Logon server conflict"), NT_STATUS_LOGON_SERVER_CONFLICT }, - { N_("Time difference at domain controller"), NT_STATUS_TIME_DIFFERENCE_AT_DC }, - { N_("Pipe broken"), NT_STATUS_PIPE_BROKEN }, - { N_("Registry corrupt"), NT_STATUS_REGISTRY_CORRUPT }, - { N_("Too many secrets"), NT_STATUS_TOO_MANY_SECRETS }, - { N_("Too many SIDs"), NT_STATUS_TOO_MANY_SIDS }, - { N_("Lanmanager cross encryption required"), NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED }, - { N_("Log file full"), NT_STATUS_LOG_FILE_FULL }, - { N_("No trusted LSA secret"), NT_STATUS_NO_TRUST_LSA_SECRET }, - { N_("No trusted SAM account"), NT_STATUS_NO_TRUST_SAM_ACCOUNT }, - { N_("Trusted domain failure"), NT_STATUS_TRUSTED_DOMAIN_FAILURE }, - { N_("Trust relationship failure"), NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE }, - { N_("Trust failure"), NT_STATUS_TRUST_FAILURE }, - { N_("Netlogon service not started"), NT_STATUS_NETLOGON_NOT_STARTED }, - { N_("Account expired"), NT_STATUS_ACCOUNT_EXPIRED }, - { N_("Network credential conflict"), NT_STATUS_NETWORK_CREDENTIAL_CONFLICT }, - { N_("Remote session limit"), NT_STATUS_REMOTE_SESSION_LIMIT }, - { N_("No logon interdomain trust account"), NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT }, - { N_("No logon workstation trust account"), NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT }, - { N_("No logon server trust account"), NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT }, - { N_("Domain trust inconsistent"), NT_STATUS_DOMAIN_TRUST_INCONSISTENT }, - { N_("No user session key available"), NT_STATUS_NO_USER_SESSION_KEY }, - { N_("User session deleted"), NT_STATUS_USER_SESSION_DELETED }, - { N_("Insufficient server resources"), NT_STATUS_INSUFF_SERVER_RESOURCES }, - { N_("Insufficient logon information"), NT_STATUS_INSUFFICIENT_LOGON_INFO }, - - { N_("License quota exceeded"), NT_STATUS_LICENSE_QUOTA_EXCEEDED }, - { N_("No more files"), STATUS_NO_MORE_FILES }, - - { NULL, NT_STATUS(0) } -}; +extern const nt_err_code_struct nt_errs[]; +extern const nt_err_code_struct nt_err_desc[]; /***************************************************************************** Returns an NT error message. not amazingly helpful, but better than a number. @@ -892,70 +72,3 @@ const char *get_friendly_nt_error_msg(NTSTATUS nt_code) return nt_errstr(nt_code); } - -/***************************************************************************** - Returns an NT_STATUS constant as a string for inclusion in autogen C code. - *****************************************************************************/ - -const char *get_nt_error_c_code(TALLOC_CTX *mem_ctx, NTSTATUS nt_code) -{ - char *result; - int idx = 0; - - while (nt_errs[idx].nt_errstr != NULL) { - if (NT_STATUS_V(nt_errs[idx].nt_errcode) == - NT_STATUS_V(nt_code)) { - result = talloc_strdup(mem_ctx, nt_errs[idx].nt_errstr); - return result; - } - idx++; - } - - result = talloc_asprintf(mem_ctx, "NT_STATUS(0x%08x)", - NT_STATUS_V(nt_code)); - return result; -} - -/***************************************************************************** - Returns the NT_STATUS constant matching the string supplied (as an NTSTATUS) - *****************************************************************************/ - -NTSTATUS nt_status_string_to_code(const char *nt_status_str) -{ - int idx = 0; - - while (nt_errs[idx].nt_errstr != NULL) { - if (strcasecmp(nt_errs[idx].nt_errstr, nt_status_str) == 0) { - return nt_errs[idx].nt_errcode; - } - idx++; - } - return NT_STATUS_UNSUCCESSFUL; -} - -/** - * Squash an NT_STATUS in line with security requirements. - * In an attempt to avoid giving the whole game away when users - * are authenticating, NT replaces both NT_STATUS_NO_SUCH_USER and - * NT_STATUS_WRONG_PASSWORD with NT_STATUS_LOGON_FAILURE in certain situations - * (session setups in particular). - * - * @param nt_status NTSTATUS input for squashing. - * @return the 'squashed' nt_status - **/ - -NTSTATUS nt_status_squash(NTSTATUS nt_status) -{ - if NT_STATUS_IS_OK(nt_status) { - return nt_status; - } else if NT_STATUS_EQUAL(nt_status, NT_STATUS_NO_SUCH_USER) { - /* Match WinXP and don't give the game away */ - return NT_STATUS_LOGON_FAILURE; - - } else if NT_STATUS_EQUAL(nt_status, NT_STATUS_WRONG_PASSWORD) { - /* Match WinXP and don't give the game away */ - return NT_STATUS_LOGON_FAILURE; - } else { - return nt_status; - } -} -- cgit From cad704e8368f6aba28889966a7382afc8b738928 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 17:00:23 +1000 Subject: errors: Remove unused unix_to_werror() --- source4/libcli/util/errormap.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index b06f27e120..16e0746bad 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -726,8 +726,3 @@ NTSTATUS map_nt_error_from_unix(int unix_error) return NT_STATUS_UNSUCCESSFUL; } -/* Convert a Unix error code to WERROR */ -WERROR unix_to_werror(int unix_error) -{ - return ntstatus_to_werror(map_nt_error_from_unix(unix_error)); -} -- cgit From e3b858496ffe213f66387e4f11b311543af4dc54 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 4 May 2011 21:19:46 +1000 Subject: libcli/smb Move cifs posix helper functions and headers in common unix_perms_to_wire() was a duplicate symbol in the top level build. Andrew Bartlett --- source4/libcli/clifile.c | 28 ------- source4/libcli/raw/interfaces.h | 4 +- source4/libcli/raw/trans2.h | 157 ---------------------------------------- 3 files changed, 2 insertions(+), 187 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/clifile.c b/source4/libcli/clifile.c index f521b5f420..f5e02dd458 100644 --- a/source4/libcli/clifile.c +++ b/source4/libcli/clifile.c @@ -50,34 +50,6 @@ static NTSTATUS smbcli_link_internal(struct smbcli_tree *tree, return status; } -/**************************************************************************** - Map standard UNIX permissions onto wire representations. -****************************************************************************/ -uint32_t unix_perms_to_wire(mode_t perms) -{ - unsigned int ret = 0; - - ret |= ((perms & S_IXOTH) ? UNIX_X_OTH : 0); - ret |= ((perms & S_IWOTH) ? UNIX_W_OTH : 0); - ret |= ((perms & S_IROTH) ? UNIX_R_OTH : 0); - ret |= ((perms & S_IXGRP) ? UNIX_X_GRP : 0); - ret |= ((perms & S_IWGRP) ? UNIX_W_GRP : 0); - ret |= ((perms & S_IRGRP) ? UNIX_R_GRP : 0); - ret |= ((perms & S_IXUSR) ? UNIX_X_USR : 0); - ret |= ((perms & S_IWUSR) ? UNIX_W_USR : 0); - ret |= ((perms & S_IRUSR) ? UNIX_R_USR : 0); -#ifdef S_ISVTX - ret |= ((perms & S_ISVTX) ? UNIX_STICKY : 0); -#endif -#ifdef S_ISGID - ret |= ((perms & S_ISGID) ? UNIX_SET_GID : 0); -#endif -#ifdef S_ISUID - ret |= ((perms & S_ISUID) ? UNIX_SET_UID : 0); -#endif - return ret; -} - /**************************************************************************** Symlink a file (UNIX extensions). ****************************************************************************/ diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h index f3ce4e9c5f..d20367474a 100644 --- a/source4/libcli/raw/interfaces.h +++ b/source4/libcli/raw/interfaces.h @@ -924,8 +924,8 @@ enum smb_setfileinfo_level { RAW_SFILEINFO_END_OF_FILE_INFO = SMB_SFILEINFO_END_OF_FILE_INFO, RAW_SFILEINFO_UNIX_BASIC = SMB_SFILEINFO_UNIX_BASIC, RAW_SFILEINFO_UNIX_INFO2 = SMB_SFILEINFO_UNIX_INFO2, - RAW_SFILEINFO_UNIX_LINK = SMB_SFILEINFO_UNIX_LINK, - RAW_SFILEINFO_UNIX_HLINK = SMB_SFILEINFO_UNIX_HLINK, + RAW_SFILEINFO_UNIX_LINK = SMB_SET_FILE_UNIX_LINK, + RAW_SFILEINFO_UNIX_HLINK = SMB_SET_FILE_UNIX_HLINK, RAW_SFILEINFO_BASIC_INFORMATION = SMB_SFILEINFO_BASIC_INFORMATION, RAW_SFILEINFO_RENAME_INFORMATION = SMB_SFILEINFO_RENAME_INFORMATION, RAW_SFILEINFO_LINK_INFORMATION = SMB_SFILEINFO_LINK_INFORMATION, diff --git a/source4/libcli/raw/trans2.h b/source4/libcli/raw/trans2.h index 63632eb5ed..d9a3f5f7d2 100644 --- a/source4/libcli/raw/trans2.h +++ b/source4/libcli/raw/trans2.h @@ -316,161 +316,4 @@ Found 0 aliased levels #define MAX_MAC_INFO_LEVEL 0x3FF #define SMB_QFS_MAC_FS_INFO 0x301 - - -/* UNIX CIFS Extensions - created by HP */ -/* - * UNIX CIFS Extensions have the range 0x200 - 0x2FF reserved. - * Supposedly Microsoft have agreed to this. - */ - -#define MIN_UNIX_INFO_LEVEL 0x200 -#define MAX_UNIX_INFO_LEVEL 0x2FF - -#define INFO_LEVEL_IS_UNIX(level) (((level) >= MIN_UNIX_INFO_LEVEL) && ((level) <= MAX_UNIX_INFO_LEVEL)) - -#define SMB_MODE_NO_CHANGE 0xFFFFFFFF /* file mode value which */ - /* means "don't change it" */ -#define SMB_UID_NO_CHANGE 0xFFFFFFFF -#define SMB_GID_NO_CHANGE 0xFFFFFFFF - -#define SMB_SIZE_NO_CHANGE_LO 0xFFFFFFFF -#define SMB_SIZE_NO_CHANGE_HI 0xFFFFFFFF - -#define SMB_TIME_NO_CHANGE_LO 0xFFFFFFFF -#define SMB_TIME_NO_CHANGE_HI 0xFFFFFFFF - -/* -UNIX_BASIC info level: - -Offset Size Name -0 LARGE_INTEGER EndOfFile File size -8 LARGE_INTEGER Blocks Number of bytes used on disk (st_blocks). -16 LARGE_INTEGER CreationTime Creation time -24 LARGE_INTEGER LastAccessTime Last access time -32 LARGE_INTEGER LastModificationTime Last modification time -40 LARGE_INTEGER Uid Numeric user id for the owner -48 LARGE_INTEGER Gid Numeric group id of owner -56 ULONG Type Enumeration specifying the pathname type: - 0 -- File - 1 -- Directory - 2 -- Symbolic link - 3 -- Character device - 4 -- Block device - 5 -- FIFO (named pipe) - 6 -- Unix domain socket - -60 LARGE_INTEGER devmajor Major device number if type is device -68 LARGE_INTEGER devminor Minor device number if type is device -76 LARGE_INTEGER uniqueid This is a server-assigned unique id for the file. The client - will typically map this onto an inode number. The scope of - uniqueness is the share. -84 LARGE_INTEGER permissions Standard UNIX file permissions - see below. -92 LARGE_INTEGER nlinks The number of directory entries that map to this entry - (number of hard links) - -100 - end. -*/ - -/* -SMB_QUERY_FILE_UNIX_INFO2 is SMB_QUERY_FILE_UNIX_BASIC with create -time and file flags appended. The corresponding info level for -findfirst/findnext is SMB_FIND_FILE_UNIX_UNIX2. - -Size Offset Value ---------------------- -0 LARGE_INTEGER EndOfFile File size -8 LARGE_INTEGER Blocks Number of blocks used on disk -16 LARGE_INTEGER ChangeTime Attribute change time -24 LARGE_INTEGER LastAccessTime Last access time -32 LARGE_INTEGER LastModificationTime Last modification time -40 LARGE_INTEGER Uid Numeric user id for the owner -48 LARGE_INTEGER Gid Numeric group id of owner -56 ULONG Type Enumeration specifying the file type -60 LARGE_INTEGER devmajor Major device number if type is device -68 LARGE_INTEGER devminor Minor device number if type is device -76 LARGE_INTEGER uniqueid This is a server-assigned unique id -84 LARGE_INTEGER permissions Standard UNIX permissions -92 LARGE_INTEGER nlinks Number of hard link) -100 LARGE_INTEGER CreationTime Create/birth time -108 ULONG FileFlags File flags enumeration -112 ULONG FileFlagsMask Mask of valid flags -*/ - -/* UNIX filetype mappings. */ - -#define UNIX_TYPE_FILE 0 -#define UNIX_TYPE_DIR 1 -#define UNIX_TYPE_SYMLINK 2 -#define UNIX_TYPE_CHARDEV 3 -#define UNIX_TYPE_BLKDEV 4 -#define UNIX_TYPE_FIFO 5 -#define UNIX_TYPE_SOCKET 6 -#define UNIX_TYPE_UNKNOWN 0xFFFFFFFF - -/* - * Oh this is fun. "Standard UNIX permissions" has no - * meaning in POSIX. We need to define the mapping onto - * and off the wire as this was not done in the original HP - * spec. JRA. - */ - -#define UNIX_X_OTH 0000001 -#define UNIX_W_OTH 0000002 -#define UNIX_R_OTH 0000004 -#define UNIX_X_GRP 0000010 -#define UNIX_W_GRP 0000020 -#define UNIX_R_GRP 0000040 -#define UNIX_X_USR 0000100 -#define UNIX_W_USR 0000200 -#define UNIX_R_USR 0000400 -#define UNIX_STICKY 0001000 -#define UNIX_SET_GID 0002000 -#define UNIX_SET_UID 0004000 - -/* Masks for the above */ -#define UNIX_OTH_MASK 0000007 -#define UNIX_GRP_MASK 0000070 -#define UNIX_USR_MASK 0000700 -#define UNIX_PERM_MASK 0000777 -#define UNIX_EXTRA_MASK 0007000 -#define UNIX_ALL_MASK 0007777 - -/* Flags for the file_flags field in UNIX_INFO2: */ -#define EXT_SECURE_DELETE 0x00000001 -#define EXT_ENABLE_UNDELETE 0x00000002 -#define EXT_SYNCHRONOUS 0x00000004 -#define EXT_IMMUTABLE 0x00000008 -#define EXT_OPEN_APPEND_ONLY 0x00000010 -#define EXT_DO_NOT_BACKUP 0x00000020 -#define EXT_NO_UPDATE_ATIME 0x00000040 -#define EXT_HIDDEN 0x00000080 - -#define SMB_QFILEINFO_UNIX_LINK 0x201 -#define SMB_SFILEINFO_UNIX_LINK 0x201 -#define SMB_SFILEINFO_UNIX_HLINK 0x203 - -/* - Info level for QVOLINFO - returns version of CIFS UNIX extensions, plus - 64-bits worth of capability fun :-). -*/ - -#define SMB_QUERY_CIFS_UNIX_INFO 0x200 - -/* Returns the following. - - UINT16 major version number - UINT16 minor version number - LARGE_INTEGER capability bitfield - -*/ - -#define CIFS_UNIX_MAJOR_VERSION 1 -#define CIFS_UNIX_MINOR_VERSION 0 - -#define CIFS_UNIX_FCNTL_LOCKS_CAP 0x1 -#define CIFS_UNIX_POSIX_ACLS_CAP 0x2 - -/* ... more as we think of them :-). */ - #endif -- cgit From 22cb631b4fd0647b70fbaaafaffda8712a84a999 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 2 May 2011 15:57:19 +1000 Subject: s4-interfaces Rename interfaces code so not to conflict with source3/ The iface_count, iface_n_bcast, and load_interfaces functions conflicted with functions of the same name in source3, so the source4 functions were renamed. Hopefully we can actually wrap one around the other in future. Andrew Bartlett --- source4/libcli/resolve/bcast.c | 6 +++--- source4/libcli/resolve/wins.c | 2 +- source4/libcli/wrepl/winsrepl.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/bcast.c b/source4/libcli/resolve/bcast.c index 0ad3e1230b..794ef34e20 100644 --- a/source4/libcli/resolve/bcast.c +++ b/source4/libcli/resolve/bcast.c @@ -47,13 +47,13 @@ struct composite_context *resolve_name_bcast_send(TALLOC_CTX *mem_ctx, int i, count=0; struct resolve_bcast_data *data = talloc_get_type(userdata, struct resolve_bcast_data); - num_interfaces = iface_count(data->ifaces); + num_interfaces = iface_list_count(data->ifaces); address_list = talloc_array(mem_ctx, const char *, num_interfaces+1); if (address_list == NULL) return NULL; for (i=0;iifaces, i); + const char *bcast = iface_list_n_bcast(data->ifaces, i); if (bcast == NULL) continue; address_list[count] = talloc_strdup(address_list, bcast); if (address_list[count] == NULL) { @@ -101,6 +101,6 @@ bool resolve_context_add_bcast_method(struct resolve_context *ctx, struct interf bool resolve_context_add_bcast_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx) { struct interface *ifaces; - load_interfaces(ctx, lpcfg_interfaces(lp_ctx), &ifaces); + load_interface_list(ctx, lpcfg_interfaces(lp_ctx), &ifaces); return resolve_context_add_bcast_method(ctx, ifaces, lpcfg_nbt_port(lp_ctx), lpcfg_parm_int(lp_ctx, NULL, "nbt", "timeout", 1)); } diff --git a/source4/libcli/resolve/wins.c b/source4/libcli/resolve/wins.c index 989f40e6cd..914386ce9c 100644 --- a/source4/libcli/resolve/wins.c +++ b/source4/libcli/resolve/wins.c @@ -77,6 +77,6 @@ bool resolve_context_add_wins_method(struct resolve_context *ctx, const char **a bool resolve_context_add_wins_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx) { struct interface *ifaces; - load_interfaces(ctx, lpcfg_interfaces(lp_ctx), &ifaces); + load_interface_list(ctx, lpcfg_interfaces(lp_ctx), &ifaces); return resolve_context_add_wins_method(ctx, lpcfg_wins_server_list(lp_ctx), ifaces, lpcfg_nbt_port(lp_ctx), lpcfg_parm_int(lp_ctx, NULL, "nbt", "timeout", 1)); } diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index 842a35175e..2ccc50e71e 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -136,8 +136,8 @@ NTSTATUS wrepl_socket_split_stream(struct wrepl_socket *wrepl_socket, const char *wrepl_best_ip(struct loadparm_context *lp_ctx, const char *peer_ip) { struct interface *ifaces; - load_interfaces(lp_ctx, lpcfg_interfaces(lp_ctx), &ifaces); - return iface_best_ip(ifaces, peer_ip); + load_interface_list(lp_ctx, lpcfg_interfaces(lp_ctx), &ifaces); + return iface_list_best_ip(ifaces, peer_ip); } struct wrepl_connect_state { -- cgit From c31f95f66dcf1c11646b1edd84966e8369904a8c Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Thu, 12 May 2011 20:52:52 +0200 Subject: do an explicit A record search for SRV entries Signed-off-by: Andrew Bartlett --- source4/libcli/resolve/dns_ex.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 35e2ad74c3..1d2a8036b1 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -87,6 +87,7 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) struct rk_resource_record **srv_rr; uint32_t addrs_valid = 0; struct rk_resource_record **addrs_rr; + struct rk_dns_reply **srv_replies = NULL; char *addrs; bool first; uint32_t i; @@ -167,6 +168,13 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) goto done; } + srv_replies = talloc_zero_array(state, + struct rk_dns_reply *, + count); + if (!srv_replies) { + goto done; + } + /* Loop over all returned records and pick the records */ for (rr=reply->head;rr;rr=rr->next) { /* we are only interested in the IN class */ @@ -210,8 +218,12 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) } for (i=0; i < srv_valid; i++) { - for (rr=reply->head;rr;rr=rr->next) { + srv_replies[i] = rk_dns_lookup(srv_rr[i]->u.srv->target, "A"); + if (srv_replies[i] == NULL) + continue; + /* Add first A record to addrs_rr */ + for (rr=srv_replies[i]->head;rr;rr=rr->next) { if (rr->class != rk_ns_c_in) { continue; } @@ -221,8 +233,8 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) continue; } - /* verify we actually have a srv record here */ - if (strcmp(&srv_rr[i]->u.srv->target[0], rr->domain) != 0) { + /* verify we actually have a A record here */ + if (!rr->u.a) { continue; } @@ -241,7 +253,7 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) goto done; } first = true; - for (i=0; i < count; i++) { + for (i=0; i < addrs_valid; i++) { uint16_t port; if (!addrs_rr[i]) { continue; @@ -270,6 +282,12 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) } done: + if (reply != NULL) + rk_dns_free_data(reply); + for (i=0; i < srv_valid; i++) { + if (srv_replies[i] != NULL) + rk_dns_free_data(srv_replies[i]); + } close(fd); } -- cgit From b1948659ad987ce50d048dabc34f03031a243ee5 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 11 May 2011 23:37:08 +0200 Subject: s4-libcli/rap: add smbcli_rap_netremotetod(). Guenther --- source4/libcli/rap/rap.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'source4/libcli') diff --git a/source4/libcli/rap/rap.c b/source4/libcli/rap/rap.c index 5ea9e816e8..7743f64c4c 100644 --- a/source4/libcli/rap/rap.c +++ b/source4/libcli/rap/rap.c @@ -1633,3 +1633,50 @@ NTSTATUS smbcli_rap_netuserdelete(struct smbcli_tree *tree, talloc_free(call); return result; } + +NTSTATUS smbcli_rap_netremotetod(struct smbcli_tree *tree, + TALLOC_CTX *mem_ctx, + struct rap_NetRemoteTOD *r) +{ + struct rap_call *call; + NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + + if (!(call = new_rap_cli_call(mem_ctx, RAP_NetRemoteTOD))) { + return NT_STATUS_NO_MEMORY; + } + + rap_cli_push_rcvbuf(call, r->in.bufsize); + + rap_cli_expect_format(call, "DDBBBBWWBBWB"); + rap_cli_expect_extra_format(call, ""); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(rap_NetRemoteTOD, r); + } + + result = rap_cli_do_call(tree, call); + + if (!NT_STATUS_IS_OK(result)) + goto done; + + result = NT_STATUS_INVALID_PARAMETER; + + NDR_GOTO(ndr_pull_rap_status(call->ndr_pull_param, NDR_SCALARS, &r->out.status)); + NDR_GOTO(ndr_pull_uint16(call->ndr_pull_param, NDR_SCALARS, &r->out.convert)); + + NDR_GOTO(ndr_pull_rap_TimeOfDayInfo(call->ndr_pull_data, NDR_SCALARS|NDR_BUFFERS, &r->out.tod)); + + result = NT_STATUS_OK; + + if (!NT_STATUS_IS_OK(result)) { + goto done; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(rap_NetRemoteTOD, r); + } + + done: + talloc_free(call); + return result; +} -- cgit From 2fc342c20ab455a5961b1b2b507aa7b62ecabf1f Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 12 May 2011 20:12:07 +0200 Subject: waf-build: Add more libraries to avoid duplicate symbols The new source of duplicates is calling libnetapi from inside smbtorture. Andrew Bartlett --- source4/libcli/wscript_build | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/wscript_build b/source4/libcli/wscript_build index 46bca5aa0b..3d36925195 100644 --- a/source4/libcli/wscript_build +++ b/source4/libcli/wscript_build @@ -83,11 +83,12 @@ bld.SAMBA_SUBSYSTEM('LIBCLI_SMB', ) -bld.SAMBA_SUBSYSTEM('LIBCLI_RAW', +bld.SAMBA_LIBRARY('LIBCLI_RAW', source='raw/rawfile.c raw/smb_signing.c raw/clisocket.c raw/clitransport.c raw/clisession.c raw/clitree.c raw/clierror.c raw/rawrequest.c raw/rawreadwrite.c raw/rawsearch.c raw/rawsetfileinfo.c raw/raweas.c raw/rawtrans.c raw/clioplock.c raw/rawnegotiate.c raw/rawfsinfo.c raw/rawfileinfo.c raw/rawnotify.c raw/rawioctl.c raw/rawacl.c raw/rawdate.c raw/rawlpq.c raw/rawshadow.c', autoproto='raw/raw_proto.h', public_deps='samba_socket LIBPACKET LIBCRYPTO', - deps='LIBCLI_COMPOSITE LIBCLI_RESOLVE security ndr samba-util errors CHARSET talloc LIBCLI_SMB_COMPOSITE tevent NDR_NBT_BUF LIBCLI_SMB_COMMON' + deps='LIBCLI_COMPOSITE LIBCLI_RESOLVE security ndr samba-util errors CHARSET talloc LIBCLI_SMB_COMPOSITE tevent NDR_NBT_BUF LIBCLI_SMB_COMMON', + private_library=True ) bld.RECURSE('smb2') -- cgit From 159fad92d9f46acf41e9be35b8fa42ea51610426 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 31 May 2011 09:08:43 +1000 Subject: s4-libcli Merge error map order with source3 errmap_unix.c This makes it easier to see what the actual differences here are. Andrew Bartlett --- source4/libcli/util/errormap.c | 54 ++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 26 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 16e0746bad..6392a6208c 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -629,43 +629,21 @@ static const struct { { ENFILE, NT_STATUS_TOO_MANY_OPENED_FILES }, { EMFILE, NT_STATUS_TOO_MANY_OPENED_FILES }, { ENOSPC, NT_STATUS_DISK_FULL }, - { EISDIR, NT_STATUS_FILE_IS_A_DIRECTORY }, { ENOTSOCK, NT_STATUS_INVALID_HANDLE }, { EFAULT, NT_STATUS_INVALID_PARAMETER }, { EMSGSIZE, NT_STATUS_INVALID_BUFFER_SIZE }, { ENOMEM, NT_STATUS_NO_MEMORY }, + { EISDIR, NT_STATUS_FILE_IS_A_DIRECTORY}, { EPIPE, NT_STATUS_CONNECTION_DISCONNECTED }, - { ECONNREFUSED, NT_STATUS_CONNECTION_REFUSED }, -#ifdef ECONNRESET - { ECONNRESET, NT_STATUS_CONNECTION_RESET }, -#endif { EBUSY, NT_STATUS_SHARING_VIOLATION }, -#ifdef ENOTSUP - { ENOTSUP, NT_STATUS_NOT_SUPPORTED}, -#endif #ifdef EOPNOTSUPP { EOPNOTSUPP, NT_STATUS_NOT_SUPPORTED}, #endif -#ifdef EHOSTUNREACH - { EHOSTUNREACH, NT_STATUS_HOST_UNREACHABLE }, -#endif -#ifdef ENETUNREACH - { ENETUNREACH, NT_STATUS_NETWORK_UNREACHABLE }, -#endif -#ifdef ETIMEDOUT - { ETIMEDOUT, NT_STATUS_IO_TIMEOUT }, -#endif -#ifdef EADDRINUSE - { EADDRINUSE, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED }, -#endif -#ifdef ENOATTR - { ENOATTR, NT_STATUS_NOT_FOUND }, -#endif #ifdef ENODATA { ENODATA, NT_STATUS_NOT_FOUND }, #endif #ifdef EDQUOT - { EDQUOT, NT_STATUS_DISK_FULL }, /* Windows does NOT return NT_STATUS_QUOTA_EXCEEDED */ + { EDQUOT, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */ #endif #ifdef ENOTEMPTY { ENOTEMPTY, NT_STATUS_DIRECTORY_NOT_EMPTY }, @@ -682,26 +660,50 @@ static const struct { #ifdef EFBIG { EFBIG, NT_STATUS_DISK_FULL }, #endif +#ifdef EADDRINUSE + { EADDRINUSE, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, +#endif +#ifdef ENETUNREACH + { ENETUNREACH, NT_STATUS_NETWORK_UNREACHABLE}, +#endif +#ifdef EHOSTUNREACH + { EHOSTUNREACH, NT_STATUS_HOST_UNREACHABLE}, +#endif +#ifdef ECONNREFUSED + { ECONNREFUSED, NT_STATUS_CONNECTION_REFUSED}, +#endif #ifdef EADDRNOTAVAIL { EADDRNOTAVAIL,NT_STATUS_ADDRESS_NOT_ASSOCIATED }, #endif +#ifdef ETIMEDOUT + { ETIMEDOUT, NT_STATUS_IO_TIMEOUT}, +#endif #ifdef ESOCKTNOSUPPORT { ESOCKTNOSUPPORT,NT_STATUS_INVALID_PARAMETER_MIX }, #endif #ifdef EAFNOSUPPORT { EAFNOSUPPORT, NT_STATUS_INVALID_PARAMETER_MIX }, #endif +#ifdef ECONNRESET + { ECONNRESET, NT_STATUS_CONNECTION_RESET}, +#endif #ifdef ENOPROTOOPT { ENOPROTOOPT, NT_STATUS_INVALID_PARAMETER_MIX }, #endif #ifdef ENODEV { ENODEV, NT_STATUS_NO_SUCH_DEVICE }, #endif +#ifdef ENOATTR + { ENOATTR, NT_STATUS_NOT_FOUND }, +#endif +#ifdef ECANCELED + { ECANCELED, NT_STATUS_CANCELLED}, +#endif #ifdef ENOSYS { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE }, #endif -#ifdef ECANCELED - { ECANCELED, NT_STATUS_CANCELLED }, +#ifdef ENOTSUP + { ENOTSUP, NT_STATUS_NOT_SUPPORTED}, #endif { 0, NT_STATUS_UNSUCCESSFUL } -- cgit From c004a932c45a4b343814eb2e3f2d611a2dfe7311 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 14 May 2011 21:53:05 +0200 Subject: libcli/util Remove ntstatus_check_dos_mapping This has been set to true since the global loadparm was removed in 2008, and removes an #ifdef SAMBA_BUILD == 4 Andrew Bartlett --- source4/libcli/util/errormap.c | 35 ----------------------------------- 1 file changed, 35 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 6392a6208c..23432ca22f 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -570,41 +570,6 @@ static const struct { { WERR_OK, NT_STATUS_OK } }; -bool ntstatus_check_dos_mapping = true; - -/* - check if a DOS encoded NTSTATUS code maps to the given NTSTATUS code -*/ -bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2) -{ - /* when we negotiate nt status support, we don't want to consider - the mapping of dos codes, as we want to catch the cases where - a forced dos code is needed - */ - if (ntstatus_check_dos_mapping) { - return NT_STATUS_V(status1) == NT_STATUS_V(status2); - } - - /* otherwise check if the mapping comes out right. Note that it is important - that we do the mapping only from ntstatus -> dos and not from dos -> ntstatus, - as that is the mapping that servers must do */ - if (!NT_STATUS_IS_DOS(status1) && NT_STATUS_IS_DOS(status2)) { - uint8_t eclass; - uint32_t ecode; - ntstatus_to_dos(status1, &eclass, &ecode); - return eclass == NT_STATUS_DOS_CLASS(status2) && - ecode == NT_STATUS_DOS_CODE(status2); - } - if (NT_STATUS_IS_DOS(status1) && !NT_STATUS_IS_DOS(status2)) { - uint8_t eclass; - uint32_t ecode; - ntstatus_to_dos(status2, &eclass, &ecode); - return eclass == NT_STATUS_DOS_CLASS(status1) && - ecode == NT_STATUS_DOS_CODE(status1); - } - return NT_STATUS_V(status1) == NT_STATUS_V(status2); -} - /* Mapping between Unix, and NT error numbers */ static const struct { -- cgit From 0204ae6229bae3573b3194c3f657c8f385c0b940 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 1 Jun 2011 11:24:51 +0930 Subject: lib/util/time.c: timeval_current_ofs_usec Several places want "microseconds from current time", and several were simply handing "usecs" values which could be over a million. Using a helper to do this is safer and more readable. I didn't replace any obviously correct callers (ie. constants). I also renamed wait_nsec in source3/lib/util_sock.c; it's actually microseconds not nanoseconds (introduced with this code in Volker's 19b783cc Async wrapper for open_socket_out_send/recv). Signed-off-by: Rusty Russell --- source4/libcli/raw/clitransport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c index 7a3993c79b..43316692a4 100644 --- a/source4/libcli/raw/clitransport.c +++ b/source4/libcli/raw/clitransport.c @@ -338,7 +338,7 @@ _PUBLIC_ void smbcli_transport_idle_handler(struct smbcli_transport *transport, transport->socket->event.te = event_add_timed(transport->socket->event.ctx, transport, - timeval_current_ofs(0, period), + timeval_current_ofs_usec(period), idle_handler, transport); } -- cgit From 40dc94a53f4f0f5dee285daf486912b0996d5f3e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 2 Jun 2011 15:40:28 +1000 Subject: s4-ipv6: update callers to load_interface_list() --- source4/libcli/resolve/bcast.c | 2 +- source4/libcli/resolve/wins.c | 2 +- source4/libcli/wrepl/winsrepl.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/bcast.c b/source4/libcli/resolve/bcast.c index 794ef34e20..150705f8d8 100644 --- a/source4/libcli/resolve/bcast.c +++ b/source4/libcli/resolve/bcast.c @@ -101,6 +101,6 @@ bool resolve_context_add_bcast_method(struct resolve_context *ctx, struct interf bool resolve_context_add_bcast_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx) { struct interface *ifaces; - load_interface_list(ctx, lpcfg_interfaces(lp_ctx), &ifaces); + load_interface_list(ctx, lp_ctx, &ifaces); return resolve_context_add_bcast_method(ctx, ifaces, lpcfg_nbt_port(lp_ctx), lpcfg_parm_int(lp_ctx, NULL, "nbt", "timeout", 1)); } diff --git a/source4/libcli/resolve/wins.c b/source4/libcli/resolve/wins.c index 914386ce9c..a52b99a23e 100644 --- a/source4/libcli/resolve/wins.c +++ b/source4/libcli/resolve/wins.c @@ -77,6 +77,6 @@ bool resolve_context_add_wins_method(struct resolve_context *ctx, const char **a bool resolve_context_add_wins_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx) { struct interface *ifaces; - load_interface_list(ctx, lpcfg_interfaces(lp_ctx), &ifaces); + load_interface_list(ctx, lp_ctx, &ifaces); return resolve_context_add_wins_method(ctx, lpcfg_wins_server_list(lp_ctx), ifaces, lpcfg_nbt_port(lp_ctx), lpcfg_parm_int(lp_ctx, NULL, "nbt", "timeout", 1)); } diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index 2ccc50e71e..0dee2c56cf 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -136,7 +136,7 @@ NTSTATUS wrepl_socket_split_stream(struct wrepl_socket *wrepl_socket, const char *wrepl_best_ip(struct loadparm_context *lp_ctx, const char *peer_ip) { struct interface *ifaces; - load_interface_list(lp_ctx, lpcfg_interfaces(lp_ctx), &ifaces); + load_interface_list(lp_ctx, lp_ctx, &ifaces); return iface_list_best_ip(ifaces, peer_ip); } -- cgit From d1c90c465ee3d0bf60daf23c8eb9510071426c97 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 6 Jun 2011 08:09:02 +1000 Subject: s4-ipv6: cope with IPv6 in our async DNS client code --- source4/libcli/resolve/dns_ex.c | 56 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 1d2a8036b1..069ba823c2 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -37,6 +37,7 @@ #include "libcli/composite/composite.h" #include "librpc/gen_ndr/ndr_nbt.h" #include "libcli/resolve/resolve.h" +#include "lib/util/util_net.h" #ifdef class #undef class @@ -136,14 +137,13 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) continue; } } else { - /* we are only interested in A records */ - /* TODO: add AAAA support */ - if (rr->type != rk_ns_t_a) { + /* we are only interested in A or AAAA records */ + if (rr->type != rk_ns_t_a && rr->type != rk_ns_t_aaaa) { continue; } - /* verify we actually have a A record here */ - if (!rr->u.a) { + /* verify we actually have a record here */ + if (!rr->u.data) { continue; } } @@ -201,14 +201,13 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) srv_rr[srv_valid] = rr; srv_valid++; } else { - /* we are only interested in A records */ - /* TODO: add AAAA support */ - if (rr->type != rk_ns_t_a) { + /* we are only interested in A or AAAA records */ + if (rr->type != rk_ns_t_a && rr->type != rk_ns_t_aaaa) { continue; } - /* verify we actually have a A record here */ - if (!rr->u.a) { + /* verify we actually have a record record here */ + if (!rr->u.data) { continue; } @@ -228,13 +227,13 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) continue; } - /* we are only interested in A records */ - if (rr->type != rk_ns_t_a) { + /* we are only interested in A or AAAA records */ + if (rr->type != rk_ns_t_a && rr->type != rk_ns_t_aaaa) { continue; } - /* verify we actually have a A record here */ - if (!rr->u.a) { + /* verify we actually have a record here */ + if (!rr->u.data) { continue; } @@ -255,6 +254,8 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) first = true; for (i=0; i < addrs_valid; i++) { uint16_t port; + char addrstr[INET6_ADDRSTRLEN]; + if (!addrs_rr[i]) { continue; } @@ -266,9 +267,13 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) port = state->port; } - addrs = talloc_asprintf_append_buffer(addrs, "%s%s:%u/%s", + if (!print_sockaddr_len(addrstr, sizeof(addrstr), (struct sockaddr *)addrs_rr[i]->u.data, addrs_rr[i]->size)) { + continue; + } + + addrs = talloc_asprintf_append_buffer(addrs, "%s%s@%u/%s", first?"":",", - inet_ntoa(*addrs_rr[i]->u.a), + addrstr, port, addrs_rr[i]->domain); if (!addrs) { @@ -305,7 +310,6 @@ static void run_child_getaddrinfo(struct dns_ex_state *state, int fd) ZERO_STRUCT(hints); hints.ai_socktype = SOCK_STREAM; - hints.ai_family = AF_INET;/* TODO: add AF_INET6 support */ hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICSERV; ret = getaddrinfo(state->name.name, "0", &hints, &res_list); @@ -333,16 +337,13 @@ static void run_child_getaddrinfo(struct dns_ex_state *state, int fd) } first = true; for (res = res_list; res; res = res->ai_next) { - struct sockaddr_in *in; - - if (res->ai_family != AF_INET) { + char addrstr[INET6_ADDRSTRLEN]; + if (!print_sockaddr_len(addrstr, sizeof(addrstr), (struct sockaddr *)res->ai_addr, res->ai_addrlen)) { continue; } - in = (struct sockaddr_in *)res->ai_addr; - - addrs = talloc_asprintf_append_buffer(addrs, "%s%s:%u/%s", + addrs = talloc_asprintf_append_buffer(addrs, "%s%s@%u/%s", first?"":",", - inet_ntoa(in->sin_addr), + addrstr, state->port, state->name.name); if (!addrs) { @@ -424,7 +425,7 @@ static void pipe_handler(struct tevent_context *ev, struct tevent_fd *fde, for (i=0; i < num_addrs; i++) { uint32_t port = 0; - char *p = strrchr(addrs[i], ':'); + char *p = strrchr(addrs[i], '@'); char *n; if (!p) { @@ -444,8 +445,7 @@ static void pipe_handler(struct tevent_context *ev, struct tevent_fd *fde, *n = '\0'; n++; - if (strcmp(addrs[i], "0.0.0.0") == 0 || - inet_addr(addrs[i]) == INADDR_NONE) { + if (strcmp(addrs[i], "0.0.0.0") == 0) { composite_error(c, NT_STATUS_OBJECT_NAME_NOT_FOUND); return; } @@ -455,7 +455,7 @@ static void pipe_handler(struct tevent_context *ev, struct tevent_fd *fde, return; } state->addrs[i] = socket_address_from_strings(state->addrs, - "ipv4", + "ip", addrs[i], port); if (composite_nomem(state->addrs[i], c)) return; -- cgit From d8e2302330db1b4d1c5b29608823d46a03fd087a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 6 Jun 2011 10:13:20 +1000 Subject: s4-ipv6: allow for IPv6 in resolver top level calls --- source4/libcli/resolve/resolve.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/resolve.c b/source4/libcli/resolve/resolve.c index ef61c38f79..b5930aade1 100644 --- a/source4/libcli/resolve/resolve.c +++ b/source4/libcli/resolve/resolve.c @@ -171,12 +171,10 @@ struct composite_context *resolve_name_all_send(struct resolve_context *ctx, if (is_ipaddress(state->name.name) || strcasecmp(state->name.name, "localhost") == 0) { - struct in_addr ip = interpret_addr2(state->name.name); - state->addrs = talloc_array(state, struct socket_address *, 2); if (composite_nomem(state->addrs, c)) return c; - state->addrs[0] = socket_address_from_strings(state->addrs, "ipv4", - inet_ntoa(ip), 0); + state->addrs[0] = socket_address_from_strings(state->addrs, "ip", + state->name.name, 0); if (composite_nomem(state->addrs[0], c)) return c; state->addrs[1] = NULL; state->names = talloc_array(state, char *, 2); -- cgit From 907cdb5de7f16a2540299aeba211bf2a5ae6fafe Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 6 Jun 2011 14:58:28 +1000 Subject: s4-modules Remove lp_ctx from init functions that no longer need it Now that we don't allow the smb.conf to change the modules dir, many functions that simply load modules or initialise a subsytem that may load modules no longer need an lp_ctx. Andrew Bartlett --- source4/libcli/ldap/ldap_bind.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/ldap/ldap_bind.c b/source4/libcli/ldap/ldap_bind.c index 65659794c5..f5cf25ec3f 100644 --- a/source4/libcli/ldap/ldap_bind.c +++ b/source4/libcli/ldap/ldap_bind.c @@ -221,7 +221,7 @@ _PUBLIC_ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn, NULL }; - gensec_init(lp_ctx); + gensec_init(); status = gensec_client_start(conn, &conn->gensec, conn->event.event_ctx, -- cgit From 64380ff050c77b2b67c0fac4ada8650e834c4b4a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 7 Jun 2011 12:35:10 +1000 Subject: s4-ipv6: fixed DNS handling with new IPv6 code --- source4/libcli/resolve/dns_ex.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 069ba823c2..cb2d2c3d2c 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -267,7 +267,22 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) port = state->port; } - if (!print_sockaddr_len(addrstr, sizeof(addrstr), (struct sockaddr *)addrs_rr[i]->u.data, addrs_rr[i]->size)) { + switch (rr->type) { + case rk_ns_t_a: + if (inet_ntop(AF_INET, addrs_rr[i]->u.a, + addrstr, sizeof(addrstr)) == NULL) { + continue; + } + break; +#ifdef HAVE_IPV6 + case rk_ns_t_aaaa: + if (inet_ntop(AF_INET6, (struct in6_addr *)addrs_rr[i]->u.data, + addrstr, sizeof(addrstr)) == NULL) { + continue; + } + break; +#endif + default: continue; } -- cgit From 285293c8b5d85383aa5af9968dc73fba5beb9de0 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 7 Jun 2011 14:10:38 +1000 Subject: s4-ipv6: fixed a crash in the IPv6 DNS code --- source4/libcli/resolve/dns_ex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index cb2d2c3d2c..1d56a4b4d5 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -267,7 +267,7 @@ static void run_child_dns_lookup(struct dns_ex_state *state, int fd) port = state->port; } - switch (rr->type) { + switch (addrs_rr[i]->type) { case rk_ns_t_a: if (inet_ntop(AF_INET, addrs_rr[i]->u.a, addrstr, sizeof(addrstr)) == NULL) { -- cgit From 97af3586567ff7ad4f22e083d32e5cfa2ebbb96e Mon Sep 17 00:00:00 2001 From: Matthias Dieter Wallnöfer Date: Sat, 11 Jun 2011 16:55:16 +0200 Subject: s4:libcli/raw/raw*.c - add unhandled enum values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Jelmer Autobuild-User: Matthias Dieter Wallnöfer Autobuild-Date: Sat Jun 11 18:46:13 CEST 2011 on sn-devel-104 --- source4/libcli/raw/rawfile.c | 1 + source4/libcli/raw/rawsetfileinfo.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/raw/rawfile.c b/source4/libcli/raw/rawfile.c index 626067a2a2..1cacaab5cf 100644 --- a/source4/libcli/raw/rawfile.c +++ b/source4/libcli/raw/rawfile.c @@ -904,6 +904,7 @@ struct smbcli_request *smb_raw_lock_send(struct smbcli_tree *tree, union smb_loc break; } case RAW_LOCK_SMB2: + case RAW_LOCK_SMB2_BREAK: return NULL; } diff --git a/source4/libcli/raw/rawsetfileinfo.c b/source4/libcli/raw/rawsetfileinfo.c index 6ad3e9ee8d..ff36d50e94 100644 --- a/source4/libcli/raw/rawsetfileinfo.c +++ b/source4/libcli/raw/rawsetfileinfo.c @@ -262,11 +262,11 @@ static bool smb_raw_setinfo_backend(struct smbcli_tree *tree, return smb_raw_setfileinfo_passthru(mem_ctx, parms->generic.level, parms, blob); - /* Unhandled levels */ - + /* Unhandled levels */ case RAW_SFILEINFO_UNIX_LINK: case RAW_SFILEINFO_UNIX_HLINK: case RAW_SFILEINFO_RENAME_INFORMATION_SMB2: + case RAW_SFILEINFO_LINK_INFORMATION: break; } -- cgit From 8d12649b3144daa5e8eb141967a753354abdd330 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sun, 1 May 2011 18:10:20 +0200 Subject: s4:libcli/smb_composite: convert smb2_composite_setpathinfo_send/rev to tevent_req metze --- source4/libcli/smb_composite/smb2.c | 184 +++++++++++++++++++++++++----------- source4/libcli/wscript_build | 4 +- 2 files changed, 129 insertions(+), 59 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index c2985f2ae8..1f8ec834ca 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -25,6 +25,8 @@ #include "includes.h" +#include +#include "lib/util/tevent_ntstatus.h" #include "libcli/raw/libcliraw.h" #include "libcli/raw/raw_proto.h" #include "libcli/composite/composite.h" @@ -264,107 +266,145 @@ NTSTATUS smb2_composite_rmdir(struct smb2_tree *tree, struct smb_rmdir *io) return composite_wait_free(c); } +struct smb2_composite_setpathinfo_state { + struct smb2_tree *tree; + union smb_setfileinfo io; + NTSTATUS set_status; + struct smb2_create cr; + struct smb2_close cl; +}; + static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req); /* composite SMB2 setpathinfo call */ -struct composite_context *smb2_composite_setpathinfo_send(struct smb2_tree *tree, - union smb_setfileinfo *io) +struct tevent_req *smb2_composite_setpathinfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct smb2_tree *tree, + const union smb_setfileinfo *io) { - struct composite_context *ctx; - struct smb2_create create_parm; + struct tevent_req *req; + struct smb2_composite_setpathinfo_state *state; struct smb2_request *smb2req; - union smb_setfileinfo *io2; - ctx = composite_create(tree, tree->session->transport->socket->event.ctx); - if (ctx == NULL) return NULL; + req = tevent_req_create(mem_ctx, &state, + struct smb2_composite_setpathinfo_state); + if (req == NULL) { + return NULL; + } - ZERO_STRUCT(create_parm); - create_parm.in.desired_access = SEC_FLAG_MAXIMUM_ALLOWED; - create_parm.in.create_disposition = NTCREATEX_DISP_OPEN; - create_parm.in.share_access = + state->tree = tree; + state->io = *io; + + state->cr.in.desired_access = SEC_FLAG_MAXIMUM_ALLOWED; + state->cr.in.create_disposition = NTCREATEX_DISP_OPEN; + state->cr.in.share_access = NTCREATEX_SHARE_ACCESS_DELETE| NTCREATEX_SHARE_ACCESS_READ| NTCREATEX_SHARE_ACCESS_WRITE; - create_parm.in.create_options = 0; - create_parm.in.fname = io->generic.in.file.path; - if (create_parm.in.fname[0] == '\\') { - create_parm.in.fname++; + state->cr.in.create_options = 0; + state->cr.in.fname = state->io.generic.in.file.path; + if (state->cr.in.fname[0] == '\\') { + state->cr.in.fname++; } - smb2req = smb2_create_send(tree, &create_parm); - - io2 = talloc(ctx, union smb_setfileinfo); - if (composite_nomem(io2, ctx)) { - return ctx; + smb2req = smb2_create_send(tree, &state->cr); + if (tevent_req_nomem(smb2req, req)) { + return tevent_req_post(req, ev); } - *io2 = *io; + smb2req->async.fn = smb2_composite_setpathinfo_create_done; + smb2req->async.private_data = req; - ctx->private_data = io2; - - composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_create_done, ctx); - return ctx; + return req; } static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req); static void smb2_composite_setpathinfo_create_done(struct smb2_request *smb2req) { - struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, - struct composite_context); - struct smb2_tree *tree = smb2req->tree; - struct smb2_create create_parm; + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_composite_setpathinfo_state *state = + tevent_req_data(req, + struct smb2_composite_setpathinfo_state); NTSTATUS status; - union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, - union smb_setfileinfo); - status = smb2_create_recv(smb2req, ctx, &create_parm); - if (!NT_STATUS_IS_OK(status)) { - composite_error(ctx, status); + status = smb2_create_recv(smb2req, state, &state->cr); + if (tevent_req_nterror(req, status)) { return; } - io2->generic.in.file.handle = create_parm.out.file.handle; + state->io.generic.in.file.handle = state->cr.out.file.handle; - smb2req = smb2_setinfo_file_send(tree, io2); - composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_setinfo_done, ctx); + smb2req = smb2_setinfo_file_send(state->tree, &state->io); + if (tevent_req_nomem(smb2req, req)) { + return; + } + smb2req->async.fn = smb2_composite_setpathinfo_setinfo_done; + smb2req->async.private_data = req; } static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req); static void smb2_composite_setpathinfo_setinfo_done(struct smb2_request *smb2req) { - struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, - struct composite_context); - struct smb2_tree *tree = smb2req->tree; - struct smb2_close close_parm; + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_composite_setpathinfo_state *state = + tevent_req_data(req, + struct smb2_composite_setpathinfo_state); NTSTATUS status; - union smb_setfileinfo *io2 = talloc_get_type(ctx->private_data, - union smb_setfileinfo); status = smb2_setinfo_recv(smb2req); - if (!NT_STATUS_IS_OK(status)) { - composite_error(ctx, status); + state->set_status = status; + + state->cl.in.file.handle = state->io.generic.in.file.handle; + + smb2req = smb2_close_send(state->tree, &state->cl); + if (tevent_req_nomem(smb2req, req)) { return; } + smb2req->async.fn = smb2_composite_setpathinfo_close_done; + smb2req->async.private_data = req; +} - ZERO_STRUCT(close_parm); - close_parm.in.file.handle = io2->generic.in.file.handle; +static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) +{ + struct tevent_req *req = + talloc_get_type_abort(smb2req->async.private_data, + struct tevent_req); + struct smb2_composite_setpathinfo_state *state = + tevent_req_data(req, + struct smb2_composite_setpathinfo_state); + NTSTATUS status; + + status = smb2_close_recv(smb2req, &state->cl); + + if (tevent_req_nterror(req, state->set_status)) { + return; + } - smb2req = smb2_close_send(tree, &close_parm); - composite_continue_smb2(ctx, smb2req, smb2_composite_setpathinfo_close_done, ctx); + if (tevent_req_nterror(req, status)) { + return; + } + + tevent_req_done(req); } -static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) +NTSTATUS smb2_composite_setpathinfo_recv(struct tevent_req *req) { - struct composite_context *ctx = talloc_get_type(smb2req->async.private_data, - struct composite_context); NTSTATUS status; - struct smb2_close close_parm; - status = smb2_close_recv(smb2req, &close_parm); - composite_error(ctx, status); + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + tevent_req_received(req); + return NT_STATUS_OK; } /* @@ -372,6 +412,36 @@ static void smb2_composite_setpathinfo_close_done(struct smb2_request *smb2req) */ NTSTATUS smb2_composite_setpathinfo(struct smb2_tree *tree, union smb_setfileinfo *io) { - struct composite_context *c = smb2_composite_setpathinfo_send(tree, io); - return composite_wait_free(c); + struct tevent_req *subreq; + NTSTATUS status; + bool ok; + TALLOC_CTX *frame = talloc_stackframe(); + struct tevent_context *ev = tree->session->transport->socket->event.ctx; + + if (frame == NULL) { + return NT_STATUS_NO_MEMORY; + } + + subreq = smb2_composite_setpathinfo_send(frame, ev, tree, io); + if (subreq == NULL) { + TALLOC_FREE(frame); + return NT_STATUS_NO_MEMORY; + } + + ok = tevent_req_poll(subreq, ev); + if (!ok) { + status = map_nt_error_from_unix(errno); + TALLOC_FREE(frame); + return status; + } + + status = smb2_composite_setpathinfo_recv(subreq); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + TALLOC_FREE(frame); + return NT_STATUS_OK; } diff --git a/source4/libcli/wscript_build b/source4/libcli/wscript_build index 3d36925195..d9e85d610e 100644 --- a/source4/libcli/wscript_build +++ b/source4/libcli/wscript_build @@ -36,8 +36,8 @@ bld.SAMBA_SUBSYSTEM('LIBCLI_COMPOSITE', bld.SAMBA_SUBSYSTEM('LIBCLI_SMB_COMPOSITE', source='smb_composite/loadfile.c smb_composite/savefile.c smb_composite/connect.c smb_composite/sesssetup.c smb_composite/fetchfile.c smb_composite/appendacl.c smb_composite/fsinfo.c smb_composite/smb2.c', autoproto='smb_composite/proto.h', - deps='LIBCLI_SMB2', - public_deps='LIBCLI_COMPOSITE credentials gensec LIBCLI_RESOLVE' + deps='LIBCLI_SMB2 UTIL_TEVENT', + public_deps='LIBCLI_COMPOSITE credentials gensec LIBCLI_RESOLVE tevent' ) -- cgit From 1233ba7bf3d2dfd9a84eb52d601e589411c55185 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 16 Jun 2011 13:00:09 +1000 Subject: libclu/util: Move get_friendly_nt_error_msg() in common. Andrew Bartlett Signed-off-by: Andrew Tridgell --- source4/libcli/util/nterr.c | 20 -------------------- 1 file changed, 20 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c index ea8c0fcd35..1532b5b787 100644 --- a/source4/libcli/util/nterr.c +++ b/source4/libcli/util/nterr.c @@ -52,23 +52,3 @@ const char *nt_errstr(NTSTATUS nt_code) return msg; } - -/************************************************************************ - Print friendler version fo NT error code - ***********************************************************************/ - -const char *get_friendly_nt_error_msg(NTSTATUS nt_code) -{ - int idx = 0; - - while (nt_err_desc[idx].nt_errstr != NULL) { - if (NT_STATUS_V(nt_err_desc[idx].nt_errcode) == NT_STATUS_V(nt_code)) { - return nt_err_desc[idx].nt_errstr; - } - idx++; - } - - /* fall back to NT_STATUS_XXX string */ - - return nt_errstr(nt_code); -} -- cgit From e645675aa46e945da5293b54a1bd368599b7b5a7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 17 Jun 2011 14:40:26 +1000 Subject: s4-util: removed the s4 nterr.c this is now in common code Pair-Programmed-With: Andrew Bartlett --- source4/libcli/util/nterr.c | 54 -------------------------------------------- source4/libcli/wscript_build | 2 +- 2 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 source4/libcli/util/nterr.c (limited to 'source4/libcli') diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c deleted file mode 100644 index 1532b5b787..0000000000 --- a/source4/libcli/util/nterr.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * RPC Pipe client / server routines - * Copyright (C) Luke Kenneth Casson Leighton 1997-2001. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - -/* NT error codes. please read nterr.h */ - -#include "includes.h" -#include "../libcli/ldap/ldap_errors.h" -#undef strcasecmp - -extern const nt_err_code_struct nt_errs[]; -extern const nt_err_code_struct nt_err_desc[]; - -/***************************************************************************** - Returns an NT error message. not amazingly helpful, but better than a number. - *****************************************************************************/ - -const char *nt_errstr(NTSTATUS nt_code) -{ - static char msg[40]; - int idx = 0; - - while (nt_errs[idx].nt_errstr != NULL) { - if (NT_STATUS_V(nt_errs[idx].nt_errcode) == - NT_STATUS_V(nt_code)) { - return nt_errs[idx].nt_errstr; - } - idx++; - } - - if (NT_STATUS_IS_LDAP(nt_code)) { - slprintf(msg, sizeof(msg), "LDAP code %u", NT_STATUS_LDAP_CODE(nt_code)); - return msg; - } - - slprintf(msg, sizeof(msg), "NT code 0x%08x", NT_STATUS_V(nt_code)); - - return msg; -} diff --git a/source4/libcli/wscript_build b/source4/libcli/wscript_build index d9e85d610e..02bb3b8d36 100644 --- a/source4/libcli/wscript_build +++ b/source4/libcli/wscript_build @@ -4,7 +4,7 @@ bld.RECURSE('ldap') bld.RECURSE('wbclient') bld.SAMBA_LIBRARY('errors', - source='util/errormap.c util/nterr.c', + source='util/errormap.c', public_headers='../../libcli/util/error.h ../../libcli/util/ntstatus.h ../../libcli/util/doserr.h ../../libcli/util/werror.h', header_path='core', deps='talloc LIBCLI_ERRORS', -- cgit From 4162c7b74aa94ee77ef47f0abae058b80eca6e38 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 17 Jun 2011 16:06:34 +1000 Subject: errors: reorder error codes for easier s3/s4 comparison --- source4/libcli/util/errormap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 23432ca22f..a264a25950 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -599,8 +599,11 @@ static const struct { { EMSGSIZE, NT_STATUS_INVALID_BUFFER_SIZE }, { ENOMEM, NT_STATUS_NO_MEMORY }, { EISDIR, NT_STATUS_FILE_IS_A_DIRECTORY}, +#ifdef EPIPE { EPIPE, NT_STATUS_CONNECTION_DISCONNECTED }, +#endif { EBUSY, NT_STATUS_SHARING_VIOLATION }, + { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE }, #ifdef EOPNOTSUPP { EOPNOTSUPP, NT_STATUS_NOT_SUPPORTED}, #endif @@ -664,9 +667,6 @@ static const struct { #ifdef ECANCELED { ECANCELED, NT_STATUS_CANCELLED}, #endif -#ifdef ENOSYS - { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE }, -#endif #ifdef ENOTSUP { ENOTSUP, NT_STATUS_NOT_SUPPORTED}, #endif -- cgit From acc95354008ff11be5e59f74481228f04869095c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 17 Jun 2011 17:07:26 +1000 Subject: s4-errors: Import error maps from the source3/ unix -> ntstatus mapping We need to syncronise these mappings, as the duplication of this symobol in the build means that either may be called based only on library link orders. Andrew Bartlett Autobuild-User: Andrew Bartlett Autobuild-Date: Fri Jun 17 10:22:07 CEST 2011 on sn-devel-104 --- source4/libcli/util/errormap.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index a264a25950..6476426d7f 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -606,10 +606,18 @@ static const struct { { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE }, #ifdef EOPNOTSUPP { EOPNOTSUPP, NT_STATUS_NOT_SUPPORTED}, +#endif + { EMLINK, NT_STATUS_TOO_MANY_LINKS }, + { ENOSYS, NT_STATUS_NOT_SUPPORTED }, +#ifdef ELOOP + { ELOOP, NT_STATUS_OBJECT_PATH_NOT_FOUND }, #endif #ifdef ENODATA { ENODATA, NT_STATUS_NOT_FOUND }, #endif +#ifdef EFTYPE + { EFTYPE, NT_STATUS_OBJECT_PATH_NOT_FOUND }, +#endif #ifdef EDQUOT { EDQUOT, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */ #endif @@ -652,6 +660,9 @@ static const struct { #ifdef EAFNOSUPPORT { EAFNOSUPPORT, NT_STATUS_INVALID_PARAMETER_MIX }, #endif +#ifdef ECONNABORTED + { ECONNABORTED, NT_STATUS_CONNECTION_ABORTED}, +#endif #ifdef ECONNRESET { ECONNRESET, NT_STATUS_CONNECTION_RESET}, #endif -- cgit From a63189e9f03fb84206a0c8460c5325815a31d62a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 20 Jun 2011 13:24:38 +1000 Subject: s3-libcli Remove unused error mapping tables The functions which uesed these tables have since moved in common. Andrew Bartlett --- source4/libcli/util/errormap.c | 549 ----------------------------------------- 1 file changed, 549 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 6476426d7f..75b1e8d2fe 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -21,555 +21,6 @@ #include "includes.h" -/* errmap NTSTATUS->Win32 */ -static const struct { - NTSTATUS ntstatus; - WERROR werror; -} ntstatus_to_werror_map[] = { - {NT_STATUS(0x103), W_ERROR(0x3e5)}, - {NT_STATUS(0x105), W_ERROR(0xea)}, - {NT_STATUS(0x106), W_ERROR(0x514)}, - {NT_STATUS(0x107), W_ERROR(0x515)}, - {NT_STATUS(0x10c), W_ERROR(0x3fe)}, - {NT_STATUS(0x10d), W_ERROR(0x516)}, - {NT_STATUS(0x121), W_ERROR(0x2009)}, - {NT_STATUS(0xc0000001), W_ERROR(0x1f)}, - {NT_STATUS(0xc0000002), W_ERROR(0x1)}, - {NT_STATUS(0xc0000003), W_ERROR(0x57)}, - {NT_STATUS(0xc0000004), W_ERROR(0x18)}, - {NT_STATUS(0xc0000005), W_ERROR(0x3e6)}, - {NT_STATUS(0xc0000006), W_ERROR(0x3e7)}, - {NT_STATUS(0xc0000007), W_ERROR(0x5ae)}, - {NT_STATUS(0xc0000008), W_ERROR(0x6)}, - {NT_STATUS(0xc0000009), W_ERROR(0x3e9)}, - {NT_STATUS(0xc000000a), W_ERROR(0xc1)}, - {NT_STATUS(0xc000000b), W_ERROR(0x57)}, - {NT_STATUS(0xc000000d), W_ERROR(0x57)}, - {NT_STATUS(0xc000000e), W_ERROR(0x2)}, - {NT_STATUS(0xc000000f), W_ERROR(0x2)}, - {NT_STATUS(0xc0000010), W_ERROR(0x1)}, - {NT_STATUS(0xc0000011), W_ERROR(0x26)}, - {NT_STATUS(0xc0000012), W_ERROR(0x22)}, - {NT_STATUS(0xc0000013), W_ERROR(0x15)}, - {NT_STATUS(0xc0000014), W_ERROR(0x6f9)}, - {NT_STATUS(0xc0000015), W_ERROR(0x1b)}, - {NT_STATUS(0xc0000016), W_ERROR(0xea)}, - {NT_STATUS(0xc0000017), W_ERROR(0x8)}, - {NT_STATUS(0xc0000018), W_ERROR(0x1e7)}, - {NT_STATUS(0xc0000019), W_ERROR(0x1e7)}, - {NT_STATUS(0xc000001a), W_ERROR(0x57)}, - {NT_STATUS(0xc000001b), W_ERROR(0x57)}, - {NT_STATUS(0xc000001c), W_ERROR(0x1)}, - {NT_STATUS(0xc000001d), W_ERROR(0xc000001d)}, - {NT_STATUS(0xc000001e), W_ERROR(0x5)}, - {NT_STATUS(0xc000001f), W_ERROR(0x5)}, - {NT_STATUS(0xc0000020), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000021), W_ERROR(0x5)}, - {NT_STATUS(0xc0000022), W_ERROR(0x5)}, - {NT_STATUS(0xc0000023), W_ERROR(0x7a)}, - {NT_STATUS(0xc0000024), W_ERROR(0x6)}, - {NT_STATUS(0xc0000025), W_ERROR(0xc0000025)}, - {NT_STATUS(0xc0000026), W_ERROR(0xc0000026)}, - {NT_STATUS(0xc000002a), W_ERROR(0x9e)}, - {NT_STATUS(0xc000002b), W_ERROR(0xc000002b)}, - {NT_STATUS(0xc000002c), W_ERROR(0x1e7)}, - {NT_STATUS(0xc000002d), W_ERROR(0x1e7)}, - {NT_STATUS(0xc0000030), W_ERROR(0x57)}, - {NT_STATUS(0xc0000032), W_ERROR(0x571)}, - {NT_STATUS(0xc0000033), W_ERROR(0x7b)}, - {NT_STATUS(0xc0000034), W_ERROR(0x2)}, - {NT_STATUS(0xc0000035), W_ERROR(0xb7)}, - {NT_STATUS(0xc0000037), W_ERROR(0x6)}, - {NT_STATUS(0xc0000039), W_ERROR(0xa1)}, - {NT_STATUS(0xc000003a), W_ERROR(0x3)}, - {NT_STATUS(0xc000003b), W_ERROR(0xa1)}, - {NT_STATUS(0xc000003c), W_ERROR(0x45d)}, - {NT_STATUS(0xc000003d), W_ERROR(0x45d)}, - {NT_STATUS(0xc000003e), W_ERROR(0x17)}, - {NT_STATUS(0xc000003f), W_ERROR(0x17)}, - {NT_STATUS(0xc0000040), W_ERROR(0x8)}, - {NT_STATUS(0xc0000041), W_ERROR(0x5)}, - {NT_STATUS(0xc0000042), W_ERROR(0x6)}, - {NT_STATUS(0xc0000043), W_ERROR(0x20)}, - {NT_STATUS(0xc0000044), W_ERROR(0x718)}, - {NT_STATUS(0xc0000045), W_ERROR(0x57)}, - {NT_STATUS(0xc0000046), W_ERROR(0x120)}, - {NT_STATUS(0xc0000047), W_ERROR(0x12a)}, - {NT_STATUS(0xc0000048), W_ERROR(0x57)}, - {NT_STATUS(0xc0000049), W_ERROR(0x57)}, - {NT_STATUS(0xc000004a), W_ERROR(0x9c)}, - {NT_STATUS(0xc000004b), W_ERROR(0x5)}, - {NT_STATUS(0xc000004c), W_ERROR(0x57)}, - {NT_STATUS(0xc000004d), W_ERROR(0x57)}, - {NT_STATUS(0xc000004e), W_ERROR(0x57)}, - {NT_STATUS(0xc000004f), W_ERROR(0x11a)}, - {NT_STATUS(0xc0000050), W_ERROR(0xff)}, - {NT_STATUS(0xc0000051), W_ERROR(0x570)}, - {NT_STATUS(0xc0000052), W_ERROR(0x570)}, - {NT_STATUS(0xc0000053), W_ERROR(0x570)}, - {NT_STATUS(0xc0000054), W_ERROR(0x21)}, - {NT_STATUS(0xc0000055), W_ERROR(0x21)}, - {NT_STATUS(0xc0000056), W_ERROR(0x5)}, - {NT_STATUS(0xc0000057), W_ERROR(0x32)}, - {NT_STATUS(0xc0000058), W_ERROR(0x519)}, - {NT_STATUS(0xc0000059), W_ERROR(0x51a)}, - {NT_STATUS(0xc000005a), W_ERROR(0x51b)}, - {NT_STATUS(0xc000005b), W_ERROR(0x51c)}, - {NT_STATUS(0xc000005c), W_ERROR(0x51d)}, - {NT_STATUS(0xc000005d), W_ERROR(0x51e)}, - {NT_STATUS(0xc000005e), W_ERROR(0x51f)}, - {NT_STATUS(0xc000005f), W_ERROR(0x520)}, - {NT_STATUS(0xc0000060), W_ERROR(0x521)}, - {NT_STATUS(0xc0000061), W_ERROR(0x522)}, - {NT_STATUS(0xc0000062), W_ERROR(0x523)}, - {NT_STATUS(0xc0000063), W_ERROR(0x524)}, - {NT_STATUS(0xc0000064), W_ERROR(0x525)}, - {NT_STATUS(0xc0000065), W_ERROR(0x526)}, - {NT_STATUS(0xc0000066), W_ERROR(0x527)}, - {NT_STATUS(0xc0000067), W_ERROR(0x528)}, - {NT_STATUS(0xc0000068), W_ERROR(0x529)}, - {NT_STATUS(0xc0000069), W_ERROR(0x52a)}, - {NT_STATUS(0xc000006a), W_ERROR(0x56)}, - {NT_STATUS(0xc000006b), W_ERROR(0x52c)}, - {NT_STATUS(0xc000006c), W_ERROR(0x52d)}, - {NT_STATUS(0xc000006d), W_ERROR(0x52e)}, - {NT_STATUS(0xc000006e), W_ERROR(0x52f)}, - {NT_STATUS(0xc000006f), W_ERROR(0x530)}, - {NT_STATUS(0xc0000070), W_ERROR(0x531)}, - {NT_STATUS(0xc0000071), W_ERROR(0x532)}, - {NT_STATUS(0xc0000072), W_ERROR(0x533)}, - {NT_STATUS(0xc0000073), W_ERROR(0x534)}, - {NT_STATUS(0xc0000074), W_ERROR(0x535)}, - {NT_STATUS(0xc0000075), W_ERROR(0x536)}, - {NT_STATUS(0xc0000076), W_ERROR(0x537)}, - {NT_STATUS(0xc0000077), W_ERROR(0x538)}, - {NT_STATUS(0xc0000078), W_ERROR(0x539)}, - {NT_STATUS(0xc0000079), W_ERROR(0x53a)}, - {NT_STATUS(0xc000007a), W_ERROR(0x7f)}, - {NT_STATUS(0xc000007b), W_ERROR(0xc1)}, - {NT_STATUS(0xc000007c), W_ERROR(0x3f0)}, - {NT_STATUS(0xc000007d), W_ERROR(0x53c)}, - {NT_STATUS(0xc000007e), W_ERROR(0x9e)}, - {NT_STATUS(0xc000007f), W_ERROR(0x70)}, - {NT_STATUS(0xc0000080), W_ERROR(0x53d)}, - {NT_STATUS(0xc0000081), W_ERROR(0x53e)}, - {NT_STATUS(0xc0000082), W_ERROR(0x44)}, - {NT_STATUS(0xc0000083), W_ERROR(0x103)}, - {NT_STATUS(0xc0000084), W_ERROR(0x53f)}, - {NT_STATUS(0xc0000085), W_ERROR(0x103)}, - {NT_STATUS(0xc0000086), W_ERROR(0x9a)}, - {NT_STATUS(0xc0000087), W_ERROR(0xe)}, - {NT_STATUS(0xc0000088), W_ERROR(0x1e7)}, - {NT_STATUS(0xc0000089), W_ERROR(0x714)}, - {NT_STATUS(0xc000008a), W_ERROR(0x715)}, - {NT_STATUS(0xc000008b), W_ERROR(0x716)}, - {NT_STATUS(0xc000008c), W_ERROR(0xc000008c)}, - {NT_STATUS(0xc000008d), W_ERROR(0xc000008d)}, - {NT_STATUS(0xc000008e), W_ERROR(0xc000008e)}, - {NT_STATUS(0xc000008f), W_ERROR(0xc000008f)}, - {NT_STATUS(0xc0000090), W_ERROR(0xc0000090)}, - {NT_STATUS(0xc0000091), W_ERROR(0xc0000091)}, - {NT_STATUS(0xc0000092), W_ERROR(0xc0000092)}, - {NT_STATUS(0xc0000093), W_ERROR(0xc0000093)}, - {NT_STATUS(0xc0000094), W_ERROR(0xc0000094)}, - {NT_STATUS(0xc0000095), W_ERROR(0x216)}, - {NT_STATUS(0xc0000096), W_ERROR(0xc0000096)}, - {NT_STATUS(0xc0000097), W_ERROR(0x8)}, - {NT_STATUS(0xc0000098), W_ERROR(0x3ee)}, - {NT_STATUS(0xc0000099), W_ERROR(0x540)}, - {NT_STATUS(0xc000009a), W_ERROR(0x5aa)}, - {NT_STATUS(0xc000009b), W_ERROR(0x3)}, - {NT_STATUS(0xc000009c), W_ERROR(0x17)}, - {NT_STATUS(0xc000009d), W_ERROR(0x48f)}, - {NT_STATUS(0xc000009e), W_ERROR(0x15)}, - {NT_STATUS(0xc000009f), W_ERROR(0x1e7)}, - {NT_STATUS(0xc00000a0), W_ERROR(0x1e7)}, - {NT_STATUS(0xc00000a1), W_ERROR(0x5ad)}, - {NT_STATUS(0xc00000a2), W_ERROR(0x13)}, - {NT_STATUS(0xc00000a3), W_ERROR(0x15)}, - {NT_STATUS(0xc00000a4), W_ERROR(0x541)}, - {NT_STATUS(0xc00000a5), W_ERROR(0x542)}, - {NT_STATUS(0xc00000a6), W_ERROR(0x543)}, - {NT_STATUS(0xc00000a7), W_ERROR(0x544)}, - {NT_STATUS(0xc00000a8), W_ERROR(0x545)}, - {NT_STATUS(0xc00000a9), W_ERROR(0x57)}, - {NT_STATUS(0xc00000ab), W_ERROR(0xe7)}, - {NT_STATUS(0xc00000ac), W_ERROR(0xe7)}, - {NT_STATUS(0xc00000ad), W_ERROR(0xe6)}, - {NT_STATUS(0xc00000ae), W_ERROR(0xe7)}, - {NT_STATUS(0xc00000af), W_ERROR(0x1)}, - {NT_STATUS(0xc00000b0), W_ERROR(0xe9)}, - {NT_STATUS(0xc00000b1), W_ERROR(0xe8)}, - {NT_STATUS(0xc00000b2), W_ERROR(0x217)}, - {NT_STATUS(0xc00000b3), W_ERROR(0x218)}, - {NT_STATUS(0xc00000b4), W_ERROR(0xe6)}, - {NT_STATUS(0xc00000b5), W_ERROR(0x79)}, - {NT_STATUS(0xc00000b6), W_ERROR(0x26)}, - {NT_STATUS(0xc00000ba), W_ERROR(0x5)}, - {NT_STATUS(0xc00000bb), W_ERROR(0x32)}, - {NT_STATUS(0xc00000bc), W_ERROR(0x33)}, - {NT_STATUS(0xc00000bd), W_ERROR(0x34)}, - {NT_STATUS(0xc00000be), W_ERROR(0x35)}, - {NT_STATUS(0xc00000bf), W_ERROR(0x36)}, - {NT_STATUS(0xc00000c0), W_ERROR(0x37)}, - {NT_STATUS(0xc00000c1), W_ERROR(0x38)}, - {NT_STATUS(0xc00000c2), W_ERROR(0x39)}, - {NT_STATUS(0xc00000c3), W_ERROR(0x3a)}, - {NT_STATUS(0xc00000c4), W_ERROR(0x3b)}, - {NT_STATUS(0xc00000c5), W_ERROR(0x3c)}, - {NT_STATUS(0xc00000c6), W_ERROR(0x3d)}, - {NT_STATUS(0xc00000c7), W_ERROR(0x3e)}, - {NT_STATUS(0xc00000c8), W_ERROR(0x3f)}, - {NT_STATUS(0xc00000c9), W_ERROR(0x40)}, - {NT_STATUS(0xc00000ca), W_ERROR(0x41)}, - {NT_STATUS(0xc00000cb), W_ERROR(0x42)}, - {NT_STATUS(0xc00000cc), W_ERROR(0x43)}, - {NT_STATUS(0xc00000cd), W_ERROR(0x44)}, - {NT_STATUS(0xc00000ce), W_ERROR(0x45)}, - {NT_STATUS(0xc00000cf), W_ERROR(0x46)}, - {NT_STATUS(0xc00000d0), W_ERROR(0x47)}, - {NT_STATUS(0xc00000d1), W_ERROR(0x48)}, - {NT_STATUS(0xc00000d2), W_ERROR(0x58)}, - {NT_STATUS(0xc00000d4), W_ERROR(0x11)}, - {NT_STATUS(0xc00000d5), W_ERROR(0x5)}, - {NT_STATUS(0xc00000d6), W_ERROR(0xf0)}, - {NT_STATUS(0xc00000d7), W_ERROR(0x546)}, - {NT_STATUS(0xc00000d9), W_ERROR(0xe8)}, - {NT_STATUS(0xc00000da), W_ERROR(0x547)}, - {NT_STATUS(0xc00000dc), W_ERROR(0x548)}, - {NT_STATUS(0xc00000dd), W_ERROR(0x549)}, - {NT_STATUS(0xc00000de), W_ERROR(0x54a)}, - {NT_STATUS(0xc00000df), W_ERROR(0x54b)}, - {NT_STATUS(0xc00000e0), W_ERROR(0x54c)}, - {NT_STATUS(0xc00000e1), W_ERROR(0x54d)}, - {NT_STATUS(0xc00000e2), W_ERROR(0x12c)}, - {NT_STATUS(0xc00000e3), W_ERROR(0x12d)}, - {NT_STATUS(0xc00000e4), W_ERROR(0x54e)}, - {NT_STATUS(0xc00000e5), W_ERROR(0x54f)}, - {NT_STATUS(0xc00000e6), W_ERROR(0x550)}, - {NT_STATUS(0xc00000e7), W_ERROR(0x551)}, - {NT_STATUS(0xc00000e8), W_ERROR(0x6f8)}, - {NT_STATUS(0xc00000ed), W_ERROR(0x552)}, - {NT_STATUS(0xc00000ee), W_ERROR(0x553)}, - {NT_STATUS(0xc00000ef), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f0), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f1), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f2), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f3), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f4), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f5), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f6), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f7), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f8), W_ERROR(0x57)}, - {NT_STATUS(0xc00000f9), W_ERROR(0x57)}, - {NT_STATUS(0xc00000fa), W_ERROR(0x57)}, - {NT_STATUS(0xc00000fb), W_ERROR(0x3)}, - {NT_STATUS(0xc00000fd), W_ERROR(0x3e9)}, - {NT_STATUS(0xc00000fe), W_ERROR(0x554)}, - {NT_STATUS(0xc0000100), W_ERROR(0xcb)}, - {NT_STATUS(0xc0000101), W_ERROR(0x91)}, - {NT_STATUS(0xc0000102), W_ERROR(0x570)}, - {NT_STATUS(0xc0000103), W_ERROR(0x10b)}, - {NT_STATUS(0xc0000104), W_ERROR(0x555)}, - {NT_STATUS(0xc0000105), W_ERROR(0x556)}, - {NT_STATUS(0xc0000106), W_ERROR(0xce)}, - {NT_STATUS(0xc0000107), W_ERROR(0x961)}, - {NT_STATUS(0xc0000108), W_ERROR(0x964)}, - {NT_STATUS(0xc000010a), W_ERROR(0x5)}, - {NT_STATUS(0xc000010b), W_ERROR(0x557)}, - {NT_STATUS(0xc000010d), W_ERROR(0x558)}, - {NT_STATUS(0xc000010e), W_ERROR(0x420)}, - {NT_STATUS(0xc0000117), W_ERROR(0x5a4)}, - {NT_STATUS(0xc000011b), W_ERROR(0xc1)}, - {NT_STATUS(0xc000011c), W_ERROR(0x559)}, - {NT_STATUS(0xc000011d), W_ERROR(0x55a)}, - {NT_STATUS(0xc000011e), W_ERROR(0x3ee)}, - {NT_STATUS(0xc000011f), W_ERROR(0x4)}, - {NT_STATUS(0xc0000120), W_ERROR(0x3e3)}, - {NT_STATUS(0xc0000121), W_ERROR(0x5)}, - {NT_STATUS(0xc0000122), W_ERROR(0x4ba)}, - {NT_STATUS(0xc0000123), W_ERROR(0x5)}, - {NT_STATUS(0xc0000124), W_ERROR(0x55b)}, - {NT_STATUS(0xc0000125), W_ERROR(0x55c)}, - {NT_STATUS(0xc0000126), W_ERROR(0x55d)}, - {NT_STATUS(0xc0000127), W_ERROR(0x55e)}, - {NT_STATUS(0xc0000128), W_ERROR(0x6)}, - {NT_STATUS(0xc000012b), W_ERROR(0x55f)}, - {NT_STATUS(0xc000012d), W_ERROR(0x5af)}, - {NT_STATUS(0xc000012e), W_ERROR(0xc1)}, - {NT_STATUS(0xc000012f), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000130), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000131), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000133), W_ERROR(0x576)}, - {NT_STATUS(0xc0000135), W_ERROR(0x7e)}, - {NT_STATUS(0xc0000138), W_ERROR(0xb6)}, - {NT_STATUS(0xc0000139), W_ERROR(0x7f)}, - {NT_STATUS(0xc000013b), W_ERROR(0x40)}, - {NT_STATUS(0xc000013c), W_ERROR(0x40)}, - {NT_STATUS(0xc000013d), W_ERROR(0x33)}, - {NT_STATUS(0xc000013e), W_ERROR(0x3b)}, - {NT_STATUS(0xc000013f), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000140), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000141), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000142), W_ERROR(0x45a)}, - {NT_STATUS(0xc0000148), W_ERROR(0x7c)}, - {NT_STATUS(0xc0000149), W_ERROR(0x56)}, - {NT_STATUS(0xc000014b), W_ERROR(0x6d)}, - {NT_STATUS(0xc000014c), W_ERROR(0x3f1)}, - {NT_STATUS(0xc000014d), W_ERROR(0x3f8)}, - {NT_STATUS(0xc000014f), W_ERROR(0x3ed)}, - {NT_STATUS(0xc0000150), W_ERROR(0x45e)}, - {NT_STATUS(0xc0000151), W_ERROR(0x560)}, - {NT_STATUS(0xc0000152), W_ERROR(0x561)}, - {NT_STATUS(0xc0000153), W_ERROR(0x562)}, - {NT_STATUS(0xc0000154), W_ERROR(0x563)}, - {NT_STATUS(0xc0000155), W_ERROR(0x564)}, - {NT_STATUS(0xc0000156), W_ERROR(0x565)}, - {NT_STATUS(0xc0000157), W_ERROR(0x566)}, - {NT_STATUS(0xc0000158), W_ERROR(0x567)}, - {NT_STATUS(0xc0000159), W_ERROR(0x3ef)}, - {NT_STATUS(0xc000015a), W_ERROR(0x568)}, - {NT_STATUS(0xc000015b), W_ERROR(0x569)}, - {NT_STATUS(0xc000015c), W_ERROR(0x3f9)}, - {NT_STATUS(0xc000015d), W_ERROR(0x56a)}, - {NT_STATUS(0xc000015f), W_ERROR(0x45d)}, - {NT_STATUS(0xc0000162), W_ERROR(0x459)}, - {NT_STATUS(0xc0000165), W_ERROR(0x462)}, - {NT_STATUS(0xc0000166), W_ERROR(0x463)}, - {NT_STATUS(0xc0000167), W_ERROR(0x464)}, - {NT_STATUS(0xc0000168), W_ERROR(0x465)}, - {NT_STATUS(0xc0000169), W_ERROR(0x466)}, - {NT_STATUS(0xc000016a), W_ERROR(0x467)}, - {NT_STATUS(0xc000016b), W_ERROR(0x468)}, - {NT_STATUS(0xc000016c), W_ERROR(0x45f)}, - {NT_STATUS(0xc000016d), W_ERROR(0x45d)}, - {NT_STATUS(0xc0000172), W_ERROR(0x451)}, - {NT_STATUS(0xc0000173), W_ERROR(0x452)}, - {NT_STATUS(0xc0000174), W_ERROR(0x453)}, - {NT_STATUS(0xc0000175), W_ERROR(0x454)}, - {NT_STATUS(0xc0000176), W_ERROR(0x455)}, - {NT_STATUS(0xc0000177), W_ERROR(0x469)}, - {NT_STATUS(0xc0000178), W_ERROR(0x458)}, - {NT_STATUS(0xc000017a), W_ERROR(0x56b)}, - {NT_STATUS(0xc000017b), W_ERROR(0x56c)}, - {NT_STATUS(0xc000017c), W_ERROR(0x3fa)}, - {NT_STATUS(0xc000017d), W_ERROR(0x3fb)}, - {NT_STATUS(0xc000017e), W_ERROR(0x56d)}, - {NT_STATUS(0xc000017f), W_ERROR(0x56e)}, - {NT_STATUS(0xc0000180), W_ERROR(0x3fc)}, - {NT_STATUS(0xc0000181), W_ERROR(0x3fd)}, - {NT_STATUS(0xc0000182), W_ERROR(0x57)}, - {NT_STATUS(0xc0000183), W_ERROR(0x45d)}, - {NT_STATUS(0xc0000184), W_ERROR(0x16)}, - {NT_STATUS(0xc0000185), W_ERROR(0x45d)}, - {NT_STATUS(0xc0000186), W_ERROR(0x45d)}, - {NT_STATUS(0xc0000188), W_ERROR(0x5de)}, - {NT_STATUS(0xc0000189), W_ERROR(0x13)}, - {NT_STATUS(0xc000018a), W_ERROR(0x6fa)}, - {NT_STATUS(0xc000018b), W_ERROR(0x6fb)}, - {NT_STATUS(0xc000018c), W_ERROR(0x6fc)}, - {NT_STATUS(0xc000018d), W_ERROR(0x6fd)}, - {NT_STATUS(0xc000018e), W_ERROR(0x5dc)}, - {NT_STATUS(0xc000018f), W_ERROR(0x5dd)}, - {NT_STATUS(0xc0000190), W_ERROR(0x6fe)}, - {NT_STATUS(0xc0000192), W_ERROR(0x700)}, - {NT_STATUS(0xc0000193), W_ERROR(0x701)}, - {NT_STATUS(0xc0000194), W_ERROR(0x46b)}, - {NT_STATUS(0xc0000195), W_ERROR(0x4c3)}, - {NT_STATUS(0xc0000196), W_ERROR(0x4c4)}, - {NT_STATUS(0xc0000197), W_ERROR(0x5df)}, - {NT_STATUS(0xc0000198), W_ERROR(0x70f)}, - {NT_STATUS(0xc0000199), W_ERROR(0x710)}, - {NT_STATUS(0xc000019a), W_ERROR(0x711)}, - {NT_STATUS(0xc000019b), W_ERROR(0x712)}, - {NT_STATUS(0xc0000202), W_ERROR(0x572)}, - {NT_STATUS(0xc0000203), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000204), W_ERROR(0x717)}, - {NT_STATUS(0xc0000205), W_ERROR(0x46a)}, - {NT_STATUS(0xc0000206), W_ERROR(0x6f8)}, - {NT_STATUS(0xc0000207), W_ERROR(0x4be)}, - {NT_STATUS(0xc0000208), W_ERROR(0x4be)}, - {NT_STATUS(0xc0000209), W_ERROR(0x44)}, - {NT_STATUS(0xc000020a), W_ERROR(0x34)}, - {NT_STATUS(0xc000020b), W_ERROR(0x40)}, - {NT_STATUS(0xc000020c), W_ERROR(0x40)}, - {NT_STATUS(0xc000020d), W_ERROR(0x40)}, - {NT_STATUS(0xc000020e), W_ERROR(0x44)}, - {NT_STATUS(0xc000020f), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000210), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000211), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000212), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000213), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000214), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000215), W_ERROR(0x3b)}, - {NT_STATUS(0xc0000216), W_ERROR(0x32)}, - {NT_STATUS(0xc0000217), W_ERROR(0x32)}, - {NT_STATUS(0xc000021c), W_ERROR(0x17e6)}, - {NT_STATUS(0xc0000220), W_ERROR(0x46c)}, - {NT_STATUS(0xc0000221), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000224), W_ERROR(0x773)}, - {NT_STATUS(0xc0000225), W_ERROR(0x490)}, - {NT_STATUS(0xc000022a), W_ERROR(0xc000022a)}, - {NT_STATUS(0xc000022b), W_ERROR(0xc000022b)}, - {NT_STATUS(0xc000022d), W_ERROR(0x4d5)}, - {NT_STATUS(0xc0000230), W_ERROR(0x492)}, - {NT_STATUS(0xc0000233), W_ERROR(0x774)}, - {NT_STATUS(0xc0000234), W_ERROR(0x775)}, - {NT_STATUS(0xc0000235), W_ERROR(0x6)}, - {NT_STATUS(0xc0000236), W_ERROR(0x4c9)}, - {NT_STATUS(0xc0000237), W_ERROR(0x4ca)}, - {NT_STATUS(0xc0000238), W_ERROR(0x4cb)}, - {NT_STATUS(0xc0000239), W_ERROR(0x4cc)}, - {NT_STATUS(0xc000023a), W_ERROR(0x4cd)}, - {NT_STATUS(0xc000023b), W_ERROR(0x4ce)}, - {NT_STATUS(0xc000023c), W_ERROR(0x4cf)}, - {NT_STATUS(0xc000023d), W_ERROR(0x4d0)}, - {NT_STATUS(0xc000023e), W_ERROR(0x4d1)}, - {NT_STATUS(0xc000023f), W_ERROR(0x4d2)}, - {NT_STATUS(0xc0000240), W_ERROR(0x4d3)}, - {NT_STATUS(0xc0000241), W_ERROR(0x4d4)}, - {NT_STATUS(0xc0000243), W_ERROR(0x4c8)}, - {NT_STATUS(0xc0000246), W_ERROR(0x4d6)}, - {NT_STATUS(0xc0000247), W_ERROR(0x4d7)}, - {NT_STATUS(0xc0000248), W_ERROR(0x4d8)}, - {NT_STATUS(0xc0000249), W_ERROR(0xc1)}, - {NT_STATUS(0xc0000253), W_ERROR(0x54f)}, - {NT_STATUS(0xc0000257), W_ERROR(0x4d0)}, - {NT_STATUS(0xc0000259), W_ERROR(0x573)}, - {NT_STATUS(0xc000025e), W_ERROR(0x422)}, - {NT_STATUS(0xc0000262), W_ERROR(0xb6)}, - {NT_STATUS(0xc0000263), W_ERROR(0x7f)}, - {NT_STATUS(0xc0000264), W_ERROR(0x120)}, - {NT_STATUS(0xc0000265), W_ERROR(0x476)}, - {NT_STATUS(0xc0000267), W_ERROR(0x10fe)}, - {NT_STATUS(0xc000026c), W_ERROR(0x7d1)}, - {NT_STATUS(0xc000026d), W_ERROR(0x4b1)}, - {NT_STATUS(0xc000026e), W_ERROR(0x15)}, - {NT_STATUS(0xc0000272), W_ERROR(0x491)}, - {NT_STATUS(0xc0000275), W_ERROR(0x1126)}, - {NT_STATUS(0xc0000276), W_ERROR(0x1129)}, - {NT_STATUS(0xc0000277), W_ERROR(0x112a)}, - {NT_STATUS(0xc0000278), W_ERROR(0x1128)}, - {NT_STATUS(0xc0000279), W_ERROR(0x780)}, - {NT_STATUS(0xc0000280), W_ERROR(0x781)}, - {NT_STATUS(0xc0000281), W_ERROR(0xa1)}, - {NT_STATUS(0xc0000283), W_ERROR(0x488)}, - {NT_STATUS(0xc0000284), W_ERROR(0x489)}, - {NT_STATUS(0xc0000285), W_ERROR(0x48a)}, - {NT_STATUS(0xc0000286), W_ERROR(0x48b)}, - {NT_STATUS(0xc0000287), W_ERROR(0x48c)}, - {NT_STATUS(0xc000028a), W_ERROR(0x5)}, - {NT_STATUS(0xc000028b), W_ERROR(0x5)}, - {NT_STATUS(0xc000028d), W_ERROR(0x5)}, - {NT_STATUS(0xc000028e), W_ERROR(0x5)}, - {NT_STATUS(0xc000028f), W_ERROR(0x5)}, - {NT_STATUS(0xc0000290), W_ERROR(0x5)}, - {NT_STATUS(0xc0000291), W_ERROR(0x1777)}, - {NT_STATUS(0xc0000292), W_ERROR(0x1778)}, - {NT_STATUS(0xc0000293), W_ERROR(0x1772)}, - {NT_STATUS(0xc0000295), W_ERROR(0x1068)}, - {NT_STATUS(0xc0000296), W_ERROR(0x1069)}, - {NT_STATUS(0xc0000297), W_ERROR(0x106a)}, - {NT_STATUS(0xc0000298), W_ERROR(0x106b)}, - {NT_STATUS(0xc0000299), W_ERROR(0x201a)}, - {NT_STATUS(0xc000029a), W_ERROR(0x201b)}, - {NT_STATUS(0xc000029b), W_ERROR(0x201c)}, - {NT_STATUS(0xc000029c), W_ERROR(0x1)}, - {NT_STATUS(0xc000029d), W_ERROR(0x10ff)}, - {NT_STATUS(0xc000029e), W_ERROR(0x1100)}, - {NT_STATUS(0xc000029f), W_ERROR(0x494)}, - {NT_STATUS(0xc00002a1), W_ERROR(0x200a)}, - {NT_STATUS(0xc00002a2), W_ERROR(0x200b)}, - {NT_STATUS(0xc00002a3), W_ERROR(0x200c)}, - {NT_STATUS(0xc00002a4), W_ERROR(0x200d)}, - {NT_STATUS(0xc00002a5), W_ERROR(0x200e)}, - {NT_STATUS(0xc00002a6), W_ERROR(0x200f)}, - {NT_STATUS(0xc00002a7), W_ERROR(0x2010)}, - {NT_STATUS(0xc00002a8), W_ERROR(0x2011)}, - {NT_STATUS(0xc00002a9), W_ERROR(0x2012)}, - {NT_STATUS(0xc00002aa), W_ERROR(0x2013)}, - {NT_STATUS(0xc00002ab), W_ERROR(0x2014)}, - {NT_STATUS(0xc00002ac), W_ERROR(0x2015)}, - {NT_STATUS(0xc00002ad), W_ERROR(0x2016)}, - {NT_STATUS(0xc00002ae), W_ERROR(0x2017)}, - {NT_STATUS(0xc00002af), W_ERROR(0x2018)}, - {NT_STATUS(0xc00002b0), W_ERROR(0x2019)}, - {NT_STATUS(0xc00002b1), W_ERROR(0x211e)}, - {NT_STATUS(0xc00002b2), W_ERROR(0x1127)}, - {NT_STATUS(0xc00002b6), W_ERROR(0x651)}, - {NT_STATUS(0xc00002b7), W_ERROR(0x49a)}, - {NT_STATUS(0xc00002b8), W_ERROR(0x49b)}, - {NT_STATUS(0xc00002c1), W_ERROR(0x2024)}, - {NT_STATUS(0xc00002c3), W_ERROR(0x575)}, - {NT_STATUS(0xc00002c5), W_ERROR(0x3e6)}, - {NT_STATUS(0xc00002c6), W_ERROR(0x1075)}, - {NT_STATUS(0xc00002c7), W_ERROR(0x1076)}, - {NT_STATUS(0xc00002ca), W_ERROR(0x10e8)}, - {NT_STATUS(0xc00002cb), W_ERROR(0x2138)}, - {NT_STATUS(0xc00002cc), W_ERROR(0x4e3)}, - {NT_STATUS(0xc00002cd), W_ERROR(0x2139)}, - {NT_STATUS(0xc00002cf), W_ERROR(0x49d)}, - {NT_STATUS(0xc00002d0), W_ERROR(0x213a)}, - {NT_STATUS(0xc00002d4), W_ERROR(0x2141)}, - {NT_STATUS(0xc00002d5), W_ERROR(0x2142)}, - {NT_STATUS(0xc00002d6), W_ERROR(0x2143)}, - {NT_STATUS(0xc00002d7), W_ERROR(0x2144)}, - {NT_STATUS(0xc00002d8), W_ERROR(0x2145)}, - {NT_STATUS(0xc00002d9), W_ERROR(0x2146)}, - {NT_STATUS(0xc00002da), W_ERROR(0x2147)}, - {NT_STATUS(0xc00002db), W_ERROR(0x2148)}, - {NT_STATUS(0xc00002dc), W_ERROR(0x2149)}, - {NT_STATUS(0xc00002dd), W_ERROR(0x32)}, - {NT_STATUS(0xc00002df), W_ERROR(0x2151)}, - {NT_STATUS(0xc00002e0), W_ERROR(0x2152)}, - {NT_STATUS(0xc00002e1), W_ERROR(0x2153)}, - {NT_STATUS(0xc00002e2), W_ERROR(0x2154)}, - {NT_STATUS(0xc00002e3), W_ERROR(0x215d)}, - {NT_STATUS(0xc00002e4), W_ERROR(0x2163)}, - {NT_STATUS(0xc00002e5), W_ERROR(0x2164)}, - {NT_STATUS(0xc00002e6), W_ERROR(0x2165)}, - {NT_STATUS(0xc00002e7), W_ERROR(0x216d)}, - {NT_STATUS(0xc00002fe), W_ERROR(0x45b)}, - {NT_STATUS(0xc00002ff), W_ERROR(0x4e7)}, - {NT_STATUS(0xc0000300), W_ERROR(0x4e6)}, - {NT_STATUS(0x80000001), W_ERROR(0x80000001)}, - {NT_STATUS(0x80000002), W_ERROR(0x3e6)}, - {NT_STATUS(0x80000003), W_ERROR(0x80000003)}, - {NT_STATUS(0x80000004), W_ERROR(0x80000004)}, - {NT_STATUS(0x80000005), W_ERROR(0xea)}, - {NT_STATUS(0x80000006), W_ERROR(0x12)}, - {NT_STATUS(0x8000000b), W_ERROR(0x56f)}, - {NT_STATUS(0x8000000d), W_ERROR(0x12b)}, - {NT_STATUS(0x8000000e), W_ERROR(0x1c)}, - {NT_STATUS(0x8000000f), W_ERROR(0x15)}, - {NT_STATUS(0x80000010), W_ERROR(0x15)}, - {NT_STATUS(0x80000011), W_ERROR(0xaa)}, - {NT_STATUS(0x80000012), W_ERROR(0x103)}, - {NT_STATUS(0x80000013), W_ERROR(0xfe)}, - {NT_STATUS(0x80000014), W_ERROR(0xff)}, - {NT_STATUS(0x80000015), W_ERROR(0xff)}, - {NT_STATUS(0x80000016), W_ERROR(0x456)}, - {NT_STATUS(0x8000001a), W_ERROR(0x103)}, - {NT_STATUS(0x8000001b), W_ERROR(0x44d)}, - {NT_STATUS(0x8000001c), W_ERROR(0x456)}, - {NT_STATUS(0x8000001d), W_ERROR(0x457)}, - {NT_STATUS(0x8000001e), W_ERROR(0x44c)}, - {NT_STATUS(0x8000001f), W_ERROR(0x44e)}, - {NT_STATUS(0x80000021), W_ERROR(0x44f)}, - {NT_STATUS(0x80000022), W_ERROR(0x450)}, - {NT_STATUS(0x80000025), W_ERROR(0x962)}, - {NT_STATUS(0x80000288), W_ERROR(0x48d)}, - {NT_STATUS(0x80000289), W_ERROR(0x48e)}, - {NT_STATUS_OK, WERR_OK}}; - -static const struct { - WERROR werror; - NTSTATUS ntstatus; -} werror_to_ntstatus_map[] = { - { W_ERROR(0x5), NT_STATUS_ACCESS_DENIED }, - { WERR_OK, NT_STATUS_OK } -}; - /* Mapping between Unix, and NT error numbers */ static const struct { -- cgit From 018f4a5889743f742a59e9ad72056b2ea09adfe9 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 20 Jun 2011 14:03:26 +1000 Subject: libcli/util Bring samba4 unix -> nt_status code in common. Due to library link orders, this is already the function that is being used. However we still need to sort out the duplicate symbol issues, probably by renaming things. Andrew Bartlett --- source4/libcli/util/errormap.c | 157 ----------------------------------------- source4/libcli/wscript_build | 9 --- 2 files changed, 166 deletions(-) delete mode 100644 source4/libcli/util/errormap.c (limited to 'source4/libcli') diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c deleted file mode 100644 index 75b1e8d2fe..0000000000 --- a/source4/libcli/util/errormap.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * error mapping functions - * Copyright (C) Andrew Tridgell 2001 - * Copyright (C) Andrew Bartlett 2001 - * Copyright (C) Tim Potter 2000 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - -#include "includes.h" - -/* Mapping between Unix, and NT error numbers */ - -static const struct { - int unix_error; - NTSTATUS nt_error; -} unix_nt_errmap[] = { - { EAGAIN, STATUS_MORE_ENTRIES }, - { EINTR, STATUS_MORE_ENTRIES }, - { ENOBUFS, STATUS_MORE_ENTRIES }, -#ifdef EWOULDBLOCK - { EWOULDBLOCK, STATUS_MORE_ENTRIES }, -#endif - { EINPROGRESS, NT_STATUS_MORE_PROCESSING_REQUIRED }, - { EPERM, NT_STATUS_ACCESS_DENIED }, - { EACCES, NT_STATUS_ACCESS_DENIED }, - { ENOENT, NT_STATUS_OBJECT_NAME_NOT_FOUND }, - { ENOTDIR, NT_STATUS_NOT_A_DIRECTORY }, - { EIO, NT_STATUS_IO_DEVICE_ERROR }, - { EBADF, NT_STATUS_INVALID_HANDLE }, - { EINVAL, NT_STATUS_INVALID_PARAMETER }, - { EEXIST, NT_STATUS_OBJECT_NAME_COLLISION}, - { ENFILE, NT_STATUS_TOO_MANY_OPENED_FILES }, - { EMFILE, NT_STATUS_TOO_MANY_OPENED_FILES }, - { ENOSPC, NT_STATUS_DISK_FULL }, - { ENOTSOCK, NT_STATUS_INVALID_HANDLE }, - { EFAULT, NT_STATUS_INVALID_PARAMETER }, - { EMSGSIZE, NT_STATUS_INVALID_BUFFER_SIZE }, - { ENOMEM, NT_STATUS_NO_MEMORY }, - { EISDIR, NT_STATUS_FILE_IS_A_DIRECTORY}, -#ifdef EPIPE - { EPIPE, NT_STATUS_CONNECTION_DISCONNECTED }, -#endif - { EBUSY, NT_STATUS_SHARING_VIOLATION }, - { ENOSYS, NT_STATUS_INVALID_SYSTEM_SERVICE }, -#ifdef EOPNOTSUPP - { EOPNOTSUPP, NT_STATUS_NOT_SUPPORTED}, -#endif - { EMLINK, NT_STATUS_TOO_MANY_LINKS }, - { ENOSYS, NT_STATUS_NOT_SUPPORTED }, -#ifdef ELOOP - { ELOOP, NT_STATUS_OBJECT_PATH_NOT_FOUND }, -#endif -#ifdef ENODATA - { ENODATA, NT_STATUS_NOT_FOUND }, -#endif -#ifdef EFTYPE - { EFTYPE, NT_STATUS_OBJECT_PATH_NOT_FOUND }, -#endif -#ifdef EDQUOT - { EDQUOT, NT_STATUS_DISK_FULL }, /* Windows apps need this, not NT_STATUS_QUOTA_EXCEEDED */ -#endif -#ifdef ENOTEMPTY - { ENOTEMPTY, NT_STATUS_DIRECTORY_NOT_EMPTY }, -#endif -#ifdef EXDEV - { EXDEV, NT_STATUS_NOT_SAME_DEVICE }, -#endif -#ifdef EROFS - { EROFS, NT_STATUS_MEDIA_WRITE_PROTECTED }, -#endif -#ifdef ENAMETOOLONG - { ENAMETOOLONG, NT_STATUS_NAME_TOO_LONG }, -#endif -#ifdef EFBIG - { EFBIG, NT_STATUS_DISK_FULL }, -#endif -#ifdef EADDRINUSE - { EADDRINUSE, NT_STATUS_ADDRESS_ALREADY_ASSOCIATED}, -#endif -#ifdef ENETUNREACH - { ENETUNREACH, NT_STATUS_NETWORK_UNREACHABLE}, -#endif -#ifdef EHOSTUNREACH - { EHOSTUNREACH, NT_STATUS_HOST_UNREACHABLE}, -#endif -#ifdef ECONNREFUSED - { ECONNREFUSED, NT_STATUS_CONNECTION_REFUSED}, -#endif -#ifdef EADDRNOTAVAIL - { EADDRNOTAVAIL,NT_STATUS_ADDRESS_NOT_ASSOCIATED }, -#endif -#ifdef ETIMEDOUT - { ETIMEDOUT, NT_STATUS_IO_TIMEOUT}, -#endif -#ifdef ESOCKTNOSUPPORT - { ESOCKTNOSUPPORT,NT_STATUS_INVALID_PARAMETER_MIX }, -#endif -#ifdef EAFNOSUPPORT - { EAFNOSUPPORT, NT_STATUS_INVALID_PARAMETER_MIX }, -#endif -#ifdef ECONNABORTED - { ECONNABORTED, NT_STATUS_CONNECTION_ABORTED}, -#endif -#ifdef ECONNRESET - { ECONNRESET, NT_STATUS_CONNECTION_RESET}, -#endif -#ifdef ENOPROTOOPT - { ENOPROTOOPT, NT_STATUS_INVALID_PARAMETER_MIX }, -#endif -#ifdef ENODEV - { ENODEV, NT_STATUS_NO_SUCH_DEVICE }, -#endif -#ifdef ENOATTR - { ENOATTR, NT_STATUS_NOT_FOUND }, -#endif -#ifdef ECANCELED - { ECANCELED, NT_STATUS_CANCELLED}, -#endif -#ifdef ENOTSUP - { ENOTSUP, NT_STATUS_NOT_SUPPORTED}, -#endif - - { 0, NT_STATUS_UNSUCCESSFUL } -}; - - -/********************************************************************* - Map an NT error code from a Unix error code. -*********************************************************************/ -NTSTATUS map_nt_error_from_unix(int unix_error) -{ - int i; - - /* Look through list */ - for (i=0;i Date: Mon, 20 Jun 2011 14:55:32 +1000 Subject: libcli/util Rename common map_nt_error_from_unix to avoid duplicate symbol The two error tables need to be combined, but for now seperate the names. (As the common parts of the tree now use the _common function, errmap_unix.c must be included in the s3 autoconf build). Andrew Bartlett Autobuild-User: Andrew Bartlett Autobuild-Date: Mon Jun 20 08:12:03 CEST 2011 on sn-devel-104 --- source4/libcli/resolve/dns_ex.c | 4 ++-- source4/libcli/smb2/connect.c | 2 +- source4/libcli/smb2/session.c | 2 +- source4/libcli/smb_composite/smb2.c | 2 +- source4/libcli/wrepl/winsrepl.c | 10 +++++----- 5 files changed, 10 insertions(+), 10 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 1d56a4b4d5..5921212579 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -518,7 +518,7 @@ struct composite_context *resolve_name_dns_ex_send(TALLOC_CTX *mem_ctx, /* setup a pipe to chat to our child */ ret = pipe(fd); if (ret == -1) { - composite_error(c, map_nt_error_from_unix(errno)); + composite_error(c, map_nt_error_from_unix_common(errno)); return c; } @@ -542,7 +542,7 @@ struct composite_context *resolve_name_dns_ex_send(TALLOC_CTX *mem_ctx, state->child = fork(); if (state->child == (pid_t)-1) { - composite_error(c, map_nt_error_from_unix(errno)); + composite_error(c, map_nt_error_from_unix_common(errno)); return c; } diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c index c5cacc3e0b..0e3bf1512b 100644 --- a/source4/libcli/smb2/connect.c +++ b/source4/libcli/smb2/connect.c @@ -381,7 +381,7 @@ NTSTATUS smb2_connect(TALLOC_CTX *mem_ctx, ok = tevent_req_poll(subreq, ev); if (!ok) { - status = map_nt_error_from_unix(errno); + status = map_nt_error_from_unix_common(errno); TALLOC_FREE(frame); return status; } diff --git a/source4/libcli/smb2/session.c b/source4/libcli/smb2/session.c index 0f285ecd87..d46cdefc69 100644 --- a/source4/libcli/smb2/session.c +++ b/source4/libcli/smb2/session.c @@ -318,7 +318,7 @@ NTSTATUS smb2_session_setup_spnego(struct smb2_session *session, ok = tevent_req_poll(subreq, ev); if (!ok) { - status = map_nt_error_from_unix(errno); + status = map_nt_error_from_unix_common(errno); TALLOC_FREE(frame); return status; } diff --git a/source4/libcli/smb_composite/smb2.c b/source4/libcli/smb_composite/smb2.c index 1f8ec834ca..5c93869b5c 100644 --- a/source4/libcli/smb_composite/smb2.c +++ b/source4/libcli/smb_composite/smb2.c @@ -430,7 +430,7 @@ NTSTATUS smb2_composite_setpathinfo(struct smb2_tree *tree, union smb_setfileinf ok = tevent_req_poll(subreq, ev); if (!ok) { - status = map_nt_error_from_unix(errno); + status = map_nt_error_from_unix_common(errno); TALLOC_FREE(frame); return status; } diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index 0dee2c56cf..72c040d3a1 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -181,7 +181,7 @@ struct tevent_req *wrepl_connect_send(TALLOC_CTX *mem_ctx, our_ip, 0, &state->local_address); if (ret != 0) { - NTSTATUS status = map_nt_error_from_unix(errno); + NTSTATUS status = map_nt_error_from_unix_common(errno); tevent_req_nterror(req, status); return tevent_req_post(req, ev); } @@ -190,7 +190,7 @@ struct tevent_req *wrepl_connect_send(TALLOC_CTX *mem_ctx, peer_ip, WINS_REPLICATION_PORT, &state->remote_address); if (ret != 0) { - NTSTATUS status = map_nt_error_from_unix(errno); + NTSTATUS status = map_nt_error_from_unix_common(errno); tevent_req_nterror(req, status); return tevent_req_post(req, ev); } @@ -250,7 +250,7 @@ static void wrepl_connect_done(struct tevent_req *subreq) ret = tstream_inet_tcp_connect_recv(subreq, &sys_errno, state, &state->stream, NULL); if (ret != 0) { - NTSTATUS status = map_nt_error_from_unix(sys_errno); + NTSTATUS status = map_nt_error_from_unix_common(sys_errno); tevent_req_nterror(req, status); return; } @@ -443,7 +443,7 @@ static void wrepl_request_writev_done(struct tevent_req *subreq) ret = tstream_writev_recv(subreq, &sys_errno); TALLOC_FREE(subreq); if (ret == -1) { - NTSTATUS status = map_nt_error_from_unix(sys_errno); + NTSTATUS status = map_nt_error_from_unix_common(sys_errno); TALLOC_FREE(state->caller.wrepl_socket->stream); tevent_req_nterror(req, status); return; @@ -494,7 +494,7 @@ static void wrepl_request_disconnect_done(struct tevent_req *subreq) ret = tstream_disconnect_recv(subreq, &sys_errno); TALLOC_FREE(subreq); if (ret == -1) { - NTSTATUS status = map_nt_error_from_unix(sys_errno); + NTSTATUS status = map_nt_error_from_unix_common(sys_errno); TALLOC_FREE(state->caller.wrepl_socket->stream); tevent_req_nterror(req, status); return; -- cgit From f0ff6f390a14b0da8466096c0886f5c4860b977f Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 19 Jun 2011 21:10:01 +0200 Subject: Use tevent_req_oom This fixes a few Coverity errors --- source4/libcli/wrepl/winsrepl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/libcli') diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index 72c040d3a1..c7f1ad07cb 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -201,7 +201,7 @@ struct tevent_req *wrepl_connect_send(TALLOC_CTX *mem_ctx, wrepl_connect_trigger, NULL); if (!ok) { - tevent_req_nomem(NULL, req); + tevent_req_oom(req); return tevent_req_post(req, ev); } @@ -382,7 +382,7 @@ struct tevent_req *wrepl_request_send(TALLOC_CTX *mem_ctx, wrepl_request_trigger, NULL); if (!ok) { - tevent_req_nomem(NULL, req); + tevent_req_oom(req); return tevent_req_post(req, ev); } -- cgit