/* Description: * Edits or displays the contents of a replication instance file. * Parameters: None * Return Value: None */ void repl_inst_edit(void) { unsigned short inst_fn_len; char inst_fn[MAX_FN_LEN + 1], buff_unaligned[REPL_INST_HDR_SIZE + GTMSRC_LCL_SIZE + 8]; char *buff; repl_inst_hdr_ptr_t repl_instance; gtmsrc_lcl_ptr_t gtmsrclcl_ptr; uint4 offset, size; gtm_uint64_t value; boolean_t value_present; error_def(ERR_MUPCLIERR); in_repl_inst_edit = TRUE; inst_fn_len = MAX_FN_LEN; if (!cli_get_str("INSTFILE", inst_fn, &inst_fn_len) || (0 == inst_fn_len)) rts_error(VARLSTCNT(1) ERR_MUPCLIERR); inst_fn[inst_fn_len] = '\0'; buff = &buff_unaligned[0]; buff = (char *)ROUND_UP2((INTPTR_T)buff, 8); if (CLI_PRESENT == cli_present("SHOW")) { print_offset = (CLI_PRESENT == cli_present("DETAIL")); repl_inst_read(inst_fn, (off_t)0, (sm_uc_ptr_t)buff, REPL_INST_HDR_SIZE + GTMSRC_LCL_SIZE); util_out_print("GTM-I-MUREPLSHOW, SHOW output for replication instance file !AD", TRUE, inst_fn_len, inst_fn); repl_instance = (repl_inst_hdr_ptr_t)&buff[0]; section_offset = 0; repl_inst_dump_filehdr(repl_instance); section_offset = REPL_INST_HDR_SIZE; repl_inst_dump_gtmsrclcl((gtmsrc_lcl_ptr_t)&buff[REPL_INST_HDR_SIZE]); section_offset = REPL_INST_TRIPLE_OFFSET; repl_inst_dump_triplehist(inst_fn, repl_instance->num_triples); } if (CLI_PRESENT == cli_present("CHANGE")) { mupcli_get_offset_size_value(&offset, &size, &value, &value_present); assert(size <= REPL_INST_HDR_SIZE + GTMSRC_LCL_SIZE); repl_inst_read(inst_fn, (off_t)offset, (sm_uc_ptr_t)buff, size); mupcli_edit_offset_size_value((sm_uc_ptr_t)buff, offset, size, value, value_present); repl_inst_write(inst_fn, (off_t)offset, (sm_uc_ptr_t)buff, size); } in_repl_inst_edit = FALSE; }
int gtmsource_jnlpool(void) { uint4 offset, size; gtm_uint64_t value; boolean_t value_present; assert(holds_sem[SOURCE][JNL_POOL_ACCESS_SEM]); assert(NULL == jnlpool.gtmsource_local); if (CLI_PRESENT == cli_present("NAME")) { util_out_print("Error: NAME cannot be used with JNLPOOL", TRUE); rts_error(VARLSTCNT(1) ERR_MUPCLIERR); } if (CLI_PRESENT == cli_present("SHOW")) { detail_specified = (CLI_PRESENT == cli_present("DETAIL")); section_offset = 0; repl_inst_dump_jnlpoolctl(jnlpool.jnlpool_ctl); section_offset = (uint4)((sm_uc_ptr_t)jnlpool.repl_inst_filehdr - (sm_uc_ptr_t)jnlpool.jnlpool_ctl); repl_inst_dump_filehdr(jnlpool.repl_inst_filehdr); section_offset = (uint4)((sm_uc_ptr_t)jnlpool.gtmsrc_lcl_array - (sm_uc_ptr_t)jnlpool.jnlpool_ctl); repl_inst_dump_gtmsrclcl(jnlpool.gtmsrc_lcl_array); section_offset = (uint4)((sm_uc_ptr_t)jnlpool.gtmsource_local_array - (sm_uc_ptr_t)jnlpool.jnlpool_ctl); repl_inst_dump_gtmsourcelocal(jnlpool.gtmsource_local_array); } if (CLI_PRESENT == cli_present("CHANGE")) { mupcli_get_offset_size_value(&offset, &size, &value, &value_present); if (size > jnlpool.jnlpool_ctl->jnlpool_size) { util_out_print("Error: SIZE specified [0x!XL] is greater than size of journal pool [0x!XL]", TRUE, size, jnlpool.jnlpool_ctl->jnlpool_size); rts_error(VARLSTCNT(1) ERR_MUPCLIERR); } mupcli_edit_offset_size_value(&((sm_uc_ptr_t)jnlpool.jnlpool_ctl)[offset], offset, size, value, value_present); } return (NORMAL_SHUTDOWN); }