Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
dhtnet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Model registry
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
savoirfairelinux
dhtnet
Commits
17765bd1
Commit
17765bd1
authored
1 year ago
by
Adrien Béraud
Browse files
Options
Downloads
Patches
Plain Diff
nat_pmp: fix logs
Change-Id: I8d090f61e9bacb81c726cac63d83ee72bde69a43
parent
c1cac45a
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/upnp/protocol/natpmp/nat_pmp.cpp
+70
-70
70 additions, 70 deletions
src/upnp/protocol/natpmp/nat_pmp.cpp
with
70 additions
and
70 deletions
src/upnp/protocol/natpmp/nat_pmp.cpp
+
70
−
70
View file @
17765bd1
...
@@ -47,7 +47,7 @@ NatPmp::initNatPmp()
...
@@ -47,7 +47,7 @@ NatPmp::initNatPmp()
// Local address must be valid.
// Local address must be valid.
if
(
not
getHostAddress
()
or
getHostAddress
().
isLoopback
())
{
if
(
not
getHostAddress
()
or
getHostAddress
().
isLoopback
())
{
// JAMI_WARN
("NAT-PMP: Does not have a valid local address!");
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Does not have a valid local address!"
);
return
;
return
;
}
}
...
@@ -61,19 +61,19 @@ NatPmp::initNatPmp()
...
@@ -61,19 +61,19 @@ NatPmp::initNatPmp()
igd_
->
setPublicIp
(
IpAddr
());
igd_
->
setPublicIp
(
IpAddr
());
igd_
->
setUID
(
""
);
igd_
->
setUID
(
""
);
// JAMI_DBG
("NAT-PMP: Trying to initialize IGD");
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Trying to initialize IGD"
);
int
err
=
initnatpmp
(
&
natpmpHdl_
,
0
,
0
);
int
err
=
initnatpmp
(
&
natpmpHdl_
,
0
,
0
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Initializing IGD using default gateway failed!");
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Initializing IGD using default gateway failed!"
);
const
auto
&
localGw
=
ip_utils
::
getLocalGateway
();
const
auto
&
localGw
=
ip_utils
::
getLocalGateway
();
if
(
not
localGw
)
{
if
(
not
localGw
)
{
// JAMI_WARN
("NAT-PMP: Couldn't find valid gateway on local host");
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Couldn't find valid gateway on local host"
);
err
=
NATPMP_ERR_CANNOTGETGATEWAY
;
err
=
NATPMP_ERR_CANNOTGETGATEWAY
;
}
else
{
}
else
{
// JAMI_WARN
("NAT-PMP: Trying to initialize using detected gateway
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Trying to initialize using detected gateway
{}
"
,
//
localGw.toString()
.c_str()
);
localGw
.
toString
());
struct
in_addr
inaddr
;
struct
in_addr
inaddr
;
inet_pton
(
AF_INET
,
localGw
.
toString
().
c_str
(),
&
inaddr
);
inet_pton
(
AF_INET
,
localGw
.
toString
().
c_str
(),
&
inaddr
);
err
=
initnatpmp
(
&
natpmpHdl_
,
1
,
inaddr
.
s_addr
);
err
=
initnatpmp
(
&
natpmpHdl_
,
1
,
inaddr
.
s_addr
);
...
@@ -81,14 +81,14 @@ NatPmp::initNatPmp()
...
@@ -81,14 +81,14 @@ NatPmp::initNatPmp()
}
}
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_ERR
("NAT-PMP: Can't initialize libnatpmp ->
%s
", getNatPmpErrorStr(err));
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: Can't initialize libnatpmp ->
{}
"
,
getNatPmpErrorStr
(
err
));
return
;
return
;
}
}
char
addrbuf
[
INET_ADDRSTRLEN
];
char
addrbuf
[
INET_ADDRSTRLEN
];
inet_ntop
(
AF_INET
,
&
natpmpHdl_
.
gateway
,
addrbuf
,
sizeof
(
addrbuf
));
inet_ntop
(
AF_INET
,
&
natpmpHdl_
.
gateway
,
addrbuf
,
sizeof
(
addrbuf
));
IpAddr
igdAddr
(
addrbuf
);
IpAddr
igdAddr
(
addrbuf
);
// JAMI_DBG
("NAT-PMP: Initialized on gateway
%s
", igdAddr.toString()
.c_str()
);
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Initialized on gateway
{}
"
,
igdAddr
.
toString
());
// Set the local (gateway) address.
// Set the local (gateway) address.
igd_
->
setLocalIp
(
igdAddr
);
igd_
->
setLocalIp
(
igdAddr
);
...
@@ -136,9 +136,9 @@ NatPmp::terminate()
...
@@ -136,9 +136,9 @@ NatPmp::terminate()
});
});
if
(
cv
.
wait_for
(
lk
,
std
::
chrono
::
seconds
(
10
),
[
this
]
{
return
shutdownComplete_
;
}))
{
if
(
cv
.
wait_for
(
lk
,
std
::
chrono
::
seconds
(
10
),
[
this
]
{
return
shutdownComplete_
;
}))
{
// JAMI_DBG
("NAT-PMP: Shutdown completed");
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Shutdown completed"
);
}
else
{
}
else
{
// JAMI_ERR
("NAT-PMP: Shutdown timed-out");
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: Shutdown timed-out"
);
}
}
}
}
...
@@ -182,7 +182,7 @@ NatPmp::searchForIgd()
...
@@ -182,7 +182,7 @@ NatPmp::searchForIgd()
// Schedule a retry in case init failed.
// Schedule a retry in case init failed.
if
(
not
initialized_
)
{
if
(
not
initialized_
)
{
if
(
igdSearchCounter_
++
<
MAX_RESTART_SEARCH_RETRIES
)
{
if
(
igdSearchCounter_
++
<
MAX_RESTART_SEARCH_RETRIES
)
{
// JAMI_DBG
("NAT-PMP: Start search for IGDs. Attempt
%i
", igdSearchCounter_);
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Start search for IGDs. Attempt
{}
"
,
igdSearchCounter_
);
// Cancel the current timer (if any) and re-schedule.
// Cancel the current timer (if any) and re-schedule.
searchForIgdTimer_
.
expires_after
(
NATPMP_SEARCH_RETRY_UNIT
*
igdSearchCounter_
);
searchForIgdTimer_
.
expires_after
(
NATPMP_SEARCH_RETRY_UNIT
*
igdSearchCounter_
);
...
@@ -191,8 +191,8 @@ NatPmp::searchForIgd()
...
@@ -191,8 +191,8 @@ NatPmp::searchForIgd()
searchForIgd
();
searchForIgd
();
});
});
}
else
{
}
else
{
// JAMI_WARN
("NAT-PMP: Setup failed after
%u
trials. NAT-PMP will be disabled!",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Setup failed after
{}
trials. NAT-PMP will be disabled!"
,
//
MAX_RESTART_SEARCH_RETRIES);
MAX_RESTART_SEARCH_RETRIES
);
}
}
}
}
}
}
...
@@ -211,7 +211,7 @@ bool
...
@@ -211,7 +211,7 @@ bool
NatPmp
::
isReady
()
const
NatPmp
::
isReady
()
const
{
{
if
(
observer_
==
nullptr
)
{
if
(
observer_
==
nullptr
)
{
// JAMI_ERR
("NAT-PMP: the observer is not set!");
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: the observer is not set!"
);
return
false
;
return
false
;
}
}
...
@@ -238,7 +238,7 @@ NatPmp::incrementErrorsCounter(const std::shared_ptr<IGD>& igdIn)
...
@@ -238,7 +238,7 @@ NatPmp::incrementErrorsCounter(const std::shared_ptr<IGD>& igdIn)
// Disable this IGD.
// Disable this IGD.
igd_
->
setValid
(
false
);
igd_
->
setValid
(
false
);
// Notify the listener.
// Notify the listener.
// JAMI_WARN
("NAT-PMP: No more valid IGD!");
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: No more valid IGD!"
);
processIgdUpdate
(
UpnpIgdEvent
::
INVALID_STATE
);
processIgdUpdate
(
UpnpIgdEvent
::
INVALID_STATE
);
}
}
...
@@ -261,11 +261,11 @@ NatPmp::requestMappingAdd(const Mapping& mapping)
...
@@ -261,11 +261,11 @@ NatPmp::requestMappingAdd(const Mapping& mapping)
assert
(
map
.
getIgd
());
assert
(
map
.
getIgd
());
auto
err
=
addPortMapping
(
map
);
auto
err
=
addPortMapping
(
map
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Request for mapping
%s
on
%s
failed with error
%i: %s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Request for mapping
{}
on
{}
failed with error
{:d}: {}
"
,
//
map.toString()
.c_str()
,
map
.
toString
(),
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
err,
err
,
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
if
(
isErrorFatal
(
err
))
{
if
(
isErrorFatal
(
err
))
{
// Fatal error, increment the counter.
// Fatal error, increment the counter.
...
@@ -274,9 +274,9 @@ NatPmp::requestMappingAdd(const Mapping& mapping)
...
@@ -274,9 +274,9 @@ NatPmp::requestMappingAdd(const Mapping& mapping)
// Notify the listener.
// Notify the listener.
processMappingRequestFailed
(
std
::
move
(
map
));
processMappingRequestFailed
(
std
::
move
(
map
));
}
else
{
}
else
{
// JAMI_DBG
("NAT-PMP: Request for mapping
%s on %s
succeeded",
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Request for mapping
{:s} on {:s}
succeeded"
,
//
map.toString()
.c_str()
,
map
.
toString
(),
//
igd_->toString()
.c_str()
);
igd_
->
toString
());
// Notify the listener.
// Notify the listener.
processMappingAdded
(
std
::
move
(
map
));
processMappingAdded
(
std
::
move
(
map
));
}
}
...
@@ -298,11 +298,11 @@ NatPmp::requestMappingRenew(const Mapping& mapping)
...
@@ -298,11 +298,11 @@ NatPmp::requestMappingRenew(const Mapping& mapping)
Mapping
map
(
mapping
);
Mapping
map
(
mapping
);
auto
err
=
addPortMapping
(
map
);
auto
err
=
addPortMapping
(
map
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Renewal request for mapping
%s
on
%s
failed with error
%i: %s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Renewal request for mapping
{}
on
{}
failed with error
{:d}: {}
"
,
//
map.toString().c_str(),
map
.
toString
().
c_str
(),
//
igd_->toString().c_str(),
igd_
->
toString
().
c_str
(),
//
err,
err
,
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
// Notify the listener.
// Notify the listener.
processMappingRequestFailed
(
std
::
move
(
map
));
processMappingRequestFailed
(
std
::
move
(
map
));
...
@@ -311,9 +311,9 @@ NatPmp::requestMappingRenew(const Mapping& mapping)
...
@@ -311,9 +311,9 @@ NatPmp::requestMappingRenew(const Mapping& mapping)
incrementErrorsCounter
(
igd_
);
incrementErrorsCounter
(
igd_
);
}
}
}
else
{
}
else
{
// JAMI_DBG
("NAT-PMP: Renewal request for mapping
%s
on
%s
succeeded",
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Renewal request for mapping
{}
on
{}
succeeded"
,
//
map.toString().c_str(),
map
.
toString
().
c_str
(),
//
igd_->toString().c_str());
igd_
->
toString
().
c_str
());
// Notify the listener.
// Notify the listener.
processMappingRenewed
(
map
);
processMappingRenewed
(
map
);
}
}
...
@@ -368,9 +368,9 @@ NatPmp::sendMappingRequest(const Mapping& mapping, uint32_t& lifetime)
...
@@ -368,9 +368,9 @@ NatPmp::sendMappingRequest(const Mapping& mapping, uint32_t& lifetime)
lifetime
);
lifetime
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_ERR
("NAT-PMP: Send mapping request failed with error
%s %i
",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: Send mapping request failed with error
{} {:d}
"
,
//
getNatPmpErrorStr(err),
getNatPmpErrorStr
(
err
),
//
errno);
errno
);
return
err
;
return
err
;
}
}
...
@@ -382,15 +382,15 @@ NatPmp::sendMappingRequest(const Mapping& mapping, uint32_t& lifetime)
...
@@ -382,15 +382,15 @@ NatPmp::sendMappingRequest(const Mapping& mapping, uint32_t& lifetime)
err
=
readResponse
(
natpmpHdl_
,
response
);
err
=
readResponse
(
natpmpHdl_
,
response
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Read response on IGD
%s
failed with error
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Read response on IGD
{}
failed with error
{}
"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
}
else
if
(
response
.
type
!=
NATPMP_RESPTYPE_TCPPORTMAPPING
}
else
if
(
response
.
type
!=
NATPMP_RESPTYPE_TCPPORTMAPPING
and
response
.
type
!=
NATPMP_RESPTYPE_UDPPORTMAPPING
)
{
and
response
.
type
!=
NATPMP_RESPTYPE_UDPPORTMAPPING
)
{
// JAMI_ERR
("NAT-PMP: Unexpected response type (
%i
) for mapping
%s
from IGD
%s
.",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: Unexpected response type (
{:d}
) for mapping
{}
from IGD
{}
."
,
//
response.type,
response
.
type
,
//
mapping.toString()
.c_str()
,
mapping
.
toString
(),
//
igd_->toString()
.c_str()
);
igd_
->
toString
());
// Try to read again.
// Try to read again.
continue
;
continue
;
}
}
...
@@ -463,8 +463,8 @@ NatPmp::removePortMapping(Mapping& mapping)
...
@@ -463,8 +463,8 @@ NatPmp::removePortMapping(Mapping& mapping)
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// Nothing to do if the request fails, just log the error.
// Nothing to do if the request fails, just log the error.
// JAMI_WARN
("NAT-PMP: Send remove request failed with error
%s
. Ignoring",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Send remove request failed with error
{}
. Ignoring"
,
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
}
}
// Update and notify the listener.
// Update and notify the listener.
...
@@ -480,9 +480,9 @@ NatPmp::getIgdPublicAddress()
...
@@ -480,9 +480,9 @@ NatPmp::getIgdPublicAddress()
// Set the public address for this IGD if it does not
// Set the public address for this IGD if it does not
// have one already.
// have one already.
if
(
igd_
->
getPublicIp
())
{
if
(
igd_
->
getPublicIp
())
{
// JAMI_WARN
("NAT-PMP: IGD
%s
already have a public address (
%s
)",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: IGD
{}
already have a public address (
{}
)"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
igd_->getPublicIp().toString()
.c_str()
);
igd_
->
getPublicIp
().
toString
());
return
;
return
;
}
}
assert
(
igd_
->
getProtocol
()
==
NatProtocolType
::
NAT_PMP
);
assert
(
igd_
->
getProtocol
()
==
NatProtocolType
::
NAT_PMP
);
...
@@ -490,9 +490,9 @@ NatPmp::getIgdPublicAddress()
...
@@ -490,9 +490,9 @@ NatPmp::getIgdPublicAddress()
int
err
=
sendpublicaddressrequest
(
&
natpmpHdl_
);
int
err
=
sendpublicaddressrequest
(
&
natpmpHdl_
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_ERR
("NAT-PMP: send public address request on IGD
%s
failed with error:
%s
",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: send public address request on IGD
{}
failed with error:
{}
"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
if
(
isErrorFatal
(
err
))
{
if
(
isErrorFatal
(
err
))
{
// Fatal error, increment the counter.
// Fatal error, increment the counter.
...
@@ -505,34 +505,34 @@ NatPmp::getIgdPublicAddress()
...
@@ -505,34 +505,34 @@ NatPmp::getIgdPublicAddress()
err
=
readResponse
(
natpmpHdl_
,
response
);
err
=
readResponse
(
natpmpHdl_
,
response
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Read response on IGD
%s
failed -
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Read response on IGD
{}
failed -
{}
"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
return
;
return
;
}
}
if
(
response
.
type
!=
NATPMP_RESPTYPE_PUBLICADDRESS
)
{
if
(
response
.
type
!=
NATPMP_RESPTYPE_PUBLICADDRESS
)
{
// JAMI_ERR
("NAT-PMP: Unexpected response type (
%i
) for public address request from IGD
%s
.",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: Unexpected response type (
{:d}
) for public address request from IGD
{}
."
,
//
response.type,
response
.
type
,
//
igd_->toString()
.c_str()
);
igd_
->
toString
());
return
;
return
;
}
}
IpAddr
publicAddr
(
response
.
pnu
.
publicaddress
.
addr
);
IpAddr
publicAddr
(
response
.
pnu
.
publicaddress
.
addr
);
if
(
not
publicAddr
)
{
if
(
not
publicAddr
)
{
// JAMI_ERR
("NAT-PMP: IGD
%s
returned an invalid public address
%s
",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: IGD
{}
returned an invalid public address
{}
"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
publicAddr.toString()
.c_str()
);
publicAddr
.
toString
());
}
}
// Update.
// Update.
igd_
->
setPublicIp
(
publicAddr
);
igd_
->
setPublicIp
(
publicAddr
);
igd_
->
setValid
(
true
);
igd_
->
setValid
(
true
);
// JAMI_DBG
("NAT-PMP: Setting IGD
%s
public address to
%s
",
if
(
logger_
)
logger_
->
debug
(
"NAT-PMP: Setting IGD
{}
public address to
{}
"
,
//
igd_->toString()
.c_str()
,
igd_
->
toString
(),
//
igd_->getPublicIp().toString()
.c_str()
);
igd_
->
getPublicIp
().
toString
());
}
}
void
void
...
@@ -540,18 +540,18 @@ NatPmp::removeAllMappings()
...
@@ -540,18 +540,18 @@ NatPmp::removeAllMappings()
{
{
//CHECK_VALID_THREAD();
//CHECK_VALID_THREAD();
// JAMI_WARN
("NAT-PMP: Send request to close all existing mappings to IGD
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Send request to close all existing mappings to IGD
{}
"
,
//
igd_->toString().c_str());
igd_
->
toString
().
c_str
());
int
err
=
sendnewportmappingrequest
(
&
natpmpHdl_
,
NATPMP_PROTOCOL_TCP
,
0
,
0
,
0
);
int
err
=
sendnewportmappingrequest
(
&
natpmpHdl_
,
NATPMP_PROTOCOL_TCP
,
0
,
0
,
0
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Send close all TCP mappings request failed with error
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Send close all TCP mappings request failed with error
{}
"
,
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
}
}
err
=
sendnewportmappingrequest
(
&
natpmpHdl_
,
NATPMP_PROTOCOL_UDP
,
0
,
0
,
0
);
err
=
sendnewportmappingrequest
(
&
natpmpHdl_
,
NATPMP_PROTOCOL_UDP
,
0
,
0
,
0
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
// JAMI_WARN
("NAT-PMP: Send close all UDP mappings request failed with error
%s
",
if
(
logger_
)
logger_
->
warn
(
"NAT-PMP: Send close all UDP mappings request failed with error
{}
"
,
//
getNatPmpErrorStr(err));
getNatPmpErrorStr
(
err
));
}
}
}
}
...
@@ -654,9 +654,9 @@ bool
...
@@ -654,9 +654,9 @@ bool
NatPmp
::
validIgdInstance
(
const
std
::
shared_ptr
<
IGD
>&
igdIn
)
NatPmp
::
validIgdInstance
(
const
std
::
shared_ptr
<
IGD
>&
igdIn
)
{
{
if
(
igd_
.
get
()
!=
igdIn
.
get
())
{
if
(
igd_
.
get
()
!=
igdIn
.
get
())
{
// JAMI_ERR
("NAT-PMP: IGD (
%s
) does not match local instance (
%s
)",
if
(
logger_
)
logger_
->
error
(
"NAT-PMP: IGD (
{}
) does not match local instance (
{}
)"
,
//
igdIn->toString()
.c_str()
,
igdIn
->
toString
(),
//
igd_->toString()
.c_str()
);
igd_
->
toString
());
return
false
;
return
false
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment