+static void parse_samsync_partial_replication_objects(TALLOC_CTX *mem_ctx,
+ int argc,
+ const char **argv,
+ bool *do_single_object_replication,
+ struct samsync_object **objects,
+ uint32_t *num_objects)
+{
+ int i;
+
+ if (argc > 0) {
+ *do_single_object_replication = true;
+ }
+
+ for (i=0; i<argc; i++) {
+
+ struct samsync_object o;
+
+ ZERO_STRUCT(o);
+
+ if (!StrnCaseCmp(argv[i], "user_rid=", strlen("user_rid="))) {
+ o.object_identifier.rid = get_int_param(argv[i]);
+ o.object_type = NETR_DELTA_USER;
+ o.database_id = SAM_DATABASE_DOMAIN;
+ }
+ if (!StrnCaseCmp(argv[i], "group_rid=", strlen("group_rid="))) {
+ o.object_identifier.rid = get_int_param(argv[i]);
+ o.object_type = NETR_DELTA_GROUP;
+ o.database_id = SAM_DATABASE_DOMAIN;
+ }
+ if (!StrnCaseCmp(argv[i], "group_member_rid=", strlen("group_member_rid="))) {
+ o.object_identifier.rid = get_int_param(argv[i]);
+ o.object_type = NETR_DELTA_GROUP_MEMBER;
+ o.database_id = SAM_DATABASE_DOMAIN;
+ }
+ if (!StrnCaseCmp(argv[i], "alias_rid=", strlen("alias_rid="))) {
+ o.object_identifier.rid = get_int_param(argv[i]);
+ o.object_type = NETR_DELTA_ALIAS;
+ o.database_id = SAM_DATABASE_BUILTIN;
+ }
+ if (!StrnCaseCmp(argv[i], "alias_member_rid=", strlen("alias_member_rid="))) {
+ o.object_identifier.rid = get_int_param(argv[i]);
+ o.object_type = NETR_DELTA_ALIAS_MEMBER;
+ o.database_id = SAM_DATABASE_BUILTIN;
+ }
+ if (!StrnCaseCmp(argv[i], "account_sid=", strlen("account_sid="))) {
+ const char *sid_str = get_string_param(argv[i]);
+ string_to_sid(&o.object_identifier.sid, sid_str);
+ o.object_type = NETR_DELTA_ACCOUNT;
+ o.database_id = SAM_DATABASE_PRIVS;
+ }
+ if (!StrnCaseCmp(argv[i], "policy_sid=", strlen("policy_sid="))) {
+ const char *sid_str = get_string_param(argv[i]);
+ string_to_sid(&o.object_identifier.sid, sid_str);
+ o.object_type = NETR_DELTA_POLICY;
+ o.database_id = SAM_DATABASE_PRIVS;
+ }
+ if (!StrnCaseCmp(argv[i], "trustdom_sid=", strlen("trustdom_sid="))) {
+ const char *sid_str = get_string_param(argv[i]);
+ string_to_sid(&o.object_identifier.sid, sid_str);
+ o.object_type = NETR_DELTA_TRUSTED_DOMAIN;
+ o.database_id = SAM_DATABASE_PRIVS;
+ }
+ if (!StrnCaseCmp(argv[i], "secret_name=", strlen("secret_name="))) {
+ o.object_identifier.name = get_string_param(argv[i]);
+ o.object_type = NETR_DELTA_SECRET;
+ o.database_id = SAM_DATABASE_PRIVS;
+ }
+
+ if (o.object_type > 0) {
+ ADD_TO_ARRAY(mem_ctx, struct samsync_object, o,
+ objects, num_objects);
+ }
+ }
+}
+