diff options
| author | Tim Potter <tpot@samba.org> | 2002-08-22 23:39:26 +0000 | 
|---|---|---|
| committer | Tim Potter <tpot@samba.org> | 2002-08-22 23:39:26 +0000 | 
| commit | 266fd83651bb5b2446e136492b82c836a8be095b (patch) | |
| tree | 357b96bbef47f907e5a1efb836f25cbd5b77146f | |
| parent | e6de7c24a5d60f0481eef9695780890e360802f9 (diff) | |
| download | samba-266fd83651bb5b2446e136492b82c836a8be095b.tar.gz samba-266fd83651bb5b2446e136492b82c836a8be095b.tar.bz2 samba-266fd83651bb5b2446e136492b82c836a8be095b.zip  | |
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 used to be commit 1f29276c2ff450c4ca3705c27fb0be71ddcda4ad)
| -rw-r--r-- | source3/include/rpc_netlogon.h | 51 | ||||
| -rw-r--r-- | source3/rpc_parse/parse_net.c | 39 | ||||
| -rw-r--r-- | source3/rpcclient/cmd_netlogon.c | 7 | ||||
| -rw-r--r-- | source3/rpcclient/samsync.c | 4 | 
4 files changed, 56 insertions, 45 deletions
diff --git a/source3/include/rpc_netlogon.h b/source3/include/rpc_netlogon.h index 190199e048..5ee8120c68 100644 --- a/source3/include/rpc_netlogon.h +++ b/source3/include/rpc_netlogon.h @@ -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 */ diff --git a/source3/rpc_parse/parse_net.c b/source3/rpc_parse/parse_net.c index 52cbc8e8df..ecab979ff2 100644 --- a/source3/rpc_parse/parse_net.c +++ b/source3/rpc_parse/parse_net.c @@ -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; diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c index c3bc9e5e13..198787f22b 100644 --- a/source3/rpcclient/cmd_netlogon.c +++ b/source3/rpcclient/cmd_netlogon.c @@ -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: diff --git a/source3/rpcclient/samsync.c b/source3/rpcclient/samsync.c index a8344cd5e2..710614469e 100644 --- a/source3/rpcclient/samsync.c +++ b/source3/rpcclient/samsync.c @@ -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;  | 
