1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-29 11:21:54 +03:00

Added some new delta types discovered by Ronnie from ethereal"

- SAM_DELTA_RENAME{USER,GROUP,ALIAS}
 - SAM_DELTA_DELETE{USER,GROUP}

Renamed some of the unknown delta types and their unmarshalling functions:

 - SAM_DELTA_TRUST_DOMS
 - SAM_DELTA_SECRET_INFO
This commit is contained in:
Tim Potter 0001-01-01 00:00:00 +00:00
parent 123eee6206
commit 1f29276c2f
4 changed files with 56 additions and 45 deletions

View File

@ -45,17 +45,22 @@
#define SEC_CHAN_BDC 6
/* Returned delta types */
#define SAM_DELTA_DOMAIN_INFO 0x01 /* Domain */
#define SAM_DELTA_GROUP_INFO 0x02 /* Domain groups */
#define SAM_DELTA_ACCOUNT_INFO 0x05 /* Users */
#define SAM_DELTA_GROUP_MEM 0x08 /* Group membership */
#define SAM_DELTA_ALIAS_INFO 0x09 /* Local groups */
#define SAM_DELTA_ALIAS_MEM 0x0C /* Local group membership */
#define SAM_DELTA_DOM_INFO 0x0D /* Privilege stuff */
#define SAM_DELTA_UNK0E_INFO 0x0e /* Privilege stuff */
#define SAM_DELTA_PRIVS_INFO 0x10 /* Privilege stuff */
#define SAM_DELTA_UNK12_INFO 0x12 /* Privilege stuff */
#define SAM_DELTA_SAM_STAMP 0x16 /* Some kind of journal record? */
#define SAM_DELTA_DOMAIN_INFO 0x01
#define SAM_DELTA_GROUP_INFO 0x02
#define SAM_DELTA_RENAME_GROUP 0x04
#define SAM_DELTA_ACCOUNT_INFO 0x05
#define SAM_DELTA_RENAME_USER 0x07
#define SAM_DELTA_GROUP_MEM 0x08
#define SAM_DELTA_ALIAS_INFO 0x09
#define SAM_DELTA_RENAME_ALIAS 0x0b
#define SAM_DELTA_ALIAS_MEM 0x0c
#define SAM_DELTA_POLICY_INFO 0x0d
#define SAM_DELTA_TRUST_DOMS 0x0e
#define SAM_DELTA_PRIVS_INFO 0x10 /* DT_DELTA_ACCOUNTS */
#define SAM_DELTA_SECRET_INFO 0x12
#define SAM_DELTA_DELETE_GROUP 0x14
#define SAM_DELTA_DELETE_USER 0x15
#define SAM_DELTA_MODIFIED_COUNT 0x16
/* SAM database types */
#define SAM_DATABASE_DOMAIN 0x00 /* Domain users and groups */
@ -711,7 +716,7 @@ typedef struct sam_alias_mem_info_info
} SAM_ALIAS_MEM_INFO;
/* SAM_DELTA_DOM (0x0D) */
/* SAM_DELTA_POLICY (0x0D) */
typedef struct
{
uint32 unknown1; /* 0x5000 */
@ -753,9 +758,9 @@ typedef struct
UNISTR2 domain_name;
DOM_SID2 domain_sid;
} SAM_DELTA_DOM;
} SAM_DELTA_POLICY;
/* SAM_DELTA_UNK0E (0x0e) */
/* SAM_DELTA_TRUST_DOMS */
typedef struct
{
uint32 buf_size;
@ -773,7 +778,7 @@ typedef struct
uint32 unknown3;
UNISTR2 domain;
} SAM_DELTA_UNK0E;
} SAM_DELTA_TRUSTDOMS;
/* SAM_DELTA_PRIVS (0x10) */
typedef struct
@ -812,7 +817,7 @@ typedef struct
} SAM_DELTA_PRIVS;
/* SAM_DELTA_UNK12 (0x12) */
/* SAM_DELTA_SECRET */
typedef struct
{
uint32 buf_size;
@ -846,15 +851,15 @@ typedef struct
uint32 buf_size3;
SEC_DESC *sec_desc2;
} SAM_DELTA_UNK12;
} SAM_DELTA_SECRET;
/* SAM_DELTA_STAMP (0x16) */
/* SAM_DELTA_MOD_COUNT (0x16) */
typedef struct
{
uint32 seqnum;
uint32 dom_mod_count_ptr;
UINT64_S dom_mod_count; /* domain mod count at last sync */
} SAM_DELTA_STAMP;
} SAM_DELTA_MOD_COUNT;
typedef union sam_delta_ctr_info
{
@ -864,11 +869,11 @@ typedef union sam_delta_ctr_info
SAM_GROUP_MEM_INFO grp_mem_info;
SAM_ALIAS_INFO alias_info ;
SAM_ALIAS_MEM_INFO als_mem_info;
SAM_DELTA_DOM dom_info;
SAM_DELTA_POLICY policy_info;
SAM_DELTA_PRIVS privs_info;
SAM_DELTA_STAMP stamp;
SAM_DELTA_UNK0E unk0e_info;
SAM_DELTA_UNK12 unk12_info;
SAM_DELTA_MOD_COUNT mod_count;
SAM_DELTA_TRUSTDOMS trustdoms_info;
SAM_DELTA_SECRET secret_info;
} SAM_DELTA_CTR;
/* NET_R_SAM_SYNC */

View File

