+static void req_user_info(struct client_info *info, uint16 fnum,
+ uint32 user_rid)
+{
+ SAM_USER_INFO_21 usr;
+ /* send user info query, level 0x15 */
+ if (get_samr_query_userinfo(smb_cli, fnum,
+ &info->dom.samr_pol_open_domain,
+ 0x15, user_rid, &usr))
+ {
+ display_sam_user_info_21(out_hnd, ACTION_HEADER , &usr);
+ display_sam_user_info_21(out_hnd, ACTION_ENUMERATE, &usr);
+ display_sam_user_info_21(out_hnd, ACTION_FOOTER , &usr);
+ }
+}
+
+static void req_group_info(struct client_info *info, uint16 fnum,
+ uint32 user_rid)
+{
+ uint32 num_groups;
+ DOM_GID gid[LSA_MAX_GROUPS];
+
+ /* send user group query */
+ if (get_samr_query_usergroups(smb_cli, fnum,
+ &info->dom.samr_pol_open_domain,
+ user_rid, &num_groups, gid))
+ {
+ int i;
+ uint32 num_names;
+ uint32 rid_mem[MAX_LOOKUP_SIDS];
+ fstring name [MAX_LOOKUP_SIDS];
+ uint32 type [MAX_LOOKUP_SIDS];
+
+ for (i = 0; i < num_groups; i++)
+ {
+ rid_mem[i] = gid[i].g_rid;
+ }
+
+ if (samr_query_lookup_rids(smb_cli, fnum,
+ &info->dom.samr_pol_open_domain, 0x3e8,
+ num_groups, rid_mem,
+ &num_names, name, type))
+ {
+ display_group_members(out_hnd, ACTION_HEADER , num_names, name, type);
+ display_group_members(out_hnd, ACTION_ENUMERATE, num_names, name, type);
+ display_group_members(out_hnd, ACTION_FOOTER , num_names, name, type);
+ }
+ }
+}
+
+static void req_alias_info(struct client_info *info, uint16 fnum,
+ DOM_SID *sid1, uint32 user_rid)
+{
+ uint32 num_aliases;
+ uint32 rid[LSA_MAX_GROUPS];
+ DOM_SID als_sid;
+
+ sid_copy(&als_sid, sid1);
+ sid_append_rid(&als_sid, user_rid);
+
+ /* send user alias query */
+ if (samr_query_useraliases(smb_cli, fnum,
+ &info->dom.samr_pol_open_domain,
+ &als_sid, &num_aliases, rid))
+ {
+ uint32 num_names;
+ fstring name [MAX_LOOKUP_SIDS];
+ uint32 type [MAX_LOOKUP_SIDS];
+
+ if (samr_query_lookup_rids(smb_cli, fnum,
+ &info->dom.samr_pol_open_domain, 0x3e8,
+ num_aliases, rid,
+ &num_names, name, type))
+ {
+ display_group_members(out_hnd, ACTION_HEADER , num_names, name, type);
+ display_group_members(out_hnd, ACTION_ENUMERATE, num_names, name, type);
+ display_group_members(out_hnd, ACTION_FOOTER , num_names, name, type);
+ }
+ }
+
+ /* send user alias query */
+ if (samr_query_useraliases(smb_cli, fnum,
+ &info->dom.samr_pol_open_builtindom,
+ &als_sid, &num_aliases, rid))
+ {
+ uint32 num_names;
+ fstring name [MAX_LOOKUP_SIDS];
+ uint32 type [MAX_LOOKUP_SIDS];
+
+ if (samr_query_lookup_rids(smb_cli, fnum,
+ &info->dom.samr_pol_open_builtindom, 0x3e8,
+ num_aliases, rid,
+ &num_names, name, type))
+ {
+ display_group_members(out_hnd, ACTION_HEADER , num_names, name, type);
+ display_group_members(out_hnd, ACTION_ENUMERATE, num_names, name, type);
+ display_group_members(out_hnd, ACTION_FOOTER , num_names, name, type);
+ }
+ }
+}