#include "includes.h" extern bool AllowDebugChange; static int ServerFD= -1; static bool RootPort = false; /**************************************************************************** Open the socket communication. **************************************************************************/ static bool open_mysockets(void) { struct sockaddr_storage ss; const char *sock_addr = lp_socket_address(); if (!interpret_string_addr(&ss, sock_addr, AI_NUMERICHOST|AI_PASSIVE)) { DEBUG(0,("open_mysockets: unable to get socket address " "from string %s", sock_addr)); return false; } ServerFD = open_socket_in( SOCK_DGRAM, (RootPort ? 137 : 0), (RootPort ? 0 : 3), &ss, true ); if (ServerFD == -1) { return false; } set_socket_options( ServerFD, "SO_BROADCAST" ); DEBUG(3, ("Socket opened.\n")); return true; } /**************************************************************************** Do a node status query. ****************************************************************************/ static bool do_mynode_status(int fd, const char *name, int type, struct sockaddr_storage *pss, char** hostname) { struct nmb_name nname; int count, i, j; NODE_STATUS_STRUCT *status; struct node_status_extra extra; char addr[INET6_ADDRSTRLEN]; bool result = false; print_sockaddr(addr, sizeof(addr), pss); make_nmb_name(&nname, name, type); status = node_status_query(fd, &nname, pss, &count, &extra, 500); if (status) { if(count>0){ int i; for(i=0; i