From 34de733223e2772f716765ec4e931d36ebedd714 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 16 Jan 2023 21:16:16 +0000 Subject: Add support for linking servers over SCTP sockets. --- src/modules/m_spanningtree/link.h | 1 + src/modules/m_spanningtree/treesocket1.cpp | 2 +- src/modules/m_spanningtree/utils.cpp | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/modules') diff --git a/src/modules/m_spanningtree/link.h b/src/modules/m_spanningtree/link.h index 49e86bf3e..4f15f829d 100644 --- a/src/modules/m_spanningtree/link.h +++ b/src/modules/m_spanningtree/link.h @@ -42,6 +42,7 @@ public: unsigned long Timeout; std::string Bind; bool Hidden; + int Protocol = 0; Link(const std::shared_ptr& Tag) : tag(Tag) { diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp index 37de1adc8..2da154642 100644 --- a/src/modules/m_spanningtree/treesocket1.cpp +++ b/src/modules/m_spanningtree/treesocket1.cpp @@ -66,7 +66,7 @@ TreeSocket::TreeSocket(const std::shared_ptr& link, const std::shared_ptr< } } - DoConnect(dest, bind, link->Timeout); + DoConnect(dest, bind, link->Timeout, link->Protocol); Utils->timeoutlist[this] = std::pair(linkID, link->Timeout); SendCapabilities(1); } diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index f05c587f6..42a331ab6 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -263,6 +263,14 @@ void SpanningTreeUtilities::ReadConfiguration() { L->IPAddr = tag->getString("ipaddr"); L->Port = static_cast(tag->getUInt("port", 0, 0, 65535)); + if (tag->getBool("sctp")) + { +#ifdef IPPROTO_SCTP + L->Protocol = IPPROTO_SCTP; +#else + throw ModuleException((Module*)Creator, "Unable to use SCTP listener as this platform does not support SCTP!"); +#endif + } } else { -- cgit v1.3.1-10-gc9f91