diff options
author | Gerald Carter <jerry@samba.org> | 2005-06-08 22:10:34 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:57:08 -0500 |
commit | fed660877c16562265327c6093ea645cf4176b5c (patch) | |
tree | e92ae1356542ba095d806bbe1093fa56fbc8ddcc /source3/utils | |
parent | 66bb4f03c3466205488f72e4878e8801c5bbb295 (diff) | |
download | samba-fed660877c16562265327c6093ea645cf4176b5c.tar.gz samba-fed660877c16562265327c6093ea645cf4176b5c.tar.bz2 samba-fed660877c16562265327c6093ea645cf4176b5c.zip |
r7415: * big change -- volker's new async winbindd from trunk
(This used to be commit a0ac9a8ffd4af31a0ebc423b4acbb2f043d865b8)
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/net_rpc.c | 16 | ||||
-rw-r--r-- | source3/utils/net_rpc_join.c | 4 | ||||
-rw-r--r-- | source3/utils/smbcontrol.c | 51 |
3 files changed, 60 insertions, 11 deletions
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index 9793932b51..000e77345e 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -141,7 +141,7 @@ int run_rpc_command(struct cli_state *cli_arg, const int pipe_idx, int conn_flag } if (!(conn_flags & NET_FLAGS_NO_PIPE)) { - if (cli->nt_pipe_fnum[cli->pipe_idx]) + if (cli->pipes[cli->pipe_idx].fnum) cli_nt_session_close(cli); } @@ -663,11 +663,11 @@ static NTSTATUS rpc_user_del_internals(const DOM_SID *domain_sid, } /* Display results */ - if (!NT_STATUS_IS_OK(result)) { + if (!NT_STATUS_IS_OK(result)) { d_printf("Failed to delete user account - %s\n", nt_errstr(result)); - } else { - d_printf("Deleted user account\n"); - } + } else { + d_printf("Deleted user account\n"); + } done: return result; @@ -4452,6 +4452,7 @@ static int rpc_trustdom_add(int argc, const char **argv) } } + /** * Remove interdomain trust account from the RPC server. * All parameters (except for argc and argv) are passed by run_rpc_command @@ -4582,6 +4583,7 @@ static int rpc_trustdom_del(int argc, const char **argv) return -1; } } + /** * Establish trust relationship to a trusting domain. @@ -4676,7 +4678,7 @@ static int rpc_trustdom_establish(int argc, const char **argv) cli_shutdown(cli); return -1; } - + /* * Call LsaOpenPolicy and LsaQueryInfo */ @@ -4739,7 +4741,7 @@ static int rpc_trustdom_establish(int argc, const char **argv) return -1; } - if (cli->nt_pipe_fnum[cli->pipe_idx]) + if (cli->pipes[cli->pipe_idx].fnum) cli_nt_session_close(cli); cli_shutdown(cli); diff --git a/source3/utils/net_rpc_join.c b/source3/utils/net_rpc_join.c index 2f2393ca7a..6888076a14 100644 --- a/source3/utils/net_rpc_join.c +++ b/source3/utils/net_rpc_join.c @@ -77,7 +77,7 @@ static int net_rpc_join_ok(const char *domain) done: /* Close down pipe - this will clean up open policy handles */ - if (cli->nt_pipe_fnum[cli->pipe_idx]) + if (cli->pipes[cli->pipe_idx].fnum) cli_nt_session_close(cli); cli_shutdown(cli); @@ -346,7 +346,7 @@ int net_rpc_join_newstyle(int argc, const char **argv) done: /* Close down pipe - this will clean up open policy handles */ - if (cli->nt_pipe_fnum[cli->pipe_idx]) + if (cli->pipes[cli->pipe_idx].fnum) cli_nt_session_close(cli); /* Display success or failure */ diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c index 5a7b6548c2..c0de85cea5 100644 --- a/source3/utils/smbcontrol.c +++ b/source3/utils/smbcontrol.c @@ -428,8 +428,7 @@ static BOOL do_printnotify(const pid_t pid, const int argc, const char **argv) return False; } - notify_printer_byname(argv[2], attribute, - CONST_DISCARD(char *, argv[4])); + notify_printer_byname(argv[2], attribute, argv[4]); goto send; } @@ -573,6 +572,53 @@ static BOOL do_reload_config(const pid_t pid, const int argc, const char **argv) return send_message(pid, MSG_SMB_CONF_UPDATED, NULL, 0, False); } +static void my_make_nmb_name( struct nmb_name *n, const char *name, int type) +{ + fstring unix_name; + memset( (char *)n, '\0', sizeof(struct nmb_name) ); + fstrcpy(unix_name, name); + strupper_m(unix_name); + push_ascii(n->name, unix_name, sizeof(n->name), STR_TERMINATE); + n->name_type = (unsigned int)type & 0xFF; + push_ascii(n->scope, global_scope(), 64, STR_TERMINATE); +} + +static BOOL do_nodestatus(const pid_t pid, const int argc, + const char **argv) +{ + struct packet_struct p; + + if (argc != 2) { + fprintf(stderr, "Usage: smbcontrol nmbd nodestatus <ip>\n"); + return False; + } + + ZERO_STRUCT(p); + + p.ip = *interpret_addr2(argv[1]); + p.port = 137; + p.packet_type = NMB_PACKET; + + p.packet.nmb.header.name_trn_id = 10; + p.packet.nmb.header.opcode = 0; + p.packet.nmb.header.response = False; + p.packet.nmb.header.nm_flags.bcast = False; + p.packet.nmb.header.nm_flags.recursion_available = False; + p.packet.nmb.header.nm_flags.recursion_desired = False; + p.packet.nmb.header.nm_flags.trunc = False; + p.packet.nmb.header.nm_flags.authoritative = False; + p.packet.nmb.header.rcode = 0; + p.packet.nmb.header.qdcount = 1; + p.packet.nmb.header.ancount = 0; + p.packet.nmb.header.nscount = 0; + p.packet.nmb.header.arcount = 0; + my_make_nmb_name(&p.packet.nmb.question.question_name, "*", 0x00); + p.packet.nmb.question.question_type = 0x21; + p.packet.nmb.question.question_class = 0x1; + + return send_message(pid, MSG_SEND_PACKET, &p, sizeof(p), False); +} + /* A list of message type supported */ static const struct { @@ -597,6 +643,7 @@ static const struct { { "shutdown", do_shutdown, "Shut down daemon" }, { "drvupgrade", do_drvupgrade, "Notify a printer driver has changed" }, { "reload-config", do_reload_config, "Force smbd or winbindd to reload config file"}, + { "nodestatus", do_nodestatus, "Ask nmbd to do a node status request"}, { "noop", do_noop, "Do nothing" }, { NULL } }; |