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
Guilherme Maciel Ferreira [Sun, 10 Jul 2011 03:20:30 +0000]
Bring aboard the TCP header and support classes
- Tested with a TCP ping prototype, solved the checksum issue
- Needs to be polished
Guilherme Maciel Ferreira [Sun, 10 Jul 2011 02:33:29 +0000]
Bring aboard a aternative version of Boost's TCP protocol
- This version allows low level socket manipulation of TCP segments, whereas the SOCK_STREAM doesn't allow.
Guilherme Maciel Ferreira [Sun, 10 Jul 2011 01:57:00 +0000]
Moved the IP classes to its own directory.
Guilherme Maciel Ferreira [Tue, 28 Jun 2011 00:41:38 +0000]
Comment to avoid warning
Guilherme Maciel Ferreira [Thu, 23 Jun 2011 18:26:14 +0000]
Calling set_ping_status() in ping function and added some documentation
Guilherme Maciel Ferreira [Thu, 23 Jun 2011 18:32:22 +0000]
Bring aboard the Ping factory
Guilherme Maciel Ferreira [Thu, 23 Jun 2011 18:40:43 +0000]
Using inheritance to commute between pingers
Guilherme Maciel Ferreira [Thu, 23 Jun 2011 16:22:32 +0000]
Modified configuration file