added info level 1 to samr_query_alias()
authorJean-François Micouleau <jfm@samba.org>
Wed, 19 Dec 2001 00:15:29 +0000 (00:15 +0000)
committerJean-François Micouleau <jfm@samba.org>
Wed, 19 Dec 2001 00:15:29 +0000 (00:15 +0000)
(This used to be commit 589aa4fe226ee5bdae0a244631193714b0b556ac)

source3/include/rpc_samr.h
source3/rpc_parse/parse_samr.c
source3/rpc_server/srv_samr_nt.c

index 07c50d82d51239382d32164de168d6306e19940d..43ee342ed33c6570b93b4758ce46ccab06e1eff1 100644 (file)
@@ -1136,6 +1136,16 @@ typedef struct q_samr_query_alias_info
 
 } SAMR_Q_QUERY_ALIASINFO;
 
+typedef struct samr_alias_info1
+{
+       UNIHDR hdr_acct_name;
+       UNIHDR hdr_acct_desc;
+       uint32 num_member;
+       UNISTR2 uni_acct_name;
+       UNISTR2 uni_acct_desc;
+
+} ALIAS_INFO1;
+
 typedef struct samr_alias_info3
 {
        UNIHDR hdr_acct_desc;
@@ -1151,6 +1161,7 @@ typedef struct alias_info_ctr
 
        union
        {
+               ALIAS_INFO1 info1;
                ALIAS_INFO3 info3;
 
        } alias;
index 0c6bcdafb87161bd7b03a1f96aca02c953e3a988..bfca4958933d51d20ebfb9dc520cddf2021e9770 100644 (file)
@@ -3431,6 +3431,63 @@ BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u,
        return True;
 }
 
+/*******************************************************************
+inits a ALIAS_INFO1 structure.
+********************************************************************/
+
+void init_samr_alias_info1(ALIAS_INFO1 * al1, char *acct_name, uint32 num_member, char *acct_desc)
+{
+       int acct_len_name = acct_name != NULL ? strlen(acct_name) : 0;
+       int acct_len_desc = acct_desc != NULL ? strlen(acct_desc) : 0;
+
+       DEBUG(5, ("init_samr_alias_info1\n"));
+
+       init_uni_hdr(&al1->hdr_acct_name, acct_len_name);
+       init_unistr2(&al1->uni_acct_name, acct_name, acct_len_name);
+
+       al1->num_member=num_member;
+
+       init_uni_hdr(&al1->hdr_acct_desc, acct_len_desc);
+       init_unistr2(&al1->uni_acct_desc, acct_desc, acct_len_desc);
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+
+BOOL samr_io_alias_info1(char *desc, ALIAS_INFO1 * al1,
+                        prs_struct *ps, int depth)
+{
+       if (al1 == NULL)
+               return False;
+
+       prs_debug(ps, depth, desc, "samr_io_alias_info1");
+       depth++;
+
+       if(!prs_align(ps))
+               return False;
+
+       if(!smb_io_unihdr("hdr_acct_name", &al1->hdr_acct_name, ps, depth))
+               return False;
+       if(!prs_uint32("num_member", ps, depth, &al1->num_member))
+               return False;
+       if(!smb_io_unihdr("hdr_acct_desc", &al1->hdr_acct_desc, ps, depth))
+               return False;
+
+       if(!smb_io_unistr2("uni_acct_name", &al1->uni_acct_name,
+                      al1->hdr_acct_name.buffer, ps, depth))
+               return False;
+
+       if(!prs_align(ps))
+               return False;
+
+       if(!smb_io_unistr2("uni_acct_desc", &al1->uni_acct_desc,
+                      al1->hdr_acct_desc.buffer, ps, depth))
+               return False;
+
+       return True;
+}
+
 /*******************************************************************
 inits a ALIAS_INFO3 structure.
 ********************************************************************/
@@ -3489,6 +3546,10 @@ BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR * ctr,
                return False;
 
        switch (ctr->switch_value1) {
+       case 1: 
+               if(!samr_io_alias_info1("alias_info1", &ctr->alias.info1, ps, depth))
+                       return False;
+               break;
        case 3: 
                if(!samr_io_alias_info3("alias_info3", &ctr->alias.info3, ps, depth))
                        return False;
index 78535e4c2b5252bf992d6477f2357f1d24754ac0..b918b4dca188afdd5db465fceb60515de10166d9 100644 (file)
@@ -1200,6 +1200,11 @@ NTSTATUS _samr_query_aliasinfo(pipes_struct *p, SAMR_Q_QUERY_ALIASINFO *q_u, SAM
                return NT_STATUS_NO_SUCH_ALIAS;
 
        switch (q_u->switch_level) {
+       case 1:
+               r_u->ptr = 1;
+               r_u->ctr.switch_value1 = 1;
+               init_samr_alias_info1(&r_u->ctr.alias.info1, map.nt_name, 1, map.comment);
+               break;
        case 3:
                r_u->ptr = 1;
                r_u->ctr.switch_value1 = 3;