summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Mons <edwin.mons@isode.com>2018-11-09 08:51:10 (GMT)
committerEdwin Mons <edwin.mons@isode.com>2018-11-09 10:05:12 (GMT)
commita45eed2d826f60a20dfd1f4f06df37d1f83263f8 (patch)
tree7593509f9b89630ff70d5c9e1d14966435a4ab8a
parent644db9fce94670e610db46bdd28eb9d1e658a798 (diff)
downloadswift-a45eed2d826f60a20dfd1f4f06df37d1f83263f8.zip
swift-a45eed2d826f60a20dfd1f4f06df37d1f83263f8.tar.bz2
Store NATPortMapping lifetime as uint32_t
The NAT-PMP RFC specifies lifetime as an unsigned, 32 bit integer, so using this internally makes sense. This also removes the need for casts in interface code. A slight bug in the NATPMPInterface implementation to remove a mapping has been addressed. Test-Information: Unit tests pass on macOS 10.13 Change-Id: I06687fd2735a8706f339f85d6c957ad7aadaaf02
-rw-r--r--Swiften/Network/MiniUPnPInterface.cpp2
-rw-r--r--Swiften/Network/NATPMPInterface.cpp8
-rw-r--r--Swiften/Network/NATPortMapping.h8
3 files changed, 7 insertions, 11 deletions
diff --git a/Swiften/Network/MiniUPnPInterface.cpp b/Swiften/Network/MiniUPnPInterface.cpp
index af3b67c..8425c77 100644
--- a/Swiften/Network/MiniUPnPInterface.cpp
+++ b/Swiften/Network/MiniUPnPInterface.cpp
@@ -14,8 +14,6 @@
14 14
15#include <memory> 15#include <memory>
16 16
17#include <boost/lexical_cast.hpp>
18
19#include <miniupnpc.h> 17#include <miniupnpc.h>
20#include <upnpcommands.h> 18#include <upnpcommands.h>
21#include <upnperrors.h> 19#include <upnperrors.h>
diff --git a/Swiften/Network/NATPMPInterface.cpp b/Swiften/Network/NATPMPInterface.cpp
index 8ab26d4..0c33c1f 100644
--- a/Swiften/Network/NATPMPInterface.cpp
+++ b/Swiften/Network/NATPMPInterface.cpp
@@ -14,8 +14,6 @@
14 14
15#include <memory> 15#include <memory>
16 16
17#include <boost/numeric/conversion/cast.hpp>
18
19#include <Swiften/Base/Log.h> 17#include <Swiften/Base/Log.h>
20 18
21// This has to be included after the previous headers, because of WIN32 macro 19// This has to be included after the previous headers, because of WIN32 macro
@@ -81,7 +79,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l
81 mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 79 mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP,
82 mapping.getLocalPort(), 80 mapping.getLocalPort(),
83 mapping.getPublicPort(), 81 mapping.getPublicPort(),
84 boost::numeric_cast<uint32_t>(mapping.getLeaseInSeconds())) < 0) { 82 mapping.getLeaseInSeconds()) < 0) {
85 SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; 83 SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl;
86 return boost::optional<NATPortMapping>(); 84 return boost::optional<NATPortMapping>();
87 } 85 }
@@ -104,7 +102,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l
104 } while(false /*r == NATPMP_TRYAGAIN*/); 102 } while(false /*r == NATPMP_TRYAGAIN*/);
105 103
106 if (r == 0) { 104 if (r == 0) {
107 NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, boost::numeric_cast<int>(response.pnu.newportmapping.lifetime)); 105 NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, response.pnu.newportmapping.lifetime);
108 return result; 106 return result;
109 } 107 }
110 else { 108 else {
@@ -114,7 +112,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l
114} 112}
115 113
116bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) { 114bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) {
117 if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 0, 0, boost::numeric_cast<uint32_t>(mapping.getLocalPort())) < 0) { 115 if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, mapping.getLocalPort(), 0, 0) < 0) {
118 SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl; 116 SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl;
119 return false; 117 return false;
120 } 118 }
diff --git a/Swiften/Network/NATPortMapping.h b/Swiften/Network/NATPortMapping.h
index b68052d..bf0fb1c 100644
--- a/Swiften/Network/NATPortMapping.h
+++ b/Swiften/Network/NATPortMapping.h
@@ -5,7 +5,7 @@
5 */ 5 */
6 6
7/* 7/*
8 * Copyright (c) 2015 Isode Limited. 8 * Copyright (c) 2015-2018 Isode Limited.
9 * All rights reserved. 9 * All rights reserved.
10 * See the COPYING file for more information. 10 * See the COPYING file for more information.
11 */ 11 */
@@ -23,7 +23,7 @@ namespace Swift {
23 UDP 23 UDP
24 }; 24 };
25 25
26 NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, int leaseInSeconds = 60 * 60 * 24) : 26 NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, uint32_t leaseInSeconds = 60 * 60 * 24) :
27 publicPort(publicPort), localPort(localPort), protocol(protocol), leaseInSeconds(leaseInSeconds) { 27 publicPort(publicPort), localPort(localPort), protocol(protocol), leaseInSeconds(leaseInSeconds) {
28 28
29 } 29 }
@@ -40,7 +40,7 @@ namespace Swift {
40 return protocol; 40 return protocol;
41 } 41 }
42 42
43 int getLeaseInSeconds() const { 43 uint32_t getLeaseInSeconds() const {
44 return leaseInSeconds; 44 return leaseInSeconds;
45 } 45 }
46 46
@@ -48,6 +48,6 @@ namespace Swift {
48 unsigned short publicPort; 48 unsigned short publicPort;
49 unsigned short localPort; 49 unsigned short localPort;
50 Protocol protocol; 50 Protocol protocol;
51 int leaseInSeconds; 51 uint32_t leaseInSeconds;
52 }; 52 };
53} 53}