@ -1779,7 +1779,7 @@ static BOOL net_io_sam_delta_hdr(char *desc, SAM_DELTA_HDR * delta,
/*******************************************************************
reads or writes a structure.
********************************************************************/
static BOOL net_io_sam_delta_stamp(char *desc, SAM_DELTA_STAMP *info,
static BOOL net_io_sam_delta_mod_count(char *desc, SAM_DELTA_MOD_COUNT *info,
prs_struct *ps, int depth)
{
prs_debug(ps, depth, desc, "net_io_sam_delta_stamp");
@ -2386,12 +2386,12 @@ static BOOL net_io_sam_alias_mem_info(char *desc, SAM_ALIAS_MEM_INFO * info,
/*******************************************************************
reads or writes a structure.
********************************************************************/
static BOOL net_io_sam_dom_info(char *desc, SAM_DELTA_DOM *info,
static BOOL net_io_sam_policy_info(char *desc, SAM_DELTA_POLICY *info,
prs_struct *ps, int depth)
{
int i;
prs_debug(ps, depth, desc, "net_io_sam_dom_info");
prs_debug(ps, depth, desc, "net_io_sam_policy_info");
depth++;
if(!prs_align(ps))
@ -2476,12 +2476,12 @@ static BOOL net_io_sam_dom_info(char *desc, SAM_DELTA_DOM *info,
/*******************************************************************
reads or writes a structure.
********************************************************************/
static BOOL net_io_sam_unk0e_info(char *desc, SAM_DELTA_UNK0E *info,
static BOOL net_io_sam_trustdoms_info(char *desc, SAM_DELTA_TRUSTDOMS *info,
prs_struct *ps, int depth)
{
int i;
prs_debug(ps, depth, desc, "net_io_sam_unk0e_info");
prs_debug(ps, depth, desc, "net_io_sam_trustdoms_info");
depth++;
if(!prs_align(ps))
@ -2524,12 +2524,12 @@ static BOOL net_io_sam_unk0e_info(char *desc, SAM_DELTA_UNK0E *info,
/*******************************************************************
reads or writes a structure.
********************************************************************/
static BOOL net_io_sam_unk12_info(char *desc, SAM_DELTA_UNK12 *info,
prs_struct *ps, int depth)
static BOOL net_io_sam_secret_info(char *desc, SAM_DELTA_SECRET *info,
prs_struct *ps, int depth)
{
int i;
prs_debug(ps, depth, desc, "net_io_sam_unk12_info");
prs_debug(ps, depth, desc, "net_io_sam_secret_info");
depth++;
if(!prs_align(ps))
@ -2707,8 +2707,8 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
switch (type) {
/* Seen in sam deltas */
case SAM_DELTA_SAM_STAMP:
if (!net_io_sam_delta_stamp("", &delta->stamp, ps, depth))
case SAM_DELTA_MODIFIED_COUNT:
if (!net_io_sam_delta_mod_count("", &delta->mod_count, ps, depth))
return False;
break;
@ -2737,8 +2737,8 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
return False;
break;
case SAM_DELTA_DOM_INFO:
if (!net_io_sam_dom_info("", &delta->dom_info, ps, depth))
case SAM_DELTA_POLICY_INFO:
if (!net_io_sam_policy_info("", &delta->policy_info, ps, depth))
return False;
break;
@ -2752,16 +2752,23 @@ static BOOL net_io_sam_delta_ctr(char *desc, uint8 sess_key[16],
return False;
break;
case SAM_DELTA_UNK0E_INFO:
if (!net_io_sam_unk0e_info("", &delta->unk0e_info, ps, depth))
case SAM_DELTA_TRUST_DOMS:
if (!net_io_sam_trustdoms_info("", &delta->trustdoms_info, ps, depth))
return False;
break;
case SAM_DELTA_UNK12_INFO:
if (!net_io_sam_unk12_info("", &delta->unk12_info, ps, depth))
case SAM_DELTA_SECRET_INFO:
if (!net_io_sam_secret_info("", &delta->secret_info, ps, depth))
return False;
break;
/* These guys are not implemented yet */
case SAM_DELTA_RENAME_GROUP:
case SAM_DELTA_RENAME_USER:
case SAM_DELTA_RENAME_ALIAS:
case SAM_DELTA_DELETE_GROUP:
case SAM_DELTA_DELETE_USER:
default:
DEBUG(0, ("Replication error: Unknown delta type 0x%x\n", type));
break;

View File

@ -125,11 +125,10 @@ static void display_sam_sync(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas,
group->rids[j], group->attribs[j]);
break;
}
case SAM_DELTA_SAM_STAMP: {
SAM_DELTA_STAMP *stamp = &deltas[i].stamp;
case SAM_DELTA_MODIFIED_COUNT: {
SAM_DELTA_MOD_COUNT *mc = &deltas[i].mod_count;
printf("sam sequence update: 0x%04x\n",
stamp->seqnum);
printf("sam sequence update: 0x%04x\n", mc->seqnum);
break;
}
default:

View File

@ -217,8 +217,8 @@ static void decode_sam_deltas(uint32 num_deltas, SAM_DELTA_HDR *hdr_deltas, SAM_
decode_sam_als_mem_info(a);
break;
}
case SAM_DELTA_DOM_INFO: {
SAM_DELTA_DOM *a;
case SAM_DELTA_POLICY_INFO: {
SAM_DELTA_POLICY *a;
a = &deltas[i].dom_info;
decode_sam_dom_info(a);
break;