return talloc_asprintf(mem_ctx,
"%llu",
(unsigned long long)id->pid);
+ } else if (id->vnn == NONCLUSTER_VNN) {
+ return talloc_asprintf(mem_ctx,
+ "%llu.%u",
+ (unsigned long long)id->pid,
+ (unsigned)id->task_id);
} else {
return talloc_asprintf(mem_ctx,
- "%u:%llu:%u",
+ "%u:%llu.%u",
(unsigned)id->vnn,
(unsigned long long)id->pid,
(unsigned)id->task_id);
ZERO_STRUCT(result);
- /* We accept either the 2 or 3 componet form for backwards compatability in the smbstatus command line tool */
- if (sscanf(pid_string, "%u:%llu:%u", &vnn, &pid, &task_id) >= 2) {
+ /* We accept various forms with 1, 2 or 3 component forms
+ * because the server_id_str() can print different forms, and
+ * we want backwards compatibility for scripts that may call
+ * smbclient. */
+ if (sscanf(pid_string, "%u:%llu.%u", &vnn, &pid, &task_id) == 3) {
result.vnn = vnn;
result.pid = pid;
result.task_id = task_id;
+ } else if (sscanf(pid_string, "%u:%llu", &vnn, &pid) == 2) {
+ result.vnn = vnn;
+ result.pid = pid;
+ result.task_id = 0;
+ } else if (sscanf(pid_string, "%llu.%u", &pid, &task_id) == 2) {
+ result.vnn = get_my_vnn();
+ result.pid = pid;
+ result.task_id = task_id;
} else if (sscanf(pid_string, "%d", &pid) == 1) {
result.vnn = get_my_vnn();
result.pid = pid;
- }
- else {
+ } else {
result.vnn = NONCLUSTER_VNN;
result.pid = (uint64_t)-1;
}