summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@users.noreply.github.com>2006-11-08 14:48:35 +0000
committermcorino <mcorino@users.noreply.github.com>2006-11-08 14:48:35 +0000
commit4f15e60dbde6ef121c4b7ab8123556ff33018d24 (patch)
tree4561c4bf5320c0f95520a37ce37892618d267e2b
parent47f979e6ecdb649e127d5f1aafa0f4f9a0ae9872 (diff)
downloadATCD-4f15e60dbde6ef121c4b7ab8123556ff33018d24.tar.gz
ChangeLogTag: Tue Nov 08 15:40:10 UTC 2006 Martin Corino <mcorino@remedy.nl>
-rw-r--r--ACE/ChangeLog8
-rw-r--r--ACE/ace/INET_Addr.inl21
2 files changed, 29 insertions, 0 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 0de2794105b..93ce4c90270 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,11 @@
+Tue Nov 08 15:40:10 UTC 2006 Martin Corino <mcorino@remedy.nl>
+
+ * ace/INET_Addr.inl:
+
+ Enhanced operator <() to support IPv6 addresses as well.
+ Thanks to Andre Kostur (akostur at incognito dot com) for
+ submitting a patch for this.
+
Wed Nov 8 14:24:02 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
* configure.ac:
diff --git a/ACE/ace/INET_Addr.inl b/ACE/ace/INET_Addr.inl
index d87974675d8..15af6fe0a42 100644
--- a/ACE/ace/INET_Addr.inl
+++ b/ACE/ace/INET_Addr.inl
@@ -117,6 +117,27 @@ ACE_INET_Addr::get_addr_size (void) const
ACE_INLINE bool
ACE_INET_Addr::operator < (const ACE_INET_Addr &rhs) const
{
+#if defined (ACE_HAS_IPV6)
+ if (this->get_type() != rhs.get_type())
+ {
+ return this->get_type() < rhs.get_type();
+ }
+
+ if (this->get_type() == PF_INET6)
+ {
+ int memval = ACE_OS::memcmp (this->ip_addr_pointer(),
+ rhs.ip_addr_pointer(),
+ this->ip_addr_size());
+
+ return memval < 0
+ || (memval == 0
+ && (this->get_port_number() < rhs.get_port_number()
+ || (this->get_port_number() == rhs.get_port_number()
+ && this->inet_addr_.in6_.sin6_scope_id <
+ rhs.inet_addr_.in6_.sin6_scope_id)));
+ }
+#endif
+
return this->get_ip_address () < rhs.get_ip_address ()
|| (this->get_ip_address () == rhs.get_ip_address ()
&& this->get_port_number () < rhs.get_port_number ());