summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexander Amanuel <iavael@yandex-team.ru>2014-01-28 23:09:21 +0400
committerAlexander Amanuel <iavael@yandex-team.ru>2014-01-28 23:09:21 +0400
commit46a251e346f085f4a6e022ead94d45391ab53726 (patch)
treeb44f69f75dcb812cfcf84a9ff14fc88909fd4324 /src
parent924feb12b055422f632de7e80afc128378ff2999 (diff)
Refactored DSCP-related code a bit
Diffstat (limited to 'src')
-rw-r--r--src/Context.cc1
-rw-r--r--src/PeerInitiateConnectionCommand.cc3
-rw-r--r--src/PeerListenCommand.cc3
-rw-r--r--src/SocketCore.cc5
-rw-r--r--src/SocketCore.h7
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);