//Allocates memory! //Gets the dependencies of a VM (specified by xenstore path), and places the //results as a GPtrArray in *ary. Returns 0 on failure or 1 on success. int get_vm_dependencies(const char * vm_path, GPtrArray ** ary) { GValue gval; int status; status = dbus_get_property(xcdbus_conn, XENMGR_SERVICE, vm_path, XENMGR_VM_INTERFACE, "dependencies", &gval); *ary = (GPtrArray *)g_value_get_boxed(&gval); return status; }
ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request, ipmi_response_t response, ipmi_data_len_t data_len, ipmi_context_t context) { ipmi_ret_t rc = IPMI_CC_PARM_NOT_SUPPORTED; char *p = NULL; get_sys_boot_options_response_t *resp = (get_sys_boot_options_response_t *) response; get_sys_boot_options_t *reqptr = (get_sys_boot_options_t*) request; uint8_t s; printf("IPMI GET_SYS_BOOT_OPTIONS\n"); memset(resp,0,sizeof(*resp)); resp->version = SET_PARM_VERSION; resp->parm = 5; resp->data[0] = SET_PARM_BOOT_FLAGS_VALID; *data_len = sizeof(*resp); /* * Parameter #5 means boot flags. Please refer to 28.13 of ipmi doc. * This is the only parameter used by petitboot. */ if (reqptr->parameter == 5) { int r = dbus_get_property(&p); if (r < 0) { fprintf(stderr, "Dbus get property failed for get_sys_boot_options.\n"); rc = IPMI_CC_UNSPECIFIED_ERROR; } else { s = get_ipmi_boot_option(p); resp->data[1] = (s << 2); rc = IPMI_CC_OK; } } else { fprintf(stderr, "Unsupported parameter 0x%x\n", reqptr->parameter); } if (p) free(p); return rc; }
ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request, ipmi_response_t response, ipmi_data_len_t data_len, ipmi_context_t context) { ipmi_ret_t rc = IPMI_CC_PARM_NOT_SUPPORTED; char *p = NULL; get_sys_boot_options_response_t *resp = (get_sys_boot_options_response_t *) response; get_sys_boot_options_t *reqptr = (get_sys_boot_options_t*) request; uint8_t s; printf("IPMI GET_SYS_BOOT_OPTIONS\n"); memset(resp,0,sizeof(*resp)); resp->version = SET_PARM_VERSION; resp->parm = 5; resp->data[0] = SET_PARM_BOOT_FLAGS_VALID_ONE_TIME; *data_len = sizeof(*resp); /* * Parameter #5 means boot flags. Please refer to 28.13 of ipmi doc. * This is the only parameter used by petitboot. */ if (reqptr->parameter == 5) { /* Get the boot device */ int r = dbus_get_property("boot_flags",&p); if (r < 0) { fprintf(stderr, "Dbus get property(boot_flags) failed for get_sys_boot_options.\n"); rc = IPMI_CC_UNSPECIFIED_ERROR; } else { s = get_ipmi_boot_option(p); resp->data[1] = (s << 2); rc = IPMI_CC_OK; } if (p) { free(p); p = NULL; } /* Get the boot policy */ r = dbus_get_property("boot_policy",&p); if (r < 0) { fprintf(stderr, "Dbus get property(boot_policy) failed for get_sys_boot_options.\n"); rc = IPMI_CC_UNSPECIFIED_ERROR; } else { printf("BootPolicy is[%s]", p); resp->data[0] = (strncmp(p,"ONETIME",strlen("ONETIME"))==0) ? SET_PARM_BOOT_FLAGS_VALID_ONE_TIME: SET_PARM_BOOT_FLAGS_VALID_PERMANENT; rc = IPMI_CC_OK; } } else { fprintf(stderr, "Unsupported parameter 0x%x\n", reqptr->parameter); } if (p) free(p); return rc; }