Line data Source code
1 : /* 2 : * Unix SMB/CIFS implementation. 3 : * Samba utility functions 4 : * Copyright (C) Andrew Tridgell 1992-1998 5 : * Copyright (C) Jeremy Allison 2001-2007 6 : * Copyright (C) Simo Sorce 2001 7 : * Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003 8 : * Copyright (C) James Peach 2006 9 : * 10 : * This program is free software; you can redistribute it and/or modify 11 : * it under the terms of the GNU General Public License as published by 12 : * the Free Software Foundation; either version 3 of the License, or 13 : * (at your option) any later version. 14 : * 15 : * This program is distributed in the hope that it will be useful, 16 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 : * GNU General Public License for more details. 19 : * 20 : * You should have received a copy of the GNU General Public License 21 : * along with this program. If not, see <http://www.gnu.org/licenses/>. 22 : */ 23 : 24 : #include "util_procid.h" 25 : #include "lib/util/debug.h" 26 : #include "lib/messaging/messages_dgm.h" 27 : 28 37058 : pid_t procid_to_pid(const struct server_id *proc) 29 : { 30 37058 : return proc->pid; 31 : } 32 : 33 : static uint32_t my_vnn = NONCLUSTER_VNN; 34 : 35 0 : void set_my_vnn(uint32_t vnn) 36 : { 37 0 : DEBUG(10, ("vnn pid %d = %u\n", (int)getpid(), (unsigned int)vnn)); 38 0 : my_vnn = vnn; 39 0 : } 40 : 41 5409 : uint32_t get_my_vnn(void) 42 : { 43 5409 : return my_vnn; 44 : } 45 : 46 52993 : struct server_id pid_to_procid(pid_t pid) 47 : { 48 52993 : uint64_t unique = 0; 49 5 : int ret; 50 : 51 52993 : ret = messaging_dgm_get_unique(pid, &unique); 52 52993 : if (ret != 0) { 53 0 : DBG_NOTICE("messaging_dgm_get_unique failed: %s\n", 54 : strerror(ret)); 55 : } 56 : 57 52993 : return (struct server_id) { 58 : .pid = pid, .unique_id = unique, .vnn = my_vnn }; 59 : } 60 : 61 412 : bool procid_valid(const struct server_id *pid) 62 : { 63 412 : return (pid->pid != (uint64_t)-1); 64 : } 65 : 66 55418 : bool procid_is_local(const struct server_id *pid) 67 : { 68 55418 : return pid->vnn == my_vnn; 69 : }