Guilherme Maciel Ferreira [Fri, 30 Sep 2011 03:41:59 +0000]
 
Using a more straightforward comparison
Guilherme Maciel Ferreira [Fri, 30 Sep 2011 01:06:54 +0000]
 
Parameter is passed by reference, not by value
Guilherme Maciel Ferreira [Fri, 30 Sep 2011 01:02:54 +0000]
 
Reducing scope of variable
Guilherme Maciel Ferreira [Fri, 30 Sep 2011 00:49:36 +0000]
 
Ensure that there are always more hosts addresses than any other option
- in other works, it is not allowed to have [host] without "name" option
- here is the assertions, but the treatment must be provided in a higher layer
Guilherme Maciel Ferreira [Thu, 29 Sep 2011 04:06:11 +0000]
 
Asserting for the hosts items quantity match
Guilherme Maciel Ferreira [Thu, 29 Sep 2011 00:46:42 +0000]
 
Small code improvements
Guilherme Maciel Ferreira [Sat, 24 Sep 2011 17:02:46 +0000]
 
Adding the options classes to the Makefile
Guilherme Maciel Ferreira [Fri, 23 Sep 2011 22:02:28 +0000]
 
Bring aboard hosts section configuration option classes.
Guilherme Maciel Ferreira [Fri, 23 Sep 2011 21:48:10 +0000]
 
More descriptive variable name, also fixing a bug which cause the program to halt with the wrong arguments
Guilherme Maciel Ferreira [Fri, 23 Sep 2011 21:40:26 +0000]
 
parse method is not const, because it can change the internal state of the objects
Thomas Jarosch [Tue, 13 Sep 2011 11:01:27 +0000]
 
Update version number scheme documentation
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 04:07:55 +0000]
 
Bug fix: return the boost::program_options::option_description by value
- If this object is returned by reference or smart pointer, the
  boost::program_options::options_description::add() method will delete it
  causing double free on that object. So we prevent any problem by not exposing
  the underlying object
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:10:45 +0000]
 
Grammatical corrections on Readme.code file
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:09:45 +0000]
 
Added comments to Configuration class
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:06:51 +0000]
 
Bring aboard "hosts-down-limit" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:05:52 +0000]
 
Bring aboard "link-down-interval" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:03:59 +0000]
 
Bring aboard "link-up-interval" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:02:51 +0000]
 
Bring aboard "nameserver" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:01:57 +0000]
 
Bring aboard "ping-fail-limit" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 02:00:33 +0000]
 
Bring aboard "source-network-interface" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 01:54:53 +0000]
 
Bring aboard "status-notifier-cmd" configuration option class.
Guilherme Maciel Ferreira [Tue, 13 Sep 2011 01:24:53 +0000]
 
Bring aboard an abstract class for configuration options.
- The subclasses shall reduce the size and complexity from
  ConfigurationOptions class, spliting its functionality among many classes
Guilherme Maciel Ferreira [Sat, 10 Sep 2011 18:30:52 +0000]
 
Changed include guards style to the project's standard
Guilherme Maciel Ferreira [Fri, 9 Sep 2011 13:08:47 +0000]
 
New TODO entries: goals for config branch
Guilherme Maciel Ferreira [Wed, 7 Sep 2011 02:39:08 +0000]
 
Make the ping-protocol option case insensitive
Guilherme Maciel Ferreira [Tue, 6 Sep 2011 03:25:39 +0000]
 
Parsing only if could process the file, now it is simetric with the command line code
Guilherme Maciel Ferreira [Sat, 3 Sep 2011 00:44:16 +0000]
 
Improved Host documentation
Guilherme Maciel Ferreira [Sat, 3 Sep 2011 00:37:55 +0000]
 
Changed ping protocol to a "per host" configuration, instead of one for all hosts
Guilherme Maciel Ferreira [Wed, 31 Aug 2011 03:01:44 +0000]
 
Including configuration classes in makefile
Guilherme Maciel Ferreira [Wed, 31 Aug 2011 03:00:34 +0000]
 
Split configuration responsability between different classes
Guilherme Maciel Ferreira [Wed, 31 Aug 2011 02:53:30 +0000]
 
Bring aboard classes to handle each kind of configuration interface
Guilherme Maciel Ferreira [Wed, 31 Aug 2011 02:46:44 +0000]
 
Created a class to hold configuration options and parsing inteligence
- it does not know about where the configuration came from
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 01:26:35 +0000]
 
Updated Readme file with the TCP ping feature
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 01:21:35 +0000]
 
Fixed postconditions, the equal had wrong pointer interator
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 01:11:29 +0000]
 
Replced old-style C functions by C++ STL versions
Guilherme Maciel Ferreira [Fri, 26 Aug 2011 03:40:15 +0000]
 
Merge branch 'tcpping'
Conflicts:
	src/icmp/icmppinger.cpp
