int ctdb_ctrl_getpnn(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode)
{
int ret;
- int32_t res;
+ uint32_t pnn;
+ ctdb_handle *handle;
- ret = ctdb_control(ctdb, destnode, 0,
- CTDB_CONTROL_GET_PNN, 0, tdb_null,
- NULL, NULL, &res, &timeout, NULL);
+ handle = ctdb_getpnn_send(ctdb, destnode, NULL, NULL);
+ if (handle == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ " Failed to send getpnn control\n"));
+ return -1;
+ }
+
+ if (!timeval_is_zero(&timeout)) {
+ event_add_timed(ctdb->ev, handle, timeout, ctdb_control_timeout_func, handle);
+ }
+
+ ret = ctdb_getpnn_recv(ctdb, handle, &pnn);
if (ret != 0) {
DEBUG(DEBUG_ERR,(__location__ " ctdb_control for getpnn failed\n"));
return -1;
}
- return res;
+ return pnn;
}
/*