Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1565)

Issue 246310044: SiFT (Simple Forwarding over Trajectory) Routing

Can't Edit
Can't Publish+Mail
Start Review
Created:
8 years, 10 months ago by Amir.Arc
Modified:
7 years, 6 months ago
Reviewers:
Tom Henderson, tomh
CC:
ns-3-reviews_googlegroups.com, ns-3-review_googlegroups.com
Visibility:
Public.

Description

SiFT (Simple Forwarding over Trajectory) Routing -------------------------------------------- SiFT can be considered as a routing/forwarding protocol with very low overhead in computation for using in wireless ad hoc networks This model was developed by `the ResiliNets research group <http://www.ittc.ku.edu/resilinets>`_ at the University of Kansas. SiFT Routing Overview ************************** This model is based on specification written in [1]. There is no standard or RFC for this model currently. SiFT can be considered as a reactive protocol and operates on a on-demand behavior. This model doesn't keep any routing table and works based on control flooding which is broadcasting in a controlled way. Nodes need to know geolocation of each other and we use sift-geo class to get the proper information from other nodes. Authors of the model have been assumed that these information can be retrieved by GPS or any other similar techniques;however, they haven't specified any particular method. By knowing geolocation of the source and destination, the source calculates a trajectory to the destination and adds these geographical information to each packet. Therefore, each node that receives these packets can calculate the trajectory. This information plus geolocation of the last sending nodes are added to a header above the IP header. When a node receives a packet, it calculates its distance from the trajectory and the last sending node and set a timer based on these values. The node which has the less value for its timer forwards the packet and other nodes which are in its wireless range and waiting for their timer to timeout stop their timer and consequently the forwarding process. Therefore, nodes which are closer to the trajectory and farther from the last sending nodes forwards the packet. In order to eliminate transmission of those nodes that are far from the trajectory and out of the wireless range of the forwarding node, they stop forwarding process, if their distance from the trajectory are more than a defined threshold. This threshold can be as long as the wireless range of each node. The whole calculation is done by a simple formula which divides the node distance from the trajectory and the last forwarding node. Therefore, mobility of nodes can be considered in each forwarding process and it is not necessary to keep any extra information. In other words, those node which are closer to the trajectory forward the packets. It can be considered broadcasting along the trajectory. Although pairwise lines can also be used for the trajectory and they are suitable for paths like vehicular networking. It is not implemented SiFT in ns-3.22 *************** SiFT is implemented in ns-3.19 and tested on ns-3.21 and ns-3.22 as well. We can not find any incompatibility in any of these versions. Moreover, we compare the SiFT performance with other available adhoc routing protocols in ns-3 without any problem. The results are available at [2] Helper ****** In order to use SiFT the following Helpers have been implemented: SiftHelper SiftMainHelper The example scripts inside ``src/sift/examples/`` demonstrate the use of sift based nodes in different scenarios. The helper source can be found inside ``src/sift/helper/sift-main-helper.{h,cc}`` and ``src/sift/helper/sift-helper.{h,cc}`` Example ******* The example can be found in ``src/sift/examples/``: * siftSample.cc use SiFT as a routing protocol within a traditional MANETs environment. Validation ********** Simulation cases similar have been tested and have comparable results. manet-routing-compare.cc has been used to compare SiFT with three of other routing protocols. The results are available in a technical paper at [2]. References ********** [1] Link for main paper <http://home.deib.polimi.it/filippini/papers/2005_ISWCS_Sift.pdf> [2] Link for SiFT comparison results < http://www.ittc.ku.edu/resilinets/reports/Modarresi-Sterbenz-2015.pdf>

Patch Set 1 #

Total comments: 79

