summaryrefslogtreecommitdiff
path: root/source4/libnet
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-06-24 16:26:23 +1000
committerAndrew Bartlett <abartlet@samba.org>2011-06-24 16:26:23 +1000
commit6da26870e0ae5acd6ff49a30ec2f6886b44d095e (patch)
tree850c71039563c16a5d563c47e7ba2ab645baf198 /source4/libnet
parent6925a799d04c6fa59dd2ddef1f5510f9bb7d17d1 (diff)
parent2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 (diff)
downloadsamba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.gz
samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.bz2
samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.zip
Merge 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 as Samba-4.0alpha16
Diffstat (limited to 'source4/libnet')
-rw-r--r--source4/libnet/libnet.c2
-rw-r--r--source4/libnet/libnet_become_dc.c2
-rw-r--r--source4/libnet/libnet_join.c36
-rw-r--r--source4/libnet/libnet_join.h3
-rw-r--r--source4/libnet/libnet_rpc.c4
-rw-r--r--source4/libnet/libnet_site.c6
-rw-r--r--source4/libnet/libnet_unbecome_dc.c2
-rw-r--r--source4/libnet/py_net.c16
8 files changed, 25 insertions, 46 deletions
diff --git a/source4/libnet/libnet.c b/source4/libnet/libnet.c
index 53ebb9e34a..32df85d527 100644
--- a/source4/libnet/libnet.c
+++ b/source4/libnet/libnet.c
@@ -43,7 +43,7 @@ struct libnet_context *libnet_context_init(struct tevent_context *ev,
ctx->lp_ctx = lp_ctx;
/* make sure dcerpc is initialized */
- dcerpc_init(lp_ctx);
+ dcerpc_init();
/* name resolution methods */
ctx->resolve_ctx = lpcfg_resolve_context(lp_ctx);
diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c
index a68f4c5ea0..4d845ca1f0 100644
--- a/source4/libnet/libnet_become_dc.c
+++ b/source4/libnet/libnet_become_dc.c
@@ -769,7 +769,7 @@ static void becomeDC_send_cldap(struct libnet_BecomeDC_state *s)
lpcfg_cldap_port(s->libnet->lp_ctx),
&dest_address);
if (ret != 0) {
- c->status = map_nt_error_from_unix(errno);
+ c->status = map_nt_error_from_unix_common(errno);
if (!composite_is_ok(c)) return;
}
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index 6e76df43e3..a1124fdd62 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -889,9 +889,9 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
return status;
}
-static NTSTATUS libnet_Join_primary_domain(struct libnet_context *ctx,
- TALLOC_CTX *mem_ctx,
- struct libnet_Join *r)
+NTSTATUS libnet_Join_member(struct libnet_context *ctx,
+ TALLOC_CTX *mem_ctx,
+ struct libnet_Join_member *r)
{
NTSTATUS status;
TALLOC_CTX *tmp_mem;
@@ -916,15 +916,7 @@ static NTSTATUS libnet_Join_primary_domain(struct libnet_context *ctx,
return NT_STATUS_NO_MEMORY;
}
- if (r->in.join_type == SEC_CHAN_BDC) {
- acct_type = ACB_SVRTRUST;
- } else if (r->in.join_type == SEC_CHAN_WKSTA) {
- acct_type = ACB_WSTRUST;
- } else {
- r->out.error_string = NULL;
- talloc_free(tmp_mem);
- return NT_STATUS_INVALID_PARAMETER;
- }
+ acct_type = ACB_WSTRUST;
if (r->in.netbios_name != NULL) {
netbios_name = r->in.netbios_name;
@@ -972,7 +964,7 @@ static NTSTATUS libnet_Join_primary_domain(struct libnet_context *ctx,
set_secrets->domain_name = r2->out.domain_name;
set_secrets->realm = r2->out.realm;
set_secrets->netbios_name = netbios_name;
- set_secrets->secure_channel_type = r->in.join_type;
+ set_secrets->secure_channel_type = SEC_CHAN_WKSTA;
set_secrets->machine_password = r2->out.join_password;
set_secrets->key_version_number = r2->out.kvno;
set_secrets->domain_sid = r2->out.domain_sid;
@@ -996,21 +988,3 @@ static NTSTATUS libnet_Join_primary_domain(struct libnet_context *ctx,
return NT_STATUS_OK;
}
-NTSTATUS libnet_Join(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, struct libnet_Join *r)
-{
- switch (r->in.join_type) {
- case SEC_CHAN_WKSTA:
- return libnet_Join_primary_domain(ctx, mem_ctx, r);
- case SEC_CHAN_BDC:
- return libnet_Join_primary_domain(ctx, mem_ctx, r);
- case SEC_CHAN_DOMAIN:
- case SEC_CHAN_DNS_DOMAIN:
- case SEC_CHAN_NULL:
- break;
- }
-
- r->out.error_string = talloc_asprintf(mem_ctx,
- "Invalid join type specified (%08X) attempting to join domain %s",
- r->in.join_type, r->in.domain_name);
- return NT_STATUS_INVALID_PARAMETER;
-}
diff --git a/source4/libnet/libnet_join.h b/source4/libnet/libnet_join.h
index 79884130d8..6acf374b38 100644
--- a/source4/libnet/libnet_join.h
+++ b/source4/libnet/libnet_join.h
@@ -63,11 +63,10 @@ struct libnet_JoinDomain {
} out;
};
-struct libnet_Join {
+struct libnet_Join_member {
struct {
const char *domain_name;
const char *netbios_name;
- enum netr_SchannelType join_type;
enum libnet_Join_level level;
} in;
diff --git a/source4/libnet/libnet_rpc.c b/source4/libnet/libnet_rpc.c
index e0781c3816..8aacfc398a 100644
--- a/source4/libnet/libnet_rpc.c
+++ b/source4/libnet/libnet_rpc.c
@@ -109,6 +109,10 @@ static struct composite_context* libnet_RpcConnectSrv_send(struct libnet_context
case LIBNET_RPC_CONNECT_SERVER:
case LIBNET_RPC_CONNECT_SERVER_ADDRESS:
b->flags = r->in.dcerpc_flags;
+ break;
+ default:
+ /* other types have already been checked before */
+ break;
}
if (DEBUGLEVEL >= 10) {
diff --git a/source4/libnet/libnet_site.c b/source4/libnet/libnet_site.c
index 9bfca74a36..a74dd59a22 100644
--- a/source4/libnet/libnet_site.c
+++ b/source4/libnet/libnet_site.c
@@ -64,7 +64,7 @@ NTSTATUS libnet_FindSite(TALLOC_CTX *ctx, struct libnet_context *lctx, struct li
&dest_address);
if (ret != 0) {
r->out.error_string = NULL;
- status = map_nt_error_from_unix(errno);
+ status = map_nt_error_from_unix_common(errno);
return status;
}
@@ -168,7 +168,9 @@ NTSTATUS libnet_JoinSite(struct libnet_context *ctx,
}
make_nbt_name_client(&name, libnet_r->out.samr_binding->host);
- status = resolve_name(lpcfg_resolve_context(ctx->lp_ctx), &name, r, &dest_addr, ctx->event_ctx);
+ status = resolve_name_ex(lpcfg_resolve_context(ctx->lp_ctx),
+ 0, 0,
+ &name, r, &dest_addr, ctx->event_ctx);
if (!NT_STATUS_IS_OK(status)) {
libnet_r->out.error_string = NULL;
talloc_free(tmp_ctx);
diff --git a/source4/libnet/libnet_unbecome_dc.c b/source4/libnet/libnet_unbecome_dc.c
index 4bffc5079e..85d47a91f9 100644
--- a/source4/libnet/libnet_unbecome_dc.c
+++ b/source4/libnet/libnet_unbecome_dc.c
@@ -277,7 +277,7 @@ static void unbecomeDC_send_cldap(struct libnet_UnbecomeDC_state *s)
lpcfg_cldap_port(s->libnet->lp_ctx),
&dest_address);
if (ret != 0) {
- c->status = map_nt_error_from_unix(errno);
+ c->status = map_nt_error_from_unix_common(errno);
if (!composite_is_ok(c)) return;
}
diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c
index b7f7d9eaaf..ffcd60da27 100644
--- a/source4/libnet/py_net.c
+++ b/source4/libnet/py_net.c
@@ -41,17 +41,17 @@ typedef struct {
struct tevent_context *ev;
} py_net_Object;
-static PyObject *py_net_join(py_net_Object *self, PyObject *args, PyObject *kwargs)
+static PyObject *py_net_join_member(py_net_Object *self, PyObject *args, PyObject *kwargs)
{
- struct libnet_Join r;
+ struct libnet_Join_member r;
NTSTATUS status;
PyObject *result;
TALLOC_CTX *mem_ctx;
- const char *kwnames[] = { "domain_name", "netbios_name", "join_type", "level", NULL };
+ const char *kwnames[] = { "domain_name", "netbios_name", "level", NULL };
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssii:Join", discard_const_p(char *, kwnames),
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssi:Join", discard_const_p(char *, kwnames),
&r.in.domain_name, &r.in.netbios_name,
- &r.in.join_type, &r.in.level))
+ &r.in.level))
return NULL;
mem_ctx = talloc_new(self->mem_ctx);
@@ -60,7 +60,7 @@ static PyObject *py_net_join(py_net_Object *self, PyObject *args, PyObject *kwar
return NULL;
}
- status = libnet_Join(self->libnet_ctx, mem_ctx, &r);
+ status = libnet_Join_member(self->libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
PyErr_SetString(PyExc_RuntimeError, r.out.error_string?r.out.error_string:nt_errstr(status));
talloc_free(mem_ctx);
@@ -76,7 +76,7 @@ static PyObject *py_net_join(py_net_Object *self, PyObject *args, PyObject *kwar
return result;
}
-static const char py_net_join_doc[] = "join(domain_name, netbios_name, join_type, level) -> (join_password, domain_sid, domain_name)\n\n" \
+static const char py_net_join_member_doc[] = "join_member(domain_name, netbios_name, level) -> (join_password, domain_sid, domain_name)\n\n" \
"Join the domain with the specified name.";
static PyObject *py_net_set_password(py_net_Object *self, PyObject *args, PyObject *kwargs)
@@ -526,7 +526,7 @@ static const char py_net_finddc_doc[] = "finddc(domain, server_type)\n"
"find a DC with the specified server_type bits. Return the DNS name";
static PyMethodDef net_obj_methods[] = {
- {"join", (PyCFunction)py_net_join, METH_VARARGS|METH_KEYWORDS, py_net_join_doc},
+ {"join_member", (PyCFunction)py_net_join_member, METH_VARARGS|METH_KEYWORDS, py_net_join_member_doc},
{"set_password", (PyCFunction)py_net_set_password, METH_VARARGS|METH_KEYWORDS, py_net_set_password_doc},
{"export_keytab", (PyCFunction)py_net_export_keytab, METH_VARARGS|METH_KEYWORDS, py_net_export_keytab_doc},
{"time", (PyCFunction)py_net_time, METH_VARARGS|METH_KEYWORDS, py_net_time_doc},