summaryrefslogtreecommitdiff
path: root/ACE
diff options
context:
space:
mode:
authorsma <sma@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2012-08-08 15:30:01 +0000
committersma <sma@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2012-08-08 15:30:01 +0000
commit91c08a20d1db5a6639cedeef23dbed3bbedd97c2 (patch)
treed277c4e09791798c0007ee8586dae575b0679472 /ACE
parent2fa17de78269bba8c245569f2f727f1a0f0c86c1 (diff)
downloadATCD-91c08a20d1db5a6639cedeef23dbed3bbedd97c2.tar.gz
Wed Aug 8 15:30:00 UTC 2012 Simon Massey <sma at prismtech dot com>
Diffstat (limited to 'ACE')
-rw-r--r--ACE/ChangeLog19
-rw-r--r--ACE/ace/SOCK_Dgram_Mcast.h8
-rw-r--r--ACE/ace/SOCK_Dgram_Mcast.inl12
-rw-r--r--ACE/ace/config-linux.h5
4 files changed, 43 insertions, 1 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index e8b80919356..89245f31d9d 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,22 @@
+Wed Aug 8 15:30:00 UTC 2012 Simon Massey <sma at prismtech dot com>
+
+ * ace/config-linux.h:
+
+ According to man pages Linux uses different (compared to UNIX systems) types
+ for setting IP_MULTICAST_TTL and IPV6_MULTICAST_LOOP / IP_MULTICAST_LOOP
+ in setsockopt/getsockopt.
+ In the current (circa 2012) kernel source however there is an explicit check
+ for IPV6_MULTICAST_LOOP being sizeof(int). Anything else is rejected so it must
+ not be a passed a bool, irrespective of what the man pages (still) say.
+ i.e. #define ACE_HAS_IPV6_MULTICAST_LOOP_AS_BOOL 1 is wrong.
+
+ * ace/SOCK_Dgram_Mcast.h:
+ * ace/SOCK_Dgram_Mcast.inl:
+
+ Override read/write acessor for the constructor options
+ This class is typically default instantiated in a connection handler templated
+ framework so these cannot be specified on construction.
+
Mon Aug 6 20:54:17 UTC 2012 Adam Mitz <mitza@ociweb.com>
* bin/PerlACE/TestTarget.pm:
diff --git a/ACE/ace/SOCK_Dgram_Mcast.h b/ACE/ace/SOCK_Dgram_Mcast.h
index a2e54969d39..d5b0de0c006 100644
--- a/ACE/ace/SOCK_Dgram_Mcast.h
+++ b/ACE/ace/SOCK_Dgram_Mcast.h
@@ -339,6 +339,14 @@ public:
/// Declare the dynamic allocation hooks.
ACE_ALLOC_HOOK_DECLARE;
+ /// Override write acessor for the constructor options (@see enum options above)
+ /// This class is typically default instantiated in a connection handler templated
+ /// framework so these cannot be specified on construction.
+ void opts (int opts);
+
+ /// Read acessor for the constructor options (@see enum options above)
+ int opts () const;
+
private:
/// Subscribe to a multicast address on one or more network interface(s).
diff --git a/ACE/ace/SOCK_Dgram_Mcast.inl b/ACE/ace/SOCK_Dgram_Mcast.inl
index bf3574cfd54..e7b380abf95 100644
--- a/ACE/ace/SOCK_Dgram_Mcast.inl
+++ b/ACE/ace/SOCK_Dgram_Mcast.inl
@@ -49,4 +49,16 @@ ACE_SOCK_Dgram_Mcast::send (const iovec iov[],
flags);
}
+ACE_INLINE void
+ACE_SOCK_Dgram_Mcast::opts (int opts)
+{
+ this->opts_ = opts;
+}
+
+ACE_INLINE int
+ACE_SOCK_Dgram_Mcast::opts () const
+{
+ return this->opts_;
+}
+
ACE_END_VERSIONED_NAMESPACE_DECL
diff --git a/ACE/ace/config-linux.h b/ACE/ace/config-linux.h
index 9b2df9676af..45e43c50a54 100644
--- a/ACE/ace/config-linux.h
+++ b/ACE/ace/config-linux.h
@@ -341,8 +341,11 @@
// According to man pages Linux uses different (compared to UNIX systems) types
// for setting IP_MULTICAST_TTL and IPV6_MULTICAST_LOOP / IP_MULTICAST_LOOP
// in setsockopt/getsockopt.
+// In the current (circa 2012) kernel source however there is an explicit check
+// for IPV6_MULTICAST_LOOP being sizeof(int). Anything else is rejected so it must
+// not be a passed a bool, irrespective of what the man pages (still) say.
+// i.e. #define ACE_HAS_IPV6_MULTICAST_LOOP_AS_BOOL 1 is wrong
#define ACE_HAS_IP_MULTICAST_TTL_AS_INT 1
-#define ACE_HAS_IPV6_MULTICAST_LOOP_AS_BOOL 1
#define ACE_HAS_IP_MULTICAST_LOOP_AS_INT 1
#if defined (ACE_LACKS_NETWORKING)