summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjha <jha@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-02-09 14:28:45 +0000
committerjha <jha@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-02-09 14:28:45 +0000
commitbc0950f85199d26fd155e1d8f6c55d827a4a3702 (patch)
tree55814ac4cbcafef682a7c44cb48b409d1c0cd0b0
parent958219b3c9c9f41d9a54cdd364f210094598dfb6 (diff)
downloadATCD-bc0950f85199d26fd155e1d8f6c55d827a4a3702.tar.gz
Checkpoint commit. Trying to fix all the get and set address manulipation
methods. This version is seriously screwed up.
-rw-r--r--ace/INET_Addr.cpp49
1 files changed, 27 insertions, 22 deletions
diff --git a/ace/INET_Addr.cpp b/ace/INET_Addr.cpp
index 91bec15fa1c..2d3b6204862 100644
--- a/ace/INET_Addr.cpp
+++ b/ace/INET_Addr.cpp
@@ -196,6 +196,7 @@ ACE_INET_Addr::set (u_short port_number,
ACE_UINT32 ip_addr,
int encode)
{
+ printf("in set1(port=%d,ip_addr=%u,encode=%d)\n",port_number,ip_addr,encode);
if(ip_addr == INADDR_ANY)
return this->set(port_number,ACE_INADDR_ANY);
@@ -203,7 +204,8 @@ ACE_INET_Addr::set (u_short port_number,
ip_addr = htonl(ip_addr);
char addr[INET_ADDRSTRLEN];
- if(0 == ACE_OS::inet_ntop (AF_INET, (const void*)&ip_addr, addr, INET_ADDRSTRLEN)) {
+ ACE_OS::strcpy(addr,"::ffff:");
+ if(0 == ACE_OS::inet_ntop (AF_INET, (const void*)&ip_addr, addr+7, INET_ADDRSTRLEN)) {
errno = EINVAL;
return -1;
}
@@ -220,6 +222,8 @@ ACE_INET_Addr::set (u_short port_number,
ace_in_addr_t inet_address,
int encode)
{
+ printf("in set2(%d,ace_in_addr_t,%d)\n",port_number,encode);
+
#if defined (ACE_HAS_IPV6)
unsigned char &family = this->inet_addr_.sin6_family;
#if defined (ACE_HAS_SIN_LEN)
@@ -257,15 +261,11 @@ ACE_INET_Addr::set (u_short port_number,
else
port = port_number;
-#if defined (ACE_HAS_IPV6)
+ printf("doing memcpy\n");
(void) ACE_OS::memcpy ((void *) addrptr,
(void *) &inet_address,
addrsize);
-#else
- (void) ACE_OS::memcpy ((void *) addrptr,
- (void *) &inet_address,
- addrsize);
-#endif
+ printf("returning after memcpy\n");
return 0;
}
@@ -279,6 +279,12 @@ ACE_INET_Addr::set (u_short port_number,
{
ACE_TRACE ("ACE_INET_Addr::set");
ace_in_addr_t addr;
+ ACE_UINT32 addrv4;
+
+ printf("in set3(%d,%s,%d)\n",port_number,host_name,encode);
+
+ if(encode)
+ port_number = htonl(port_number);
this->ACE_Addr::base_set (ACE_AF_INET, sizeof this->inet_addr_);
(void) ACE_OS::memset ((void *) &this->inet_addr_, 0, sizeof
@@ -293,18 +299,24 @@ ACE_INET_Addr::set (u_short port_number,
else if (ACE_OS::inet_pton (AF_INET6,
host_name,
(void*)&addr) == 1) {
- printf("Setting address from pton\n");
+ printf("Setting AF_INET6 address from pton\n");
+
+ return this->set (port_number,
+ addr,0);
+ }
+ else if (ACE_OS::inet_pton (AF_INET,
+ host_name,
+ (void*)&addrv4) == 1) {
+ printf("Setting address from AF_INET pton\n");
return this->set (port_number,
- addr,
- encode);
+ addrv4,0);
}
#else
else if (ACE_OS::inet_aton (host_name,
(struct in_addr *) &addr) == 1)
return this->set (port_number,
- encode ? ntohl (addr) : addr,
- encode);
+ addr,0);
#endif
else
{
@@ -314,7 +326,8 @@ ACE_INET_Addr::set (u_short port_number,
hostent hentry;
ACE_HOSTENT_DATA buf;
int error;
-
+
+ printf("trying gethostbyname_r for %s\n",host_name);
hostent *hp = ACE_OS::gethostbyname_r (host_name, &hentry,
buf, &error);
#endif /* VXWORKS */
@@ -326,16 +339,8 @@ ACE_INET_Addr::set (u_short port_number,
}
else
{
- (void) ACE_OS::memcpy ((void *) &addr,
- hp->h_addr,
- hp->h_length);
return this->set (port_number,
-#if defined (ACE_HAS_IPV6)
- addr,
-#else
- encode ? ntohl (addr) : addr,
-#endif
- encode);
+ *(ACE_UINT32*)hp->h_addr,0);
}
}
}