Patch Set 2 : revision 2 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+4218 lines, -0 lines) Patch
A src/sift/doc/sift.rst View 1 1 chunk +71 lines, -0 lines 0 comments Download
A src/sift/examples/sift.cc View 1 1 chunk +469 lines, -0 lines 0 comments Download
A src/sift/examples/siftSample.cc View 1 1 chunk +308 lines, -0 lines 0 comments Download
A src/sift/examples/wscript View 1 1 chunk +13 lines, -0 lines 0 comments Download
A src/sift/helper/sift-helper.h View 1 1 chunk +90 lines, -0 lines 0 comments Download
A src/sift/helper/sift-helper.cc View 1 chunk +110 lines, -0 lines 0 comments Download
A src/sift/helper/sift-main-helper.h View 1 1 chunk +75 lines, -0 lines 0 comments Download
A src/sift/helper/sift-main-helper.cc View 1 1 chunk +107 lines, -0 lines 0 comments Download
A src/sift/model/sift-geo.h View 1 1 chunk +110 lines, -0 lines 0 comments Download
A src/sift/model/sift-geo.cc View 1 1 chunk +192 lines, -0 lines 0 comments Download
A src/sift/model/sift-header.h View 1 chunk +315 lines, -0 lines 0 comments Download
A src/sift/model/sift-header.cc View 1 1 chunk +371 lines, -0 lines 0 comments Download
A src/sift/model/sift-repository.h View 1 1 chunk +100 lines, -0 lines 0 comments Download
A src/sift/model/sift-routing.h View 1 1 chunk +258 lines, -0 lines 0 comments Download
A src/sift/model/sift-routing.cc View 1 1 chunk +1020 lines, -0 lines 0 comments Download
A src/sift/sift.rst View 1 chunk +53 lines, -0 lines 0 comments Download
A src/sift/test/sift-test-suite.cc View 1 1 chunk +523 lines, -0 lines 0 comments Download
A src/sift/wscript View 1 chunk +33 lines, -0 lines 0 comments Download

Messages

Total messages: 2
Tom Henderson
Most comments are relatively minor but there are some style and documentation issues to address. ...
8 years, 4 months ago (2015-12-08 01:12:04 UTC) #1
Amir.Arc
7 years, 6 months ago (2016-10-17 03:53:24 UTC) #2
Dear Reviewers

I appreciate it, if you may review the second revision of the SiFT routing
algorithm.

Best regards,
Amir

https://codereview.appspot.com/246310044/diff/1/scratch/sift.cc
File scratch/sift.cc (right):

https://codereview.appspot.com/246310044/diff/1/scratch/sift.cc#newcode46
scratch/sift.cc:46: #include "ns3/lar-main-helper.h"
On 2015/12/08 01:12:02, Tom Henderson wrote:
> I could not run this example because it references LAR (not in this patch).

