ERL_NIF_TERM vert_virSecretGetValue(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { VERT_RESOURCE *sp = NULL; u_int32_t flags = 0; size_t value_size = 0; unsigned char *secret = NULL; ERL_NIF_TERM buf = {0}; VERT_GET_RESOURCE(0, sp, VERT_RES_SECRET); VERT_GET_UINT(1, flags); secret = virSecretGetValue(sp->res, &value_size, flags); VERTERR(secret == NULL); BINCOPY(buf, secret, value_size); free(secret); return enif_make_tuple2(env, atom_ok, buf); }
ERL_NIF_TERM vert_virNodeNumOfDevices(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { VERT_RESOURCE *vp = NULL; ErlNifBinary cap = {0}; u_int32_t flags = 0; int n = 0; VERT_GET_RESOURCE(0, vp, VERT_RES_CONNECT); VERT_GET_IOLIST(1, cap); VERT_GET_UINT(2, flags); if (cap.size > 0) VERT_BIN_APPEND_NULL(cap); n = virNodeNumOfDevices(vp->res, (cap.size == 0 ? NULL : (char *)cap.data), flags); VERTERR(n < 0); return enif_make_tuple2(env, atom_ok, enif_make_int(env, n)); }
ERL_NIF_TERM vert_virSecretSetValue(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { VERT_RESOURCE *sp = NULL; ErlNifBinary value = {0}; u_int32_t flags = 0; VERT_GET_RESOURCE(0, sp, VERT_RES_SECRET); VERT_GET_IOLIST(1, value); VERT_GET_UINT(2, flags); VERTERR(virSecretSetValue(sp->res, value.data, value.size, flags) < 0); return atom_ok; }
ERL_NIF_TERM vert_virStoragePoolGetInfo(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { VERT_RESOURCE *sp = NULL; ErlNifBinary info = {0}; VERT_GET_RESOURCE(0, sp, VERT_RES_STORAGEPOOL); if (!enif_alloc_binary(sizeof(virStoragePoolInfo), &info)) return error_tuple(env, atom_enomem); VERTERR(virStoragePoolGetInfo(sp->res, (virStoragePoolInfoPtr)info.data) < 0); return enif_make_tuple2(env, atom_ok, enif_make_binary(env, &info)); }