Guilherme Maciel Ferreira [Fri, 26 Aug 2011 01:07:17 +0000]
 
Replaced the raw byte array by a MessagePayload object, this class provides methods to handle decoding of network words
Guilherme Maciel Ferreira [Fri, 26 Aug 2011 01:03:55 +0000]
 
Allows to add more data to the MessagePayload through append method.
Also fixed the read and write documentation.
Guilherme Maciel Ferreira [Tue, 23 Aug 2011 03:58:31 +0000]
 
Small code formatting
Guilherme Maciel Ferreira [Tue, 23 Aug 2011 03:33:07 +0000]
 
Pings the host at a specific port (available only to TCP ping)
Guilherme Maciel Ferreira [Tue, 23 Aug 2011 01:30:39 +0000]
 
Reads the host port from configuration file
Guilherme Maciel Ferreira [Sun, 21 Aug 2011 15:48:26 +0000]
 
Changed the type of the header size variables from int to size_t, so it matches the type where it is used
Guilherme Maciel Ferreira [Sun, 21 Aug 2011 15:43:55 +0000]
 
The class variable HeaderSizeInBytes was renamed to Ipv4HeaderSizeInBytes and made global only within file scope.
Guilherme Maciel Ferreira [Sun, 21 Aug 2011 01:15:52 +0000]
 
TcpHeader class uses the MessagePayload class to handle network byte handling
Guilherme Maciel Ferreira [Sun, 21 Aug 2011 01:07:06 +0000]
 
Implemented a method to access the inner array pointer, this is necessary for memory copies.
Guilherme Maciel Ferreira [Sun, 21 Aug 2011 00:16:25 +0000]
 
Fixing some asserts with wrong ranges and reworking some comments
Guilherme Maciel Ferreira [Sat, 20 Aug 2011 15:26:23 +0000]
 
Removed select_source_network_interface() function, replace by simple call to NetworkInterface::bind()
Guilherme Maciel Ferreira [Sat, 20 Aug 2011 15:19:13 +0000]
 
The C's low level socket handling functions were encapsulated in the NetworkInterface class
Guilherme Maciel Ferreira [Sat, 20 Aug 2011 04:16:50 +0000]
 
Bring aboard the Network Interface template class.
- It is a template because it uses the generic socket type, to avoid inheritances.
- This template class hides much of the low level socket handling.
Guilherme Maciel Ferreira [Thu, 18 Aug 2011 02:21:57 +0000]
 
Renamed IcmpChecksumCalculator to IcmpChecksum
Guilherme Maciel Ferreira [Thu, 18 Aug 2011 02:13:57 +0000]
 
Renamed ChecksumCalculation template to Checksum
- The name represents better an object
- Also changed the file extension from .h to .hpp, so keep templates with .hpp extension and classes with .h
Guilherme Maciel Ferreira [Tue, 16 Aug 2011 10:40:11 +0000]
 
Allowing to copy the MessagePayload object, through implementation of Copy Constructor and Assignment Operator
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 23:13:13 +0000]
 
Added the 32 bits version of encode and decode methods
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 22:58:04 +0000]
 
Small code formatting
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 17:23:13 +0000]
 
Asserted the encode16() and decode16() parameters, warning about off-by-one errors
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 16:39:36 +0000]
 
Renamed IcmpMessagePayload to MessagePayload, so it can be used by other messages types
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 11:39:49 +0000]
 
Renamed getters and setters
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 00:52:25 +0000]
 
Moved PingStatus enumeration to its own file, so it can be reused by both Pingers
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 00:49:07 +0000]
 
The Include Guards must match the file's name
Guilherme Maciel Ferreira [Sat, 13 Aug 2011 00:42:05 +0000]
 
Surrounded the receive by a try..catch, so prepare to receive another packet only if the reply isn't a RST
Guilherme Maciel Ferreira [Tue, 9 Aug 2011 03:42:36 +0000]
 
Removing warning about conversion from 'int' to 'uint8_t'
Guilherme Maciel Ferreira [Tue, 9 Aug 2011 01:28:50 +0000]
 
Adding a remark about sequence number from RST
Guilherme Maciel Ferreira [Tue, 9 Aug 2011 00:09:35 +0000]
 
Adding logging to ioctl fails, and replacing the nested if statements by guard clauses (early returns)
Guilherme Maciel Ferreira [Sat, 6 Aug 2011 19:33:09 +0000]
 
Replaced shift operations on IP addresses to an endian-safer approach
- Instead of shifts on sockaddr.sa_data, uses a cast to sockaddr_in.sin_addr.s_addr.
  And as long as the two structures have the same memory layout, the cast is safe.
- Reinterpret four chars (8 bits) as one integer (32 bits), and make it endian safe.
Guilherme Maciel Ferreira [Sat, 6 Aug 2011 17:52:07 +0000]
 
Validates the ifr.ifr_name buffer size before copy (Thomas's advice)
Guilherme Maciel Ferreira [Thu, 4 Aug 2011 00:57:07 +0000]
 
Pinger factory provides only static (class) methods, thus do not require public constructor and destructor.
Guilherme Maciel Ferreira [Thu, 4 Aug 2011 01:16:28 +0000]
 
Set the received status as successful when the RST match what was expected.
Guilherme Maciel Ferreira [Thu, 4 Aug 2011 01:13:59 +0000]
 
Little code format detail
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 10:40:33 +0000]
 
Placed start_receive() method closer to the schedule_timeout_echo_reply(), where it gets called.
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 10:33:05 +0000]
 
Changed the handle_timeout() method to handle_ping_done()
- now it calls the ping call back function
- and do not schedule the next ping anymore, let it to the callback responsability
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 10:19:29 +0000]
 
Renamed create_tcp_header() method to create_ack_request()
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 10:12:57 +0000]
 
Move the ACK segment send functionality to the send_ack_request() method
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 09:58:07 +0000]
 
Split the method, separated some functionality in schedule_timeout_rst_reply()
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 01:20:36 +0000]
 
Renamed timeout variable to the context of TCP instead of ICMP
Guilherme Maciel Ferreira [Tue, 2 Aug 2011 01:01:54 +0000]
 
Sequence number does not identify a particular segment, it is always the same
Guilherme Maciel Ferreira [Mon, 1 Aug 2011 00:15:26 +0000]
 
Missing header files and identation
Guilherme Maciel Ferreira [Mon, 1 Aug 2011 00:12:48 +0000]
 
Retrieve the local IP address from the interface using the low level ioctl, plus some code enhancements
Guilherme Maciel Ferreira [Sat, 30 Jul 2011 19:56:00 +0000]
 
Bring aboard Doxygen documentation support
Guilherme Maciel Ferreira [Thu, 9 Jun 2011 19:41:34 +0000]
 
Added and formatted some error messages
Guilherme Maciel Ferreira [Sun, 24 Jul 2011 00:18:34 +0000]
 
Split methods
- create_tcp_header() to create the TCP header for ACK ping
- print_rst_reply() to print the TCP header for RST reply
Guilherme Maciel Ferreira [Sun, 24 Jul 2011 00:12:49 +0000]
 
Cosmetic changes
- improved variable names
- added "Warning" to some logs
Guilherme Maciel Ferreira [Sun, 24 Jul 2011 00:11:18 +0000]
 
Removed commentted code
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 03:49:19 +0000]
 
Formatting log messages
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 03:47:22 +0000]
 
Working TCP pinger
- Needs to fix the source IP address used in the pseudo IP header
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 02:16:37 +0000]
 
Split the TcpHeader implementation and header
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 02:09:28 +0000]
 
Removed the unused get_identifier() method
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 02:08:19 +0000]
 
Small code formatting
Guilherme Maciel Ferreira [Fri, 22 Jul 2011 02:05:55 +0000]
 
Fixed socket typedef, it is a raw socket, not stream socket
Guilherme Maciel Ferreira [Thu, 21 Jul 2011 00:27:47 +0000]
 
Added the default protocol to use in the config file
Guilherme Maciel Ferreira [Thu, 21 Jul 2011 00:26:43 +0000]
 
Better comment description
Guilherme Maciel Ferreira [Thu, 21 Jul 2011 00:13:29 +0000]
 
Fixed the return statement, the method has the return statement in the correct place
Guilherme Maciel Ferreira [Tue, 19 Jul 2011 01:26:01 +0000]
 
Fully functional pinger factory
Guilherme Maciel Ferreira [Tue, 19 Jul 2011 01:22:22 +0000]
 
Added the remaining TCP pinger arguments
- still not working, but the skeleton is done
Guilherme Maciel Ferreira [Tue, 19 Jul 2011 01:19:28 +0000]
 
Code formatting
Guilherme Maciel Ferreira [Sat, 16 Jul 2011 22:36:20 +0000]
 
Solving some conversion and variable shadow warnings
Guilherme Maciel Ferreira [Fri, 15 Jul 2011 02:38:29 +0000]
 
Adding the ping protocol configuration option
Guilherme Maciel Ferreira [Fri, 15 Jul 2011 02:36:08 +0000]
 
Moving the PingProtocol enumeration from PingerFactory to its own file
- Added a method to convert from string to the enumeration
Guilherme Maciel Ferreira [Thu, 14 Jul 2011 03:27:00 +0000]
 
The "using namespace std" exempt the use of "std::" qualifier
Guilherme Maciel Ferreira [Sun, 10 Jul 2011 03:28:16 +0000]
 
Note to myself: rework the checksum to use it also in the TCP stuff
Guilherme Maciel Ferreira [Sun, 10 Jul 2011 03:27:28 +0000]
 
Fixed include guards name