Those references were removed

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sample.rst
File src/sift/doc/sample.rst (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sample.rst#newcode4
src/sift/doc/sample.rst:4: -----------
On 2015/12/08 01:12:02, Tom Henderson wrote:
> This file can be ignored (is copy of DSR documentation).

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.h
File src/sift/doc/sift.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.h#newcode1
src/sift/doc/sift.h:1: /* -*- Mode:C++; c-file-style:"gnu";
indent-tabs-mode:nil; -*- */
On 2015/12/08 01:12:02, Tom Henderson wrote:
> delete this file.

removed

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.h#newcode1
src/sift/doc/sift.h:1: /* -*- Mode:C++; c-file-style:"gnu";
indent-tabs-mode:nil; -*- */
On 2015/12/08 01:12:02, Tom Henderson wrote:
> delete this file.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst
File src/sift/doc/sift.rst (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst#newcode18
src/sift/doc/sift.rst:18: Although pairwise lines can also be used for the
trajectory and they are suitable for paths like vehicular networking. It is not
implemented
On 2015/12/08 01:12:02, Tom Henderson wrote:
> Suggest to fix the grammar of this last paragraph to "Although pairwise lines
> can also be used for the trajectory, and are suitable for paths like vehicular
> networking, this approach is not implemented."

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst#newcode45
src/sift/doc/sift.rst:45: The helper source can be found inside
``src/sift/helper/sift-main-helper.{h,cc}`` and
``src/sift/helper/sift-helper.{h,cc}``
On 2015/12/08 01:12:02, Tom Henderson wrote:
> Please explain the difference between these two helpers; why two helpers?

I added more explanation. Basically, SiftMainHelper install SiftHelper on the
nodes

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst#newcode45
src/sift/doc/sift.rst:45: The helper source can be found inside
``src/sift/helper/sift-main-helper.{h,cc}`` and
``src/sift/helper/sift-helper.{h,cc}``
On 2015/12/08 01:12:02, Tom Henderson wrote:
> Please explain the difference between these two helpers; why two helpers?

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst#newcode52
src/sift/doc/sift.rst:52: * siftSample.cc use SiFT as a routing protocol within
a traditional MANETs environment.
On 2015/12/08 01:12:02, Tom Henderson wrote:
> 
> 
> siftSample.cc instead seems to be:   * This script creates 1-dimensional grid
> topology and then sends flows with onOffApplication between them.
> 
> I think that instead your code is such that:
> 
> - sift.cc is the MANET example with options for AODV, LAR, etc.
> - siftSample.cc is a simple 1-D topology
> 
> 
> Note, it might be more interesting to set up a 2-D grid and send from one
corner
> to the other, across the diagonal.

I wrote a better explanation as you suggested for sift.cc and siftSample.cc

https://codereview.appspot.com/246310044/diff/1/src/sift/doc/sift.rst#newcode52
src/sift/doc/sift.rst:52: * siftSample.cc use SiFT as a routing protocol within
a traditional MANETs environment.
On 2015/12/08 01:12:02, Tom Henderson wrote:
> 
> 
> siftSample.cc instead seems to be:   * This script creates 1-dimensional grid
> topology and then sends flows with onOffApplication between them.
> 
> I think that instead your code is such that:
> 
> - sift.cc is the MANET example with options for AODV, LAR, etc.
> - siftSample.cc is a simple 1-D topology
> 
> 
> Note, it might be more interesting to set up a 2-D grid and send from one
corner
> to the other, across the diagonal.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/examples/sift.cc
File src/sift/examples/sift.cc (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/examples/sift.cc#new...
src/sift/examples/sift.cc:30: */
On 2015/12/08 01:12:02, Tom Henderson wrote:
> 
> for example programs, it is helpful to include a comment about what the
program
> is intended to do, what kind of important command-line arguments are provided,
> and what kind of output files it leaves behind.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/examples/wscript
File src/sift/examples/wscript (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/examples/wscript#new...
src/sift/examples/wscript:6: obj.source = 'siftSample.cc'
On 2015/12/08 01:12:02, Tom Henderson wrote:
> 
> This wscript is broken; it compiles siftSample.cc into the executable name
> 'sift'.  Instead, create separate bld.create_ns3_program for each one.
> 
> Make sure that you include 'sift' as a dependent module; otherwise linker
errors
> will result.

Fixed

https://codereview.appspot.com/246310044/diff/1/src/sift/examples/wscript#new...
src/sift/examples/wscript:6: obj.source = 'siftSample.cc'
On 2015/12/08 01:12:02, Tom Henderson wrote:
> 
> This wscript is broken; it compiles siftSample.cc into the executable name
> 'sift'.  Instead, create separate bld.create_ns3_program for each one.
> 
> Make sure that you include 'sift' as a dependent module; otherwise linker
errors
> will result.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-helper.h
File src/sift/helper/sift-helper.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-helper.h...
src/sift/helper/sift-helper.h:3: * Copyright (c) 2011 Yufei Cheng
On 2015/12/08 01:12:02, Tom Henderson wrote:
> please check all copyrights and make sure they are what you want (do you want
to
> add your name?)

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-helper.h...
src/sift/helper/sift-helper.h:72: void SetNodes (NodeContainer &nodes);
On 2015/12/08 01:12:02, Tom Henderson wrote:
> doxygen missing (what does SetNodes() do?)

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-main-hel...
File src/sift/helper/sift-main-helper.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-main-hel...
src/sift/helper/sift-main-helper.h:43: * \brief Helper class that adds DSR
routing to nodes.
On 2015/12/08 01:12:02, Tom Henderson wrote:
> not DSR, but Sift
> 
> Again, it is not clear why you need two helpers?

Explained in sift.rst

https://codereview.appspot.com/246310044/diff/1/src/sift/helper/sift-main-hel...
src/sift/helper/sift-main-helper.h:43: * \brief Helper class that adds DSR
routing to nodes.
On 2015/12/08 01:12:02, Tom Henderson wrote:
> not DSR, but Sift
> 
> Again, it is not clear why you need two helpers?

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.cc
File src/sift/model/sift-geo.cc (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.cc#ne...
src/sift/model/sift-geo.cc:24: ///		state of an AeroRP node.
On 2015/12/08 01:12:03, Tom Henderson wrote:
> AeroRP reference again
Removed
Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.cc#ne...
src/sift/model/sift-geo.cc:101: Time now = Simulator::Now ();
On 2015/12/08 01:12:03, Tom Henderson wrote:
> would be nice to add NS_LOG_FUNCTION() calls to all methods

Added

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.cc#ne...
src/sift/model/sift-geo.cc:101: Time now = Simulator::Now ();
On 2015/12/08 01:12:03, Tom Henderson wrote:
> would be nice to add NS_LOG_FUNCTION() calls to all methods

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h
File src/sift/model/sift-geo.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:22: /// \brief	This header file declares and defines
internal state of an AERORP node.
On 2015/12/08 01:12:03, Tom Henderson wrote:
> not AERORP, but SIFT

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:44: //  friend class AeroRP;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> delete all instances of AeroRP

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:52: SiftGeo ()
On 2015/12/08 01:12:03, Tom Henderson wrote:
> do not implement methods in the header files, unless inlining (and for
> performance reasons)

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:63: void UpdateAllTupleIsChanged (bool isChanged);
On 2015/12/08 01:12:03, Tom Henderson wrote:
> missing doxygen

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:73: //set to store the temp infor for calc adj matrix
On 2015/12/08 01:12:03, Tom Henderson wrote:
> better Doxygen documentation needed

The function was removed.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-geo.h#new...
src/sift/model/sift-geo.h:73: //set to store the temp infor for calc adj matrix
On 2015/12/08 01:12:03, Tom Henderson wrote:
> better Doxygen documentation needed

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-header.cc
File src/sift/model/sift-header.cc (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-header.cc...
src/sift/model/sift-header.cc:63: : m_nextHeader (17),
On 2015/12/08 01:12:03, Tom Henderson wrote:
> constrained to use UDP only?

This no RFC for sift. No

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-header.cc...
src/sift/model/sift-header.cc:63: : m_nextHeader (17),
On 2015/12/08 01:12:03, Tom Henderson wrote:
> constrained to use UDP only?

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-header.cc...
src/sift/model/sift-header.cc:124: //  return GetNodesAddresses ().front ();
On 2015/12/08 01:12:03, Tom Henderson wrote:
> delete commented out code (in general, from your patch)

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-repository.h
File src/sift/model/sift-repository.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-repositor...
src/sift/model/sift-repository.h:62: bool isChanged;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> can you document isChanged, and the other parameters?

isChanged was documented.
I haven't written sift-geo.* and sift-repository.*. Since I needed some part of
those functions and I did some minor changes on them, I changed their name and
explained at the licence section of the file.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.cc
File src/sift/model/sift-routing.cc (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:41: #define TRANSMISSION_TIME 0.000047
On 2015/12/08 01:12:04, Tom Henderson wrote:
> instead of #define, do
> static const double TRANSMISSION_TIME = 0.000047

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:122: MakeTraceSourceAccessor
(&SiftRouting::m_dropTrace))
On 2015/12/08 01:12:04, Tom Henderson wrote:
> this is one piece of ns-3- that has been upgraded since ns-3.22.  trace
sources
> now have a signature type.
> 
> There would be an additional line like:
> +    .AddTraceSource ("Drop", "Drop SIFT packet",
> +                     MakeTraceSourceAccessor (&SiftRouting::m_dropTrace),
> +                     "ns3::SiftRouting::DropTracedCallback")
> 
> with a typedef defined in the header file.  This is for better Doxygen
> documentation on the signature of the callback.  See e.g. TcpSocketBase class
> for examples of this.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:130: NS_LOG_FUNCTION_NOARGS ();
On 2015/12/08 01:12:04, Tom Henderson wrote:
> only use the NOARGS variant for static methods.
> 
> Use instead: NS_LOG_FUNCTION (this);

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:314: m_seqNo = (m_seqNo + 1) % MAX_SEQ_NO;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> there is a SequenceNumber class in ns-3 network module (in the utils/
directory)
> that might be better to use for wrapping arithmetic than doing your own.  See
> how some of the other routing protocols (e.g. OLSR) use that class.

I found the similar implementation in OLSR. 

uint16_t RoutingProtocol::GetPacketSequenceNumber ()
{
  m_packetSequenceNumber = (m_packetSequenceNumber + 1) % (OLSR_MAX_SEQ_NUM +
1);
  return m_packetSequenceNumber;
}

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:467: << " Current time: " << Seconds
(Simulator::Now ()) << "\n\n");
On 2015/12/08 01:12:04, Tom Henderson wrote:
> in general, it helps to avoid inserting newlines into log statements because
if
> you want to e.g. search for all instances of a specific log statement by using
> grep, you will lose information if it is outputted to multiple statements.

removed.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:467: << " Current time: " << Seconds
(Simulator::Now ()) << "\n\n");
On 2015/12/08 01:12:04, Tom Henderson wrote:
> in general, it helps to avoid inserting newlines into log statements because
if
> you want to e.g. search for all instances of a specific log statement by using
> grep, you will lose information if it is outputted to multiple statements.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:655: std::cout << "--------------- Receive
Module- 0.0.0.0 is detected. The header is checking -----------\n";
On 2015/12/08 01:12:04, Tom Henderson wrote:
> why std::cout in model code?

This part was for debugging. I changed it to NS_LOG_DEBUG.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:772: // TODO This is the way to get all the nodes
positions
On 2015/12/08 01:12:03, Tom Henderson wrote:
> what is the TODO, is there more to do here?

No. removed.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:772: // TODO This is the way to get all the nodes
positions
On 2015/12/08 01:12:03, Tom Henderson wrote:
> what is the TODO, is there more to do here?

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:838: catch (int e)
On 2015/12/08 01:12:03, Tom Henderson wrote:
> we avoid use of C++ exceptions, as a general rule (I'm not aware of any
> try/catch in our codebase).  Instead, we have an NS_ABORT() or
NS_FATAL_ERROR()
> to check for exceptional conditions and do the right thing in shutting down
the
> simulation.  So, I recommend to convert the try/except to instead explicitly
> test variable values for exceptional conditions within a NS_ABORT, such as:
> 
> NS_ABORT_MSG_IF ((offsetBytes & 0x7), "offsetBytes must be multiple of 8
> bytes");
> NS_ABORT_MSG_UNLESS (index > 0 && index < N_BITS,
> "Ip64AddressGenerator::PrefixToIndex(): Illegal Prefix");

I changed the conditions, I don't need to use NS_ABORT() here anymore

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:1000: return 256;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> is this a valid value to return, or is this an exceptional condition?

Exceptional value.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:1000: return 256;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> is this a valid value to return, or is this an exceptional condition?

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:1038: std::cout << "Current Node IP address= " <<
currentAddress << std::endl;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> again, you shouldn't need std::cout in model code.  Instead, this type of
method
> should take a output stream argument and write to that.  See how IPv4 routing
> tables are printed out.

Changed similar to IPv4 routing.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.c...
src/sift/model/sift-routing.cc:1038: std::cout << "Current Node IP address= " <<
currentAddress << std::endl;
On 2015/12/08 01:12:03, Tom Henderson wrote:
> again, you shouldn't need std::cout in model code.  Instead, this type of
method
> should take a output stream argument and write to that.  See how IPv4 routing
> tables are printed out.

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.h
File src/sift/model/sift-routing.h (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/model/sift-routing.h...
src/sift/model/sift-routing.h:84: * \brief Dsr Routing base
On 2015/12/08 01:12:04, Tom Henderson wrote:
> more documentation needed (delete 'Dsr')

Done.

https://codereview.appspot.com/246310044/diff/1/src/sift/wscript
File src/sift/wscript (right):

https://codereview.appspot.com/246310044/diff/1/src/sift/wscript#newcode16
src/sift/wscript:16: 'test/sift-test-suite.cc',
On 2015/12/08 01:12:04, Tom Henderson wrote:
> This test suite file is missing from your patch.

Done.
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b