diff options
-rw-r--r-- | source3/include/proto.h | 17 | ||||
-rw-r--r-- | source3/include/rpc_samr.h | 37 | ||||
-rw-r--r-- | source3/rpc_parse/parse_samr.c | 180 |
3 files changed, 233 insertions, 1 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 72effa03c5..647e8fdff9 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -2119,6 +2119,18 @@ void samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_s void make_samr_r_create_dom_group(SAMR_R_CREATE_DOM_GROUP *r_u, POLICY_HND *pol, uint32 rid, uint32 status); void samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth); +void make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd); +void samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth); +void make_samr_r_delete_dom_group(SAMR_R_DELETE_DOM_GROUP *r_u, + uint32 status); +void samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth); +void make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e, + POLICY_HND *pol, + uint32 rid); +void samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth); +void make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol, + uint32 status); +void samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth); void make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM *q_e, POLICY_HND *pol, uint32 rid); @@ -2212,6 +2224,11 @@ void make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd, DOM_SID *sid); void samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth); void samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth); +void make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd); +void samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth); +void make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u, + uint32 status); +void samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth); void make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c, POLICY_HND *hnd); void samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth); void make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM *r_u, diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h index 620532a012..c35761ffeb 100644 --- a/source3/include/rpc_samr.h +++ b/source3/include/rpc_samr.h @@ -98,6 +98,8 @@ SamrTestPrivateFunctionsUser #define SAMR_QUERY_GROUPINFO 0x14 #define SAMR_SET_GROUPINFO 0x15 #define SAMR_ADD_GROUPMEM 0x16 +#define SAMR_DELETE_DOM_GROUP 0x17 +#define SAMR_DEL_GROUPMEM 0x18 #define SAMR_QUERY_GROUPMEM 0x19 #define SAMR_OPEN_ALIAS 0x1b @@ -694,6 +696,23 @@ typedef struct r_samr_query_dispinfo_info } SAMR_R_QUERY_DISPINFO; +/* SAMR_Q_DELETE_DOM_GROUP - delete domain group */ +typedef struct q_samr_delete_dom_group_info +{ + POLICY_HND group_pol; /* policy handle */ + +} SAMR_Q_DELETE_DOM_GROUP; + + +/* SAMR_R_DELETE_DOM_GROUP - delete domain group */ +typedef struct r_samr_delete_dom_group_info +{ + POLICY_HND pol; /* policy handle */ + uint32 status; /* return status */ + +} SAMR_R_DELETE_DOM_GROUP; + + /* SAMR_Q_CREATE_DOM_GROUP - SAM create group */ typedef struct q_samr_create_dom_group_info { @@ -1130,6 +1149,24 @@ typedef struct r_samr_query_groupmem_info } SAMR_R_QUERY_GROUPMEM; +/* SAMR_Q_DEL_GROUPMEM - probably an del group member */ +typedef struct q_samr_del_group_mem_info +{ + POLICY_HND pol; /* policy handle */ + + uint32 rid; /* rid */ + +} SAMR_Q_DEL_GROUPMEM; + + +/* SAMR_R_DEL_GROUPMEM - probably an del group member */ +typedef struct r_samr_del_group_mem_info +{ + uint32 status; /* return status */ + +} SAMR_R_DEL_GROUPMEM; + + /* SAMR_Q_ADD_GROUPMEM - probably an add group member */ typedef struct q_samr_add_group_mem_info { diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c index ac849a8987..5460d4773b 100644 --- a/source3/rpc_parse/parse_samr.c +++ b/source3/rpc_parse/parse_samr.c @@ -1480,6 +1480,128 @@ void samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_s prs_uint32("status", ps, depth, &(r_u->status)); } +/******************************************************************* +makes a SAMR_Q_DELETE_DOM_GROUP structure. +********************************************************************/ +void make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd) +{ + if (q_c == NULL || hnd == NULL) return; + + DEBUG(5,("make_samr_q_delete_dom_group\n")); + + memcpy(&(q_c->group_pol), hnd, sizeof(q_c->group_pol)); +} + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth) +{ + if (q_u == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_q_delete_dom_group"); + depth++; + + prs_align(ps); + + smb_io_pol_hnd("group_pol", &(q_u->group_pol), ps, depth); +} + +/******************************************************************* +makes a SAMR_R_DELETE_DOM_GROUP structure. +********************************************************************/ +void make_samr_r_delete_dom_group(SAMR_R_DELETE_DOM_GROUP *r_u, + uint32 status) +{ + if (r_u == NULL) return; + + DEBUG(5,("make_samr_r_delete_dom_group\n")); + + r_u->status = status; +} + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth) +{ + if (r_u == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_r_delete_dom_group"); + depth++; + + prs_align(ps); + + prs_uint32("status", ps, depth, &(r_u->status)); +} + + + +/******************************************************************* +makes a SAMR_Q_DEL_GROUPMEM structure. +********************************************************************/ +void make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e, + POLICY_HND *pol, + uint32 rid) +{ + if (q_e == NULL || pol == NULL) return; + + DEBUG(5,("make_samr_q_del_groupmem\n")); + + memcpy(&(q_e->pol), pol, sizeof(*pol)); + + q_e->rid = rid; +} + + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth) +{ + if (q_e == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_q_del_groupmem"); + depth++; + + prs_align(ps); + + smb_io_pol_hnd("pol", &(q_e->pol), ps, depth); + prs_align(ps); + + prs_uint32("rid ", ps, depth, &(q_e->rid)); +} + + +/******************************************************************* +makes a SAMR_R_DEL_GROUPMEM structure. +********************************************************************/ +void make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol, + uint32 status) +{ + if (r_u == NULL) return; + + DEBUG(5,("make_samr_r_del_groupmem\n")); + + r_u->status = status; +} + + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth) +{ + if (r_u == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_r_del_groupmem"); + depth++; + + prs_align(ps); + + prs_uint32("status", ps, depth, &(r_u->status)); +} + /******************************************************************* makes a SAMR_Q_ADD_GROUPMEM structure. @@ -2806,7 +2928,7 @@ void samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_s prs_uint32("rid", ps, depth, &(r_u->rid)); prs_uint32("status", ps, depth, &(r_u->status)); - } +} @@ -2904,6 +3026,62 @@ void samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *p } /******************************************************************* +makes a SAMR_Q_DELETE_DOM_ALIAS structure. +********************************************************************/ +void make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd) +{ + if (q_c == NULL || hnd == NULL) return; + + DEBUG(5,("make_samr_q_delete_dom_alias\n")); + + memcpy(&(q_c->alias_pol), hnd, sizeof(q_c->alias_pol)); +} + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth) +{ + if (q_u == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_q_delete_dom_alias"); + depth++; + + prs_align(ps); + + smb_io_pol_hnd("alias_pol", &(q_u->alias_pol), ps, depth); +} + +/******************************************************************* +makes a SAMR_R_DELETE_DOM_ALIAS structure. +********************************************************************/ +void make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u, + uint32 status) +{ + if (r_u == NULL) return; + + DEBUG(5,("make_samr_r_delete_dom_alias\n")); + + r_u->status = status; +} + +/******************************************************************* +reads or writes a structure. +********************************************************************/ +void samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth) +{ + if (r_u == NULL) return; + + prs_debug(ps, depth, desc, "samr_io_r_delete_dom_alias"); + depth++; + + prs_align(ps); + + prs_uint32("status", ps, depth, &(r_u->status)); +} + + +/******************************************************************* makes a SAMR_Q_QUERY_ALIASMEM structure. ********************************************************************/ void make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c, POLICY_HND *hnd) |