/* Unix SMB/CIFS implementation. diagnosis tools for web admin Copyright (C) Andrew Tridgell 1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "includes.h" #include "web/swat_proto.h" #include "lib/winbind_util.h" #ifdef WITH_WINBIND /* check to see if winbind is running by pinging it */ bool winbindd_running(void) { return winbind_ping(); } #endif /* check to see if nmbd is running on localhost by looking for a __SAMBA__ response */ bool nmbd_running(void) { struct in_addr loopback_ip; int count; struct sockaddr_storage *ss_list; struct sockaddr_storage ss; NTSTATUS status; loopback_ip.s_addr = htonl(INADDR_LOOPBACK); in_addr_to_sockaddr_storage(&ss, loopback_ip); status = name_query("__SAMBA__", 0, True, True, &ss, talloc_tos(), &ss_list, &count, NULL); if (NT_STATUS_IS_OK(status)) { TALLOC_FREE(ss_list); return True; } return False; } /* check to see if smbd is running on localhost by trying to open a connection then closing it */ bool smbd_running(void) { struct in_addr loopback_ip; NTSTATUS status; struct cli_state *cli; struct sockaddr_storage ss; loopback_ip.s_addr = htonl(INADDR_LOOPBACK); in_addr_to_sockaddr_storage(&ss, loopback_ip); if ((cli = cli_initialise()) == NULL) return False; status = cli_connect(cli, global_myname(), &ss); if (!NT_STATUS_IS_OK(status)) { cli_shutdown(cli); return False; } cli_shutdown(cli); return True; }