Guilherme Maciel Ferreira [Sun, 4 Sep 2011 11:59:20 +0000]
Implementing the assignment operator, also checking for self-assignment reported by PC-lint
- Warning 1529: Symbol 'MessagePayload::operator=(const MessagePayload &)' not first checking for assignment to this
- Warning 1539: member 'MessagePayload::PayloadSizeInBytes' not assigned by assignment operator
- Warning 1539: member 'MessagePayload::Payload' not assigned by assignment operator
Guilherme Maciel Ferreira [Sun, 4 Sep 2011 11:50:48 +0000]
Solving two issues reported by PC-lint
- Ignoring return value of function 'sigfillset(__sigset_t *)'
- Declaration of symbol 'signal' hides symbol 'signal(int, void (*)(int))'
Guilherme Maciel Ferreira [Sun, 4 Sep 2011 04:15:56 +0000]
Renamed parameter to avoid hiding symbol 'socket(int, int, int)' (issued by PC-lint)
Guilherme Maciel Ferreira [Thu, 1 Sep 2011 02:05:02 +0000]
Added a note about a TODO fix
Guilherme Maciel Ferreira [Thu, 1 Sep 2011 02:00:02 +0000]
Fixed broken assert in copy constructor
- The Payload member was initialized in the initializer list, so asserting Payload.get() == NULL was wrong!
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 15:59:57 +0000]
Improved IcmpPacket documentation
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 15:10:40 +0000]
Reordered DnsResolver::handle_ip_address method.
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 15:07:48 +0000]
Improved DnsResolver documentation
Thomas Jarosch [Sat, 27 Aug 2011 14:48:36 +0000]
Remove TCP ping from TODO, it's done
Guilherme Maciel Ferreira [Sat, 27 Aug 2011 14:37:03 +0000]
Message headers now have their wire format in Doxygen
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
Guilherme Maciel Ferreira [Thu, 9 Jun 2011 19:41:34 +0000]
Added and formatted some error messages
Guilherme Maciel Ferreira [Mon, 6 Jun 2011 17:55:05 +0000]
Renamed encode/decode to encode16/decode16
- specify the number of bits it encodes/decodes
- planning support for encode/decode of 32 bits used by TCP header
Guilherme Maciel Ferreira [Fri, 3 Jun 2011 20:00:41 +0000]
Replaced the assert by a conditional
- because the amount of data received can differ from the amount we expect, but this cannot make the application to abort.
Guilherme Maciel Ferreira [Sun, 29 May 2011 20:37:24 +0000]
Bring aboard TCP pinger class
Guilherme Maciel Ferreira [Sun, 29 May 2011 15:21:29 +0000]
Moved the icmppinger from host to icmp folder
Guilherme Maciel Ferreira [Thu, 19 May 2011 23:49:54 +0000]
Included a precondition to DnsResolver::handle_ip_address()
Guilherme Maciel Ferreira [Thu, 19 May 2011 23:48:28 +0000]
Added a tip in the Readme
Guilherme Maciel Ferreira [Thu, 19 May 2011 23:46:50 +0000]
Renamed BoostPinger to IcmpPinger
- the TCP pinger will be another class to avoid overloading this one with TCP stuff
- the name looks better =)
Guilherme Maciel Ferreira [Fri, 13 May 2011 23:17:37 +0000]
Minimum version required of Boost is 1.44
Thomas Jarosch [Fri, 13 May 2011 09:36:56 +0000]
First public commit
Thomas Jarosch [Thu, 12 May 2011 08:39:07 +0000]
Don't package files from kdevelop
Thomas Jarosch [Thu, 12 May 2011 08:38:46 +0000]
Started PC-Lint settings file
Thomas Jarosch [Thu, 12 May 2011 08:37:10 +0000]
Improve packaging: Include correct license files
Thomas Jarosch [Thu, 12 May 2011 08:36:06 +0000]
Add GPLv2 + linking exception to the source