source: trunk/server/source3/winbindd/winbindd_ndr.c

Last change on this file was 745, checked in by Silvan Scherrer, 13 years ago

Samba Server: updated trunk to 3.6.0

File size: 5.8 KB
Line 
1/*
2 * Unix SMB/CIFS implementation.
3 * winbindd debug helper
4 * Copyright (C) Guenther Deschner 2008
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "includes.h"
21#include "winbindd.h"
22#include "../librpc/gen_ndr/ndr_netlogon.h"
23#include "../librpc/gen_ndr/ndr_security.h"
24#include "librpc/ndr/util.h"
25
26#undef DBGC_CLASS
27#define DBGC_CLASS DBGC_WINBIND
28
29/****************************************************************
30****************************************************************/
31
32void ndr_print_winbindd_child(struct ndr_print *ndr,
33 const char *name,
34 const struct winbindd_child *r)
35{
36 ndr_print_struct(ndr, name, "winbindd_child");
37 ndr->depth++;
38 ndr_print_ptr(ndr, "next", r->next);
39 ndr_print_ptr(ndr, "prev", r->prev);
40 ndr_print_uint32(ndr, "pid", (uint32_t)r->pid);
41#if 0
42 ndr_print_winbindd_domain(ndr, "domain", r->domain);
43#else
44 ndr_print_ptr(ndr, "domain", r->domain);
45#endif
46 ndr_print_string(ndr, "logfilename", r->logfilename);
47 /* struct fd_event event; */
48 ndr_print_ptr(ndr, "lockout_policy_event", r->lockout_policy_event);
49 ndr_print_ptr(ndr, "table", r->table);
50 ndr->depth--;
51}
52
53/****************************************************************
54****************************************************************/
55
56void ndr_print_winbindd_cm_conn(struct ndr_print *ndr,
57 const char *name,
58 const struct winbindd_cm_conn *r)
59{
60 ndr_print_struct(ndr, name, "winbindd_cm_conn");
61 ndr->depth++;
62 ndr_print_ptr(ndr, "cli", r->cli);
63 ndr_print_ptr(ndr, "samr_pipe", r->samr_pipe);
64 ndr_print_policy_handle(ndr, "sam_connect_handle", &r->sam_connect_handle);
65 ndr_print_policy_handle(ndr, "sam_domain_handle", &r->sam_domain_handle);
66 ndr_print_ptr(ndr, "lsa_pipe", r->lsa_pipe);
67 ndr_print_policy_handle(ndr, "lsa_policy", &r->lsa_policy);
68 ndr_print_ptr(ndr, "netlogon_pipe", r->netlogon_pipe);
69 ndr->depth--;
70}
71
72/****************************************************************
73****************************************************************/
74
75#ifdef HAVE_ADS
76extern struct winbindd_methods ads_methods;
77#endif
78extern struct winbindd_methods msrpc_methods;
79extern struct winbindd_methods builtin_passdb_methods;
80extern struct winbindd_methods sam_passdb_methods;
81extern struct winbindd_methods reconnect_methods;
82extern struct winbindd_methods cache_methods;
83
84void ndr_print_winbindd_methods(struct ndr_print *ndr,
85 const char *name,
86 const struct winbindd_methods *r)
87{
88 ndr_print_struct(ndr, name, "winbindd_methods");
89 ndr->depth++;
90
91 if (r == NULL) {
92 ndr_print_string(ndr, name, "(NULL)");
93 ndr->depth--;
94 return;
95 }
96
97 if (r == &msrpc_methods) {
98 ndr_print_string(ndr, name, "msrpc_methods");
99#ifdef HAVE_ADS
100 } else if (r == &ads_methods) {
101 ndr_print_string(ndr, name, "ads_methods");
102#endif
103 } else if (r == &builtin_passdb_methods) {
104 ndr_print_string(ndr, name, "builtin_passdb_methods");
105 } else if (r == &sam_passdb_methods) {
106 ndr_print_string(ndr, name, "sam_passdb_methods");
107 } else if (r == &reconnect_methods) {
108 ndr_print_string(ndr, name, "reconnect_methods");
109 } else if (r == &cache_methods) {
110 ndr_print_string(ndr, name, "cache_methods");
111 } else {
112 ndr_print_string(ndr, name, "UNKNOWN");
113 }
114 ndr->depth--;
115}
116
117/****************************************************************
118****************************************************************/
119
120void ndr_print_winbindd_domain(struct ndr_print *ndr,
121 const char *name,
122 const struct winbindd_domain *r)
123{
124 int i;
125 if (!r) {
126 return;
127 }
128
129 ndr_print_struct(ndr, name, "winbindd_domain");
130 ndr->depth++;
131 ndr_print_string(ndr, "name", r->name);
132 ndr_print_string(ndr, "alt_name", r->alt_name);
133 ndr_print_string(ndr, "forest_name", r->forest_name);
134 ndr_print_dom_sid(ndr, "sid", &r->sid);
135 ndr_print_netr_TrustFlags(ndr, "domain_flags", r->domain_flags);
136 ndr_print_netr_TrustType(ndr, "domain_type", r->domain_type);
137 ndr_print_netr_TrustAttributes(ndr, "domain_trust_attribs", r->domain_trust_attribs);
138 ndr_print_bool(ndr, "initialized", r->initialized);
139 ndr_print_bool(ndr, "native_mode", r->native_mode);
140 ndr_print_bool(ndr, "active_directory", r->active_directory);
141 ndr_print_bool(ndr, "primary", r->primary);
142 ndr_print_bool(ndr, "internal", r->internal);
143 ndr_print_bool(ndr, "online", r->online);
144 ndr_print_time_t(ndr, "startup_time", r->startup_time);
145 ndr_print_bool(ndr, "startup", r->startup);
146 ndr_print_winbindd_methods(ndr, "methods", r->methods);
147 ndr_print_winbindd_methods(ndr, "backend", r->backend);
148 ndr_print_ptr(ndr, "private_data", r->private_data);
149 ndr_print_string(ndr, "dcname", r->dcname);
150 ndr_print_sockaddr_storage(ndr, "dcaddr", &r->dcaddr);
151 ndr_print_time_t(ndr, "last_seq_check", r->last_seq_check);
152 ndr_print_uint32(ndr, "sequence_number", r->sequence_number);
153 ndr_print_NTSTATUS(ndr, "last_status", r->last_status);
154 ndr_print_winbindd_cm_conn(ndr, "conn", &r->conn);
155 for (i=0; i<lp_winbind_max_domain_connections(); i++) {
156 ndr_print_winbindd_child(ndr, "children", &r->children[i]);
157 }
158 ndr_print_uint32(ndr, "check_online_timeout", r->check_online_timeout);
159 ndr_print_ptr(ndr, "check_online_event", r->check_online_event);
160 ndr->depth--;
161}
Note: See TracBrowser for help on using the repository browser.