diff options
author | Tim Potter <tpot@samba.org> | 2001-10-12 05:56:23 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2001-10-12 05:56:23 +0000 |
commit | 439c7e0ca2ceb866cac4f0fbed65e157aa12482d (patch) | |
tree | 485198a7c227c05736986cdcaf82e42ec016e296 /source3/rpcclient/cmd_netlogon.c | |
parent | d726eb216ad431d2bbd4ee07f4098b72446cdca2 (diff) | |
download | samba-439c7e0ca2ceb866cac4f0fbed65e157aa12482d.tar.gz samba-439c7e0ca2ceb866cac4f0fbed65e157aa12482d.tar.bz2 samba-439c7e0ca2ceb866cac4f0fbed65e157aa12482d.zip |
Some old stuff hanging around since the CIFS conference. Big cleanup of
rpcclient code. Refactored cmd_* functions to move common mem_ctx and pipe
opening stuff up one level. Moved rpcclient.h into rpcclient directory and
out of includes/smb.h
(This used to be commit a40facba9651f9fb1dcc9e143f92ca298a324312)
Diffstat (limited to 'source3/rpcclient/cmd_netlogon.c')
-rw-r--r-- | source3/rpcclient/cmd_netlogon.c | 142 |
1 files changed, 44 insertions, 98 deletions
diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c index 3d73fc1fde..a935900faa 100644 --- a/source3/rpcclient/cmd_netlogon.c +++ b/source3/rpcclient/cmd_netlogon.c @@ -21,35 +21,24 @@ */ #include "includes.h" +#include "rpcclient.h" -static NTSTATUS cmd_netlogon_logon_ctrl2(struct cli_state *cli, int argc, - char **argv) +static NTSTATUS cmd_netlogon_logon_ctrl2(struct cli_state *cli, + TALLOC_CTX *mem_ctx, int argc, + char **argv) { uint32 query_level = 1; - TALLOC_CTX *mem_ctx; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; if (argc > 1) { - printf("Usage: %s\n", argv[0]); + fprintf(stderr, "Usage: %s\n", argv[0]); return NT_STATUS_OK; } - if (!(mem_ctx = talloc_init())) { - DEBUG(0,("cmd_srvsvc_srv_query_info: talloc_init failed\n")); - goto done; - } - - /* Initialise RPC connection */ - - if (!cli_nt_session_open (cli, PIPE_NETLOGON)) { - DEBUG(0, ("Could not initialize srvsvc pipe!\n")); - goto done; - } - result = cli_netlogon_logon_ctrl2(cli, mem_ctx, query_level); - if (!NT_STATUS_IS_OK(result)) { + + if (!NT_STATUS_IS_OK(result)) goto done; - } /* Display results */ @@ -57,32 +46,20 @@ static NTSTATUS cmd_netlogon_logon_ctrl2(struct cli_state *cli, int argc, return result; } -static NTSTATUS cmd_netlogon_logon_ctrl(struct cli_state *cli, int argc, - char **argv) +static NTSTATUS cmd_netlogon_logon_ctrl(struct cli_state *cli, + TALLOC_CTX *mem_ctx, int argc, + char **argv) { #if 0 uint32 query_level = 1; #endif - TALLOC_CTX *mem_ctx; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; if (argc > 1) { - printf("Usage: %s\n", argv[0]); + fprintf(stderr, "Usage: %s\n", argv[0]); return NT_STATUS_OK; } - if (!(mem_ctx = talloc_init())) { - DEBUG(0,("cmd_srvsvc_srv_query_info: talloc_init failed\n")); - goto done; - } - - /* Initialise RPC connection */ - - if (!cli_nt_session_open (cli, PIPE_NETLOGON)) { - DEBUG(0, ("Could not initialize netlogon pipe!\n")); - goto done; - } - #if 0 result = cli_netlogon_logon_ctrl(cli, mem_ctx, query_level); if (!NT_STATUS_IS_OK(result)) { @@ -92,7 +69,6 @@ static NTSTATUS cmd_netlogon_logon_ctrl(struct cli_state *cli, int argc, /* Display results */ - done: return result; } @@ -110,25 +86,25 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, unistr2_to_ascii(name, &deltas[i].domain_info.uni_dom_name, sizeof(name) - 1); - DEBUG(0, ("Domain: %s\n", name)); + printf("Domain: %s\n", name); break; case SAM_DELTA_GROUP_INFO: unistr2_to_ascii(name, &deltas[i].group_info.uni_grp_name, sizeof(name) - 1); - DEBUG(0, ("Group: %s\n", name)); + printf("Group: %s\n", name); break; case SAM_DELTA_ACCOUNT_INFO: unistr2_to_ascii(name, &deltas[i].account_info.uni_acct_name, sizeof(name) - 1); - DEBUG(0, ("Account: %s\n", name)); + printf("Account: %s\n", name); break; case SAM_DELTA_ALIAS_INFO: unistr2_to_ascii(name, &deltas[i].alias_info.uni_als_name, sizeof(name) - 1); - DEBUG(0, ("Alias: %s\n", name)); + printf("Alias: %s\n", name); break; case SAM_DELTA_ALIAS_MEM: { SAM_ALIAS_MEM_INFO *alias = &deltas[i].als_mem_info; @@ -138,7 +114,7 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, sid_to_string(sid_str, &alias->sids[j].sid); - DEBUG(0, ("%s\n", sid_str)); + printf("%s\n", sid_str); } break; } @@ -146,20 +122,20 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, SAM_GROUP_MEM_INFO *group = &deltas[i].grp_mem_info; for (j = 0; j < group->num_members; j++) - DEBUG(0, ("rid 0x%x, attrib 0x%08x\n", - group->rids[j], group->attribs[j])); + printf("rid 0x%x, attrib 0x%08x\n", + group->rids[j], group->attribs[j]); break; } case SAM_DELTA_SAM_STAMP: { SAM_DELTA_STAMP *stamp = &deltas[i].stamp; - DEBUG(0, ("sam sequence update: 0x%04x\n", - stamp->seqnum)); + printf("sam sequence update: 0x%04x\n", + stamp->seqnum); break; } default: - DEBUG(0, ("unknown delta type 0x%02x\n", - hdr_deltas[i].type)); + printf("unknown delta type 0x%02x\n", + hdr_deltas[i].type); break; } } @@ -167,18 +143,18 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, /* Perform sam synchronisation */ -static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli, int argc, - char **argv) +static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli, + TALLOC_CTX *mem_ctx, int argc, + char **argv) { NTSTATUS result = NT_STATUS_UNSUCCESSFUL; unsigned char trust_passwd[16]; - TALLOC_CTX *mem_ctx; uint32 database_id = 0, num_deltas; SAM_DELTA_HDR *hdr_deltas; SAM_DELTA_CTR *deltas; if (argc > 2) { - printf("Usage: %s [database_id]\n", argv[0]); + fprintf(stderr, "Usage: %s [database_id]\n", argv[0]); return NT_STATUS_OK; } @@ -186,34 +162,22 @@ static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli, int argc, database_id = atoi(argv[1]); if (!secrets_init()) { - DEBUG(0, ("Unable to initialise secrets database\n")); + fprintf(stderr, "Unable to initialise secrets database\n"); return result; } - if (!(mem_ctx = talloc_init())) { - DEBUG(0,("talloc_init failed\n")); - return result; - } - - /* Initialise RPC connection */ - - if (!cli_nt_session_open (cli, PIPE_NETLOGON)) { - DEBUG(0, ("Could not initialize netlogon pipe!\n")); - goto done; - } - /* Initialise session credentials */ if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_passwd, NULL)) { - DEBUG(0, ("could not fetch trust account password\n")); + fprintf(stderr, "could not fetch trust account password\n"); goto done; } result = cli_nt_setup_creds(cli, trust_passwd); if (!NT_STATUS_IS_OK(result)) { - DEBUG(0, ("Error initialising session creds\n")); + fprintf(stderr, "Error initialising session creds\n"); goto done; } @@ -221,36 +185,33 @@ static NTSTATUS cmd_netlogon_sam_sync(struct cli_state *cli, int argc, result = cli_netlogon_sam_sync(cli, mem_ctx, database_id, &num_deltas, &hdr_deltas, &deltas); - if (!NT_STATUS_IS_OK(result)) { + + if (!NT_STATUS_IS_OK(result)) goto done; - } /* Display results */ display_sam_sync(num_deltas, hdr_deltas, deltas); done: - cli_nt_session_close(cli); - talloc_destroy(mem_ctx); - return result; } /* Perform sam delta synchronisation */ -static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli, int argc, - char **argv) +static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli, + TALLOC_CTX *mem_ctx, int argc, + char **argv) { NTSTATUS result = NT_STATUS_UNSUCCESSFUL; unsigned char trust_passwd[16]; - TALLOC_CTX *mem_ctx = NULL; uint32 database_id, num_deltas, tmp; SAM_DELTA_HDR *hdr_deltas; SAM_DELTA_CTR *deltas; UINT64_S seqnum; if (argc != 3) { - printf("Usage: %s database_id seqnum\n", argv[0]); + fprintf(stderr, "Usage: %s database_id seqnum\n", argv[0]); return NT_STATUS_OK; } @@ -261,34 +222,22 @@ static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli, int argc, seqnum.high = 0; if (!secrets_init()) { - DEBUG(0, ("Unable to initialise secrets database\n")); + fprintf(stderr, "Unable to initialise secrets database\n"); goto done; } - if (!(mem_ctx = talloc_init())) { - DEBUG(0,("talloc_init failed\n")); - goto done; - } - - /* Initialise RPC connection */ - - if (!cli_nt_session_open (cli, PIPE_NETLOGON)) { - DEBUG(0, ("Could not initialize netlogon pipe!\n")); - goto done; - } - /* Initialise session credentials */ if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_passwd, NULL)) { - DEBUG(0, ("could not fetch trust account password\n")); + fprintf(stderr, "could not fetch trust account password\n"); goto done; } result = cli_nt_setup_creds(cli, trust_passwd); if (!NT_STATUS_IS_OK(result)) { - DEBUG(0, ("Error initialising session creds\n")); + fprintf(stderr, "Error initialising session creds\n"); goto done; } @@ -297,18 +246,15 @@ static NTSTATUS cmd_netlogon_sam_deltas(struct cli_state *cli, int argc, result = cli_netlogon_sam_deltas(cli, mem_ctx, database_id, seqnum, &num_deltas, &hdr_deltas, &deltas); - if (!NT_STATUS_IS_OK(result)) { + + if (!NT_STATUS_IS_OK(result)) goto done; - } /* Display results */ display_sam_sync(num_deltas, hdr_deltas, deltas); done: - cli_nt_session_close(cli); - talloc_destroy(mem_ctx); - return result; } @@ -318,10 +264,10 @@ struct cmd_set netlogon_commands[] = { { "NETLOGON" }, - { "logonctrl2", cmd_netlogon_logon_ctrl2, "Logon Control 2", "" }, - { "logonctrl", cmd_netlogon_logon_ctrl, "Logon Control", "" }, - { "samsync", cmd_netlogon_sam_sync, "Sam Synchronisation", "" }, - { "samdeltas", cmd_netlogon_sam_deltas, "Query Sam Deltas", "" }, + { "logonctrl2", cmd_netlogon_logon_ctrl2, PIPE_NETLOGON, "Logon Control 2", "" }, + { "logonctrl", cmd_netlogon_logon_ctrl, PIPE_NETLOGON, "Logon Control", "" }, + { "samsync", cmd_netlogon_sam_sync, PIPE_NETLOGON, "Sam Synchronisation", "" }, + { "samdeltas", cmd_netlogon_sam_deltas, PIPE_NETLOGON, "Query Sam Deltas", "" }, { NULL } }; |