diff options
| author | Alexander Amanuel <iavael@yandex-team.ru> | 2014-01-28 23:09:21 +0400 |
|---|---|---|
| committer | Alexander Amanuel <iavael@yandex-team.ru> | 2014-01-28 23:09:21 +0400 |
| commit | 46a251e346f085f4a6e022ead94d45391ab53726 (patch) | |
| tree | b44f69f75dcb812cfcf84a9ff14fc88909fd4324 /src | |
| parent | 924feb12b055422f632de7e80afc128378ff2999 (diff) | |
Refactored DSCP-related code a bit
Diffstat (limited to 'src')
| -rw-r--r-- | src/Context.cc | 1 | ||||
| -rw-r--r-- | src/PeerInitiateConnectionCommand.cc | 3 | ||||
| -rw-r--r-- | src/PeerListenCommand.cc | 3 | ||||
| -rw-r--r-- | src/SocketCore.cc | 5 | ||||
| -rw-r--r-- | src/SocketCore.h | 7 |
5 files changed, 12 insertions, 7 deletions
diff --git a/src/Context.cc b/src/Context.cc index 7cda18da..b3cfe4d4 100644 --- a/src/Context.cc +++ b/src/Context.cc @@ -184,6 +184,7 @@ Context::Context(bool standalone, // when none of network interface has IPv4 address. setDefaultAIFlags(0); } + SocketCore::setIpDscp(op->getAsInt(PREF_DSCP)); net::checkAddrconfig(); // Bind interface if(!op->get(PREF_INTERFACE).empty()) { diff --git a/src/PeerInitiateConnectionCommand.cc b/src/PeerInitiateConnectionCommand.cc index d785d88a..4339d5de 100644 --- a/src/PeerInitiateConnectionCommand.cc +++ b/src/PeerInitiateConnectionCommand.cc @@ -41,7 +41,6 @@ #include "prefs.h" #include "SocketCore.h" #include "Logger.h" -#include "Option.h" #include "LogFactory.h" #include "Peer.h" #include "BtRuntime.h" @@ -84,7 +83,7 @@ bool PeerInitiateConnectionCommand::executeInternal() { createSocket(); getSocket()->establishConnection(getPeer()->getIPAddress(), getPeer()->getPort(), false); - getSocket()->setIpDscp(requestGroup_->getOption()->getAsInt(PREF_DSCP)); + getSocket()->applyIpDscp(); if(mseHandshakeEnabled_) { auto c = make_unique<InitiatorMSEHandshakeCommand> (getCuid(), requestGroup_, getPeer(), diff --git a/src/PeerListenCommand.cc b/src/PeerListenCommand.cc index 4d730100..8bcd3f16 100644 --- a/src/PeerListenCommand.cc +++ b/src/PeerListenCommand.cc @@ -44,7 +44,6 @@ #include "message.h" #include "ReceiverMSEHandshakeCommand.h" #include "Logger.h" -#include "Option.h" #include "LogFactory.h" #include "SocketCore.h" #include "SimpleRandomizer.h" @@ -111,7 +110,7 @@ bool PeerListenCommand::execute() { std::shared_ptr<SocketCore> peerSocket; try { peerSocket = socket_->acceptConnection(); - peerSocket->setIpDscp(e_->getOption()->getAsInt(PREF_DSCP)); + peerSocket->applyIpDscp(); std::pair<std::string, uint16_t> peerInfo; peerSocket->getPeerInfo(peerInfo); diff --git a/src/SocketCore.cc b/src/SocketCore.cc index 8022e2ff..fb78dc02 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -129,6 +129,7 @@ enum TlsState { } // namespace int SocketCore::protocolFamily_ = AF_UNSPEC; +int SocketCore::ipDscp_ = 0; std::vector<std::pair<sockaddr_union, socklen_t> > SocketCore::bindAddrs_; @@ -532,9 +533,9 @@ void SocketCore::setTcpNodelay(bool f) setSockOpt(IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); } -void SocketCore::setIpDscp(int32_t dscp) +void SocketCore::applyIpDscp() { - setSockOpt(IPPROTO_IP, IP_TOS, &dscp, sizeof(dscp)); + setSockOpt(IPPROTO_IP, IP_TOS, &ipDscp_, sizeof(ipDscp_)); } void SocketCore::setNonBlockingMode() diff --git a/src/SocketCore.h b/src/SocketCore.h index 4d2a70dd..9d110b53 100644 --- a/src/SocketCore.h +++ b/src/SocketCore.h @@ -66,6 +66,7 @@ private: sock_t sockfd_; static int protocolFamily_; + static int ipDscp_; static std::vector<std::pair<sockaddr_union, socklen_t> > bindAddrs_; @@ -121,7 +122,11 @@ public: void setTcpNodelay(bool f); // Set DSCP byte - void setIpDscp(int32_t); + void applyIpDscp(); + static void setIpDscp(int ipDscp) + { + ipDscp_ = ipDscp; + } void create(int family, int protocol = 0); |
