00001
00002
00003
00004 #include "ace/OS_NS_string.h"
00005 #include "ace/OS_NS_errno.h"
00006 #include "ace/OS_NS_stdio.h"
00007
00008 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00009
00010 ACE_INLINE unsigned long
00011 ACE_OS::inet_addr (const char *name)
00012 {
00013 ACE_OS_TRACE ("ACE_OS::inet_addr");
00014 #if defined (ACE_LACKS_INET_ADDR)
00015 ACE_UNUSED_ARG (name);
00016 ACE_NOTSUP_RETURN (0);
00017 #elif defined (ACE_HAS_NONCONST_GETBY)
00018 return ::inet_addr (const_cast <char*> (name));
00019 #else
00020 return ::inet_addr (name);
00021 #endif
00022 }
00023
00024 ACE_INLINE char *
00025 ACE_OS::inet_ntoa (const struct in_addr addr)
00026 {
00027 ACE_OS_TRACE ("ACE_OS::inet_ntoa");
00028 #if defined (ACE_LACKS_INET_NTOA)
00029 ACE_UNUSED_ARG (addr);
00030 ACE_NOTSUP_RETURN (0);
00031 #else
00032 ACE_OSCALL_RETURN (::inet_ntoa (addr),
00033 char *,
00034 0);
00035 #endif
00036 }
00037
00038 ACE_INLINE const char *
00039 ACE_OS::inet_ntop (int family, const void *addrptr, char *strptr, size_t len)
00040 {
00041 ACE_OS_TRACE ("ACE_OS::inet_ntop");
00042
00043 #if defined (ACE_HAS_IPV6) && !defined (ACE_WIN32)
00044 ACE_OSCALL_RETURN (::inet_ntop (family, addrptr, strptr, len), const char *, 0);
00045 #else
00046 const u_char *p = reinterpret_cast<const u_char *> (addrptr);
00047
00048 if (family == AF_INET)
00049 {
00050 char temp[INET_ADDRSTRLEN];
00051
00052
00053
00054
00055 ACE_OS::sprintf (temp,
00056 "%d.%d.%d.%d",
00057 p[0], p[1], p[2], p[3]);
00058
00059 if (ACE_OS::strlen (temp) >= len)
00060 {
00061 errno = ENOSPC;
00062 return 0;
00063 }
00064
00065 ACE_OS::strcpy (strptr, temp);
00066 return strptr;
00067 }
00068
00069 ACE_NOTSUP_RETURN(0);
00070 #endif
00071 }
00072
00073 ACE_INLINE int
00074 ACE_OS::inet_pton (int family, const char *strptr, void *addrptr)
00075 {
00076 ACE_OS_TRACE ("ACE_OS::inet_pton");
00077
00078 #if defined (ACE_HAS_IPV6) && !defined (ACE_WIN32)
00079 ACE_OSCALL_RETURN (::inet_pton (family, strptr, addrptr), int, -1);
00080 #else
00081 if (family == AF_INET)
00082 {
00083 struct in_addr in_val;
00084
00085 if (ACE_OS::inet_aton (strptr, &in_val))
00086 {
00087 ACE_OS::memcpy (addrptr, &in_val, sizeof (struct in_addr));
00088 return 1;
00089 }
00090
00091 return 0;
00092 }
00093
00094 ACE_NOTSUP_RETURN(-1);
00095 #endif
00096 }
00097
00098 ACE_END_VERSIONED_NAMESPACE_DECL