Remove globals from ip6_routes.cpp.

This commit is contained in:
Jonathan Hui
2016-09-07 13:30:22 -07:00
parent 707b5a4052
commit 7b58b80d9b
4 changed files with 35 additions and 19 deletions
+2 -1
View File
@@ -48,6 +48,7 @@ namespace Thread {
namespace Ip6 {
Ip6::Ip6(void):
mRoutes(*this),
mIcmp(*this),
mUdp(*this),
mForwardingEnabled(false),
@@ -530,7 +531,7 @@ ThreadError Ip6::ForwardMessage(Message &message, MessageInfo &messageInfo)
// on-link global address
;
}
else if ((interfaceId = Routes::Lookup(messageInfo.GetPeerAddr(), messageInfo.GetSockAddr())) > 0)
else if ((interfaceId = mRoutes.Lookup(messageInfo.GetPeerAddr(), messageInfo.GetSockAddr())) > 0)
{
// route
;
+2
View File
@@ -42,6 +42,7 @@
#include <net/icmp6.hpp>
#include <net/ip6_address.hpp>
#include <net/ip6_headers.hpp>
#include <net/ip6_routes.hpp>
#include <net/ip6_mpl.hpp>
#include <net/netif.hpp>
#include <net/socket.hpp>
@@ -322,6 +323,7 @@ public:
*/
int8_t GetOnLinkNetif(const Address &aAddress);
Routes mRoutes;
Icmp mIcmp;
Udp mUdp;
+13 -12
View File
@@ -38,24 +38,25 @@
#include <common/message.hpp>
namespace Thread {
extern Ip6::Ip6 *sIp6;
namespace Ip6 {
static Route *sRoutes = NULL;
Routes::Routes(Ip6 &aIp6):
mRoutes(NULL),
mIp6(aIp6)
{
}
ThreadError Routes::Add(Route &aRoute)
{
ThreadError error = kThreadError_None;
for (Route *cur = sRoutes; cur; cur = cur->mNext)
for (Route *cur = mRoutes; cur; cur = cur->mNext)
{
VerifyOrExit(cur != &aRoute, error = kThreadError_Busy);
}
aRoute.mNext = sRoutes;
sRoutes = &aRoute;
aRoute.mNext = mRoutes;
mRoutes = &aRoute;
exit:
return error;
@@ -63,13 +64,13 @@ exit:
ThreadError Routes::Remove(Route &aRoute)
{
if (&aRoute == sRoutes)
if (&aRoute == mRoutes)
{
sRoutes = aRoute.mNext;
mRoutes = aRoute.mNext;
}
else
{
for (Route *cur = sRoutes; cur; cur = cur->mNext)
for (Route *cur = mRoutes; cur; cur = cur->mNext)
{
if (cur->mNext == &aRoute)
{
@@ -90,7 +91,7 @@ int8_t Routes::Lookup(const Address &aSource, const Address &aDestination)
uint8_t prefixMatch;
int8_t rval = -1;
for (Route *cur = sRoutes; cur; cur = cur->mNext)
for (Route *cur = mRoutes; cur; cur = cur->mNext)
{
prefixMatch = cur->mPrefix.PrefixMatch(aDestination);
@@ -113,7 +114,7 @@ int8_t Routes::Lookup(const Address &aSource, const Address &aDestination)
rval = cur->mInterfaceId;
}
for (Netif *netif = sIp6->GetNetifList(); netif; netif = netif->GetNext())
for (Netif *netif = mIp6.GetNetifList(); netif; netif = netif->GetNext())
{
if (netif->RouteLookup(aSource, aDestination, &prefixMatch) == kThreadError_None &&
static_cast<int8_t>(prefixMatch) > maxPrefixMatch)
+18 -6
View File
@@ -68,7 +68,15 @@ class Routes
{
public:
/**
* This static method adds an IPv6 route.
* This constructor initializes the object.
*
* @param[in] aIp6 A reference to the IPv6 network object.
*
*/
Routes(Ip6 &aIp6);
/**
* This method adds an IPv6 route.
*
* @param[in] aRoute A reference to the IPv6 route.
*
@@ -76,10 +84,10 @@ public:
* @retval kThreadError_Busy The route was already added.
*
*/
static ThreadError Add(Route &aRoute);
ThreadError Add(Route &aRoute);
/**
* This static method removes an IPv6 route.
* This method removes an IPv6 route.
*
* @param[in] aRoute A reference to the IPv6 route.
*
@@ -87,10 +95,10 @@ public:
* @retval kThreadError_InvalidArgs The route was not added.
*
*/
static ThreadError Remove(Route &aRoute);
ThreadError Remove(Route &aRoute);
/**
* This static method performs source-destination route lookup.
* This method performs source-destination route lookup.
*
* @param[in] aSource The IPv6 source address.
* @param[in] aDestination The IPv6 destination address.
@@ -98,7 +106,11 @@ public:
* @returns The interface identifier for the best route or -1 if no route is available.
*
*/
static int8_t Lookup(const Address &aSource, const Address &aDestination);
int8_t Lookup(const Address &aSource, const Address &aDestination);
private:
Route *mRoutes;
Ip6 &mIp6;
};
/**