version 1.69, 2007/05/30 20:41:28
|
version 1.76, 2007/09/11 17:56:33
|
|
|
#include <Pegasus/Common/String.h> | #include <Pegasus/Common/String.h> |
#include <Pegasus/Common/Linkage.h> | #include <Pegasus/Common/Linkage.h> |
#include <Pegasus/Common/Logger.h> | #include <Pegasus/Common/Logger.h> |
|
#include <Pegasus/Common/Network.h> |
#include <sys/stat.h> | #include <sys/stat.h> |
| |
| |
|
|
#ifndef mode_t | #ifndef mode_t |
typedef unsigned long mode_t; | typedef unsigned long mode_t; |
#endif | #endif |
|
#include <windows.h> |
#endif | #endif |
| |
#if defined (PEGASUS_OS_TYPE_UNIX) || (PEGASUS_OS_VMS) | #if defined (PEGASUS_OS_TYPE_UNIX) || (PEGASUS_OS_VMS) |
# ifndef PEGASUS_OS_OS400 |
|
# include <unistd.h> | # include <unistd.h> |
# endif |
|
# include <fcntl.h> // File locking | # include <fcntl.h> // File locking |
# define PEGASUS_UID_T uid_t | # define PEGASUS_UID_T uid_t |
# define PEGASUS_GID_T gid_t | # define PEGASUS_GID_T gid_t |
|
|
static String getHostName(); | static String getHostName(); |
static String getFullyQualifiedHostName (); | static String getFullyQualifiedHostName (); |
static String getSystemCreationClassName (); | static String getSystemCreationClassName (); |
static String getHostIP(const String &hostName); |
|
| |
static Uint32 _acquireIP(const char* hostname); |
// The following 2 methods are wrappers around system functions |
|
// gethostbyname/gethostbyaddr or gethostbyname_r/gethostbyaddr_r. |
|
// In addition to calling corresponding system functions, these |
|
// methods introduce re-tries when errno is set to TRY_AGAIN. |
|
// Optional parameters are required to cover systems which use '_r' |
|
// versions of the system functions. |
|
static struct hostent* getHostByName( |
|
const char* name, |
|
struct hostent* he = 0, |
|
char* buf = 0, |
|
size_t len = 0); |
|
static struct hostent* getHostByAddr( |
|
const char *addr, |
|
int len, |
|
int type, |
|
struct hostent* he = 0, |
|
char* buf = 0, |
|
size_t buflen = 0); |
|
|
|
// The following 2 methods are wrappers around system functions |
|
// getaddrinfo/getnameinfo. |
|
// In addition to calling corresponding system functions, these |
|
// methods introduce re-tries on EAI_AGAIN error returns. |
|
static int getAddrInfo( |
|
const char *hostname, |
|
const char *servname, |
|
const struct addrinfo *hints, |
|
struct addrinfo **res); |
|
static int getNameInfo( |
|
const struct sockaddr *sa, |
|
size_t salen, |
|
char *host, |
|
size_t hostlen, |
|
char *serv, |
|
size_t servlen, |
|
int flags); |
|
|
|
// Gets IP address assosiated with hostName. af indicates the |
|
// type of address (ipv4 or ipv6) returned. |
|
static Boolean getHostIP(const String &hostName, int *af, String &hostIP); |
|
|
|
// Gets IP address in binary form. af indicates the type of |
|
// address (ipv4 or ipv6) returned. Address will be copied to dst. |
|
static Boolean _acquireIP(const char* hostname, int *af, void *dst); |
|
|
|
/** |
|
Returns true if IPv6 stack is active by checking return code from |
|
Socket::createSocket() and getSocketError() calls. |
|
|
|
ATTN: We return true if some error other than |
|
PEGASUS_INVALID_ADDRESS_FAMILY is returned while creating the socket |
|
because we will not be sure whether the IPv6 stack is active or not |
|
from the returned error code. Return value of "true" from this method |
|
should not be trusted absolutely. |
|
*/ |
|
#ifdef PEGASUS_ENABLE_IPV6 |
|
static Boolean isIPv6StackActive(); |
|
#endif |
| |
static Uint32 lookupPort( | static Uint32 lookupPort( |
const char * serviceName, | const char * serviceName, |
Uint32 defaultPort); | Uint32 defaultPort); |
| |
/** | /** |
Attempts to validate that the input hostName represents the same host as |
|
the host represented by the value returned by the |
|
getFullyQualifiedHostName() method. |
|
|
|
@param hostName the host name to validate |
|
|
|
@return True if the input hostName can be validated to represent the |
|
same host; |
|
False otherwise |
|
*/ |
|
static Boolean sameHost (const String & hostName); |
|
|
|
/** |
|
Attempts to find the given IP address(32bit) on any of the local defined | Attempts to find the given IP address(32bit) on any of the local defined |
network interfaces | network interfaces |
*/ | */ |
|
|
*/ | */ |
static Boolean isLocalHost(const String& hostName); | static Boolean isLocalHost(const String& hostName); |
| |
|
/** |
|
Checks binIPAddress represented by address family and returns true |
|
if binary representation matches with loopback ip address. binIPAddress |
|
must be in host-byte order. |
|
*/ |
|
static Boolean isLoopBack(int af, void *binIPAddress); |
|
|
static String getEffectiveUserName(); | static String getEffectiveUserName(); |
| |
/** | /** |
|
|
@return True if the user and group IDs were retrieved | @return True if the user and group IDs were retrieved |
successfully, false otherwise. | successfully, false otherwise. |
*/ | */ |
#ifndef PEGASUS_OS_OS400 |
|
static Boolean lookupUserId( | static Boolean lookupUserId( |
const char* userName, | const char* userName, |
PEGASUS_UID_T& uid, | PEGASUS_UID_T& uid, |
PEGASUS_GID_T& gid); | PEGASUS_GID_T& gid); |
#endif |
|
| |
/** | /** |
Changes the process user context to the specified user and group. | Changes the process user context to the specified user and group. |
|
|
@return True if the user context is successfully changed, | @return True if the user context is successfully changed, |
false otherwise. | false otherwise. |
*/ | */ |
#ifndef PEGASUS_OS_OS400 |
|
static Boolean changeUserContext_SingleThreaded( | static Boolean changeUserContext_SingleThreaded( |
const char* userName, | const char* userName, |
const PEGASUS_UID_T& uid, | const PEGASUS_UID_T& uid, |
const PEGASUS_GID_T& gid); | const PEGASUS_GID_T& gid); |
#endif |
|
| |
/** | /** |
This function is used to get the process ID of the calling process. | This function is used to get the process ID of the calling process. |
|
|
struct flock _fl; | struct flock _fl; |
int _fd; | int _fd; |
#endif | #endif |
|
#ifdef PEGASUS_OS_TYPE_WINDOWS |
|
HANDLE _hFile; |
|
#endif |
}; | }; |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |