Changeset 740 for vendor/current/source4/libnet/groupinfo.c
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source4/libnet/groupinfo.c
r414 r740 47 47 48 48 49 static void continue_groupinfo_lookup(struct rpc_request *req);50 static void continue_groupinfo_opengroup(struct rpc_request *req);51 static void continue_groupinfo_getgroup(struct rpc_request *req);52 static void continue_groupinfo_closegroup(struct rpc_request *req);49 static void continue_groupinfo_lookup(struct tevent_req *subreq); 50 static void continue_groupinfo_opengroup(struct tevent_req *subreq); 51 static void continue_groupinfo_getgroup(struct tevent_req *subreq); 52 static void continue_groupinfo_closegroup(struct tevent_req *subreq); 53 53 54 54 … … 56 56 * Stage 1 (optional): Look for a group name in SAM server. 57 57 */ 58 static void continue_groupinfo_lookup(struct rpc_request *req) 59 { 60 struct composite_context *c; 61 struct groupinfo_state *s; 62 struct rpc_request *opengroup_req; 58 static void continue_groupinfo_lookup(struct tevent_req *subreq) 59 { 60 struct composite_context *c; 61 struct groupinfo_state *s; 63 62 struct monitor_msg msg; 64 63 struct msg_rpc_lookup_name *msg_lookup; 65 64 66 c = t alloc_get_type(req->async.private_data, struct composite_context);65 c = tevent_req_callback_data(subreq, struct composite_context); 67 66 s = talloc_get_type(c->private_data, struct groupinfo_state); 68 67 69 68 /* receive samr_Lookup reply */ 70 c->status = dcerpc_ndr_request_recv(req); 69 c->status = dcerpc_samr_LookupNames_r_recv(subreq, s); 70 TALLOC_FREE(subreq); 71 71 if (!composite_is_ok(c)) return; 72 72 … … 105 105 106 106 /* send request */ 107 opengroup_req = dcerpc_samr_OpenGroup_send(s->pipe, c, &s->opengroup); 108 if (composite_nomem(opengroup_req, c)) return; 109 110 composite_continue_rpc(c, opengroup_req, continue_groupinfo_opengroup, c); 107 subreq = dcerpc_samr_OpenGroup_r_send(s, c->event_ctx, 108 s->pipe->binding_handle, 109 &s->opengroup); 110 if (composite_nomem(subreq, c)) return; 111 112 tevent_req_set_callback(subreq, continue_groupinfo_opengroup, c); 111 113 } 112 114 … … 115 117 * Stage 2: Open group policy handle. 116 118 */ 117 static void continue_groupinfo_opengroup(struct rpc_request *req) 118 { 119 struct composite_context *c; 120 struct groupinfo_state *s; 121 struct rpc_request *querygroup_req; 119 static void continue_groupinfo_opengroup(struct tevent_req *subreq) 120 { 121 struct composite_context *c; 122 struct groupinfo_state *s; 122 123 struct monitor_msg msg; 123 124 struct msg_rpc_open_group *msg_open; 124 125 125 c = t alloc_get_type(req->async.private_data, struct composite_context);126 c = tevent_req_callback_data(subreq, struct composite_context); 126 127 s = talloc_get_type(c->private_data, struct groupinfo_state); 127 128 128 129 /* receive samr_OpenGroup reply */ 129 c->status = dcerpc_ndr_request_recv(req); 130 c->status = dcerpc_samr_OpenGroup_r_recv(subreq, s); 131 TALLOC_FREE(subreq); 130 132 if (!composite_is_ok(c)) return; 131 133 … … 154 156 155 157 /* queue rpc call, set event handling and new state */ 156 querygroup_req = dcerpc_samr_QueryGroupInfo_send(s->pipe, c, &s->querygroupinfo); 157 if (composite_nomem(querygroup_req, c)) return; 158 159 composite_continue_rpc(c, querygroup_req, continue_groupinfo_getgroup, c); 158 subreq = dcerpc_samr_QueryGroupInfo_r_send(s, 159 c->event_ctx, 160 s->pipe->binding_handle, 161 &s->querygroupinfo); 162 if (composite_nomem(subreq, c)) return; 163 164 tevent_req_set_callback(subreq, continue_groupinfo_getgroup, c); 160 165 } 161 166 … … 164 169 * Stage 3: Get requested group information. 165 170 */ 166 static void continue_groupinfo_getgroup(struct rpc_request *req) 167 { 168 struct composite_context *c; 169 struct groupinfo_state *s; 170 struct rpc_request *close_req; 171 static void continue_groupinfo_getgroup(struct tevent_req *subreq) 172 { 173 struct composite_context *c; 174 struct groupinfo_state *s; 171 175 struct monitor_msg msg; 172 176 struct msg_rpc_query_group *msg_query; 173 177 174 c = t alloc_get_type(req->async.private_data, struct composite_context);178 c = tevent_req_callback_data(subreq, struct composite_context); 175 179 s = talloc_get_type(c->private_data, struct groupinfo_state); 176 180 177 181 /* receive samr_QueryGroupInfo reply */ 178 c->status = dcerpc_ndr_request_recv(req); 182 c->status = dcerpc_samr_QueryGroupInfo_r_recv(subreq, s); 183 TALLOC_FREE(subreq); 179 184 if (!composite_is_ok(c)) return; 180 185 … … 203 208 204 209 /* queue rpc call, set event handling and new state */ 205 close_req = dcerpc_samr_Close_send(s->pipe, c, &s->samrclose); 206 if (composite_nomem(close_req, c)) return; 207 208 composite_continue_rpc(c, close_req, continue_groupinfo_closegroup, c); 210 subreq = dcerpc_samr_Close_r_send(s, c->event_ctx, 211 s->pipe->binding_handle, 212 &s->samrclose); 213 if (composite_nomem(subreq, c)) return; 214 215 tevent_req_set_callback(subreq, continue_groupinfo_closegroup, c); 209 216 } 210 217 … … 213 220 * Stage 4: Close policy handle associated with opened group. 214 221 */ 215 static void continue_groupinfo_closegroup(struct rpc_request *req)222 static void continue_groupinfo_closegroup(struct tevent_req *subreq) 216 223 { 217 224 struct composite_context *c; … … 220 227 struct msg_rpc_close_group *msg_close; 221 228 222 c = t alloc_get_type(req->async.private_data, struct composite_context);229 c = tevent_req_callback_data(subreq, struct composite_context); 223 230 s = talloc_get_type(c->private_data, struct groupinfo_state); 224 231 225 232 /* receive samr_Close reply */ 226 c->status = dcerpc_ndr_request_recv(req); 233 c->status = dcerpc_samr_Close_r_recv(subreq, s); 234 TALLOC_FREE(subreq); 227 235 if (!composite_is_ok(c)) return; 228 236 … … 260 268 struct groupinfo_state *s; 261 269 struct dom_sid *sid; 262 struct rpc_request *opengroup_req, *lookup_req;270 struct tevent_req *subreq; 263 271 264 272 if (!p || !io) return NULL; … … 287 295 288 296 /* send request */ 289 opengroup_req = dcerpc_samr_OpenGroup_send(p, c, &s->opengroup); 290 if (composite_nomem(opengroup_req, c)) return c; 291 292 composite_continue_rpc(c, opengroup_req, continue_groupinfo_opengroup, c); 297 subreq = dcerpc_samr_OpenGroup_r_send(s, c->event_ctx, 298 p->binding_handle, 299 &s->opengroup); 300 if (composite_nomem(subreq, c)) return c; 301 302 tevent_req_set_callback(subreq, continue_groupinfo_opengroup, c); 293 303 294 304 } else { … … 307 317 308 318 /* send request */ 309 lookup_req = dcerpc_samr_LookupNames_send(p, c, &s->lookup); 310 if (composite_nomem(lookup_req, c)) return c; 311 312 composite_continue_rpc(c, lookup_req, continue_groupinfo_lookup, c); 319 subreq = dcerpc_samr_LookupNames_r_send(s, c->event_ctx, 320 p->binding_handle, 321 &s->lookup); 322 if (composite_nomem(subreq, c)) return c; 323 324 tevent_req_set_callback(subreq, continue_groupinfo_lookup, c); 313 325 } 314 326
Note:
See TracChangeset
for help on using the changeset viewer.