static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen, uint32_t opcode, TALLOC_CTX *mem_ctx, struct ctdb_reply_control_data *cd, size_t *npull) { size_t np = 0; int ret = 0; cd->opcode = opcode; switch (opcode) { case CTDB_CONTROL_STATISTICS: ret = ctdb_statistics_pull(buf, buflen, mem_ctx, &cd->data.stats, &np); break; case CTDB_CONTROL_GETDBPATH: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.db_path, &np); break; case CTDB_CONTROL_GETVNNMAP: ret = ctdb_vnn_map_pull(buf, buflen, mem_ctx, &cd->data.vnnmap, &np); break; case CTDB_CONTROL_GET_DEBUG: ret = ctdb_uint32_pull(buf, buflen, &cd->data.loglevel, &np); break; case CTDB_CONTROL_GET_DBMAP: ret = ctdb_dbid_map_pull(buf, buflen, mem_ctx, &cd->data.dbmap, &np); break; case CTDB_CONTROL_PULL_DB: ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf, &np); break; case CTDB_CONTROL_PUSH_DB: break; case CTDB_CONTROL_DB_ATTACH: ret = ctdb_uint32_pull(buf, buflen, &cd->data.db_id, &np); break; case CTDB_CONTROL_GET_DBNAME: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.db_name, &np); break; case CTDB_CONTROL_DUMP_MEMORY: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.mem_str, &np); break; case CTDB_CONTROL_GET_PID: break; case CTDB_CONTROL_GET_RECMASTER: break; case CTDB_CONTROL_GET_TUNABLE: ret = ctdb_uint32_pull(buf, buflen, &cd->data.tun_value, &np); break; case CTDB_CONTROL_LIST_TUNABLES: ret = ctdb_var_list_pull(buf, buflen, mem_ctx, &cd->data.tun_var_list, &np); break; case CTDB_CONTROL_GET_ALL_TUNABLES: ret = ctdb_tunable_list_pull(buf, buflen, mem_ctx, &cd->data.tun_list, &np); break; case CTDB_CONTROL_GET_TCP_TICKLE_LIST: ret = ctdb_tickle_list_pull(buf, buflen, mem_ctx, &cd->data.tickles, &np); break; case CTDB_CONTROL_DB_ATTACH_PERSISTENT: ret = ctdb_uint32_pull(buf, buflen, &cd->data.db_id, &np); break; case CTDB_CONTROL_UPTIME: ret = ctdb_uptime_pull(buf, buflen, mem_ctx, &cd->data.uptime, &np); break; case CTDB_CONTROL_TRY_DELETE_RECORDS: ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf, &np); break; case CTDB_CONTROL_GET_CAPABILITIES: ret = ctdb_uint32_pull(buf, buflen, &cd->data.caps, &np); break; case CTDB_CONTROL_GET_PUBLIC_IPS: ret = ctdb_public_ip_list_pull(buf, buflen, mem_ctx, &cd->data.pubip_list, &np); break; case CTDB_CONTROL_GET_NODEMAP: ret = ctdb_node_map_pull(buf, buflen, mem_ctx, &cd->data.nodemap, &np); break; case CTDB_CONTROL_GET_RECLOCK_FILE: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.reclock_file, &np); break; case CTDB_CONTROL_GET_BAN_STATE: ret = ctdb_ban_state_pull(buf, buflen, mem_ctx, &cd->data.ban_state, &np); break; case CTDB_CONTROL_GET_DB_PRIORITY: break; case CTDB_CONTROL_GET_DB_SEQNUM: ret = ctdb_uint64_pull(buf, buflen, &cd->data.seqnum, &np); break; case CTDB_CONTROL_DB_GET_HEALTH: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.reason, &np); break; case CTDB_CONTROL_GET_PUBLIC_IP_INFO: ret = ctdb_public_ip_info_pull(buf, buflen, mem_ctx, &cd->data.ipinfo, &np); break; case CTDB_CONTROL_GET_IFACES: ret = ctdb_iface_list_pull(buf, buflen, mem_ctx, &cd->data.iface_list, &np); break; case CTDB_CONTROL_GET_STAT_HISTORY: ret = ctdb_statistics_list_pull(buf, buflen, mem_ctx, &cd->data.stats_list, &np); break; case CTDB_CONTROL_CHECK_SRVIDS: break; case CTDB_CONTROL_GET_DB_STATISTICS: ret = ctdb_db_statistics_pull(buf, buflen, mem_ctx, &cd->data.dbstats, &np); break; case CTDB_CONTROL_RECEIVE_RECORDS: ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf, &np); break; case CTDB_CONTROL_GET_RUNSTATE: ret = ctdb_uint32_pull(buf, buflen, &cd->data.runstate, &np); break; case CTDB_CONTROL_GET_NODES_FILE: ret = ctdb_node_map_pull(buf, buflen, mem_ctx, &cd->data.nodemap, &np); break; case CTDB_CONTROL_DB_PULL: ret = ctdb_uint32_pull(buf, buflen, &cd->data.num_records, &np); break; case CTDB_CONTROL_DB_PUSH_CONFIRM: ret = ctdb_uint32_pull(buf, buflen, &cd->data.num_records, &np); break; case CTDB_CONTROL_DB_OPEN_FLAGS: ret = ctdb_int32_pull(buf, buflen, &cd->data.tdb_flags, &np); break; case CTDB_CONTROL_DB_ATTACH_REPLICATED: ret = ctdb_uint32_pull(buf, buflen, &cd->data.db_id, &np); break; case CTDB_CONTROL_CHECK_PID_SRVID: break; } if (ret != 0) { return ret; } *npull = np; return 0; }
static int ctdb_reply_control_data_pull(uint8_t *buf, size_t buflen, uint32_t opcode, TALLOC_CTX *mem_ctx, struct ctdb_reply_control_data *cd) { int ret = 0; cd->opcode = opcode; switch (opcode) { case CTDB_CONTROL_STATISTICS: ret = ctdb_statistics_pull(buf, buflen, mem_ctx, &cd->data.stats); break; case CTDB_CONTROL_GETDBPATH: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.db_path); break; case CTDB_CONTROL_GETVNNMAP: ret = ctdb_vnn_map_pull(buf, buflen, mem_ctx, &cd->data.vnnmap); break; case CTDB_CONTROL_GET_DEBUG: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.loglevel); break; case CTDB_CONTROL_GET_DBMAP: ret = ctdb_dbid_map_pull(buf, buflen, mem_ctx, &cd->data.dbmap); break; case CTDB_CONTROL_PULL_DB: ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf); break; case CTDB_CONTROL_PUSH_DB: break; case CTDB_CONTROL_DB_ATTACH: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.db_id); break; case CTDB_CONTROL_GET_DBNAME: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.db_name); break; case CTDB_CONTROL_DUMP_MEMORY: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.mem_str); break; case CTDB_CONTROL_GET_PID: break; case CTDB_CONTROL_GET_RECMASTER: break; case CTDB_CONTROL_GET_TUNABLE: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.tun_value); break; case CTDB_CONTROL_LIST_TUNABLES: ret = ctdb_var_list_pull(buf, buflen, mem_ctx, &cd->data.tun_var_list); break; case CTDB_CONTROL_GET_ALL_TUNABLES: ret = ctdb_tunable_list_pull(buf, buflen, mem_ctx, &cd->data.tun_list); break; case CTDB_CONTROL_GET_TCP_TICKLE_LIST: ret = ctdb_tickle_list_pull(buf, buflen, mem_ctx, &cd->data.tickles); break; case CTDB_CONTROL_GET_SERVER_ID_LIST: ret = ctdb_client_id_map_pull(buf, buflen, mem_ctx, &cd->data.cid_map); break; case CTDB_CONTROL_DB_ATTACH_PERSISTENT: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.db_id); break; case CTDB_CONTROL_UPTIME: ret = ctdb_uptime_pull(buf, buflen, mem_ctx, &cd->data.uptime); break; case CTDB_CONTROL_TRY_DELETE_RECORDS: ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf); break; case CTDB_CONTROL_GET_CAPABILITIES: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.caps); break; case CTDB_CONTROL_GET_PUBLIC_IPS: ret = ctdb_public_ip_list_pull(buf, buflen, mem_ctx, &cd->data.pubip_list); break; case CTDB_CONTROL_GET_NODEMAP: ret = ctdb_node_map_pull(buf, buflen, mem_ctx, &cd->data.nodemap); break; case CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS: ret = ctdb_script_list_pull(buf, buflen, mem_ctx, &cd->data.script_list); break; case CTDB_CONTROL_GET_RECLOCK_FILE: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.reclock_file); break; case CTDB_CONTROL_GET_BAN_STATE: ret = ctdb_ban_state_pull(buf, buflen, mem_ctx, &cd->data.ban_state); break; case CTDB_CONTROL_GET_DB_PRIORITY: break; case CTDB_CONTROL_GET_DB_SEQNUM: ret = ctdb_uint64_pull(buf, buflen, mem_ctx, &cd->data.seqnum); break; case CTDB_CONTROL_DB_GET_HEALTH: ret = ctdb_string_pull(buf, buflen, mem_ctx, &cd->data.reason); break; case CTDB_CONTROL_GET_PUBLIC_IP_INFO: ret = ctdb_public_ip_info_pull(buf, buflen, mem_ctx, &cd->data.ipinfo); break; case CTDB_CONTROL_GET_IFACES: ret = ctdb_iface_list_pull(buf, buflen, mem_ctx, &cd->data.iface_list); break; case CTDB_CONTROL_GET_STAT_HISTORY: ret = ctdb_statistics_list_pull(buf, buflen, mem_ctx, &cd->data.stats_list); break; case CTDB_CONTROL_CHECK_SRVIDS: ret = ctdb_uint8_array_pull(buf, buflen, mem_ctx, &cd->data.u8_array); break; case CTDB_CONTROL_GET_DB_STATISTICS: ret = ctdb_db_statistics_pull(buf, buflen, mem_ctx, &cd->data.dbstats); break; case CTDB_CONTROL_RECEIVE_RECORDS: ret = ctdb_rec_buffer_pull(buf, buflen, mem_ctx, &cd->data.recbuf); break; case CTDB_CONTROL_GET_RUNSTATE: ret = ctdb_uint32_pull(buf, buflen, mem_ctx, &cd->data.runstate); break; case CTDB_CONTROL_GET_NODES_FILE: ret = ctdb_node_map_pull(buf, buflen, mem_ctx, &cd->data.nodemap); break; } return ret; }