Commit Graph

65 Commits

Author SHA1 Message Date
Srivats P.
fd2c0c73d1 Bumped the file format version number because of the new protocols added - HexDump, IGMP and MLD 2010-11-08 16:34:14 +05:30
Srivats P.
3fb011cae4 Fixed warnings 2010-11-08 14:21:41 +05:30
Srivats P.
a634d4b91a merge with main repository 2010-11-07 20:45:36 +05:30
Srivats P.
bea8fb736e MLD fixes 2010-11-07 20:05:24 +05:30
Srivats P.
1d1e6479c3 MLD review and rework 2010-11-07 18:10:09 +05:30
Srivats P.
790e1cb383 IGMP/MLD msg types have been moved into the IGMP/MLD subclasses from GMP. Packet is now correctly padded with zero rather than garbage. Implemented AbstractProtocol::protocolHasPayload() method to force payload to None for IGMP/MLD/ARP etc. 2010-11-07 12:51:22 +05:30
Srivats P.
a465e926a5 IGMPv3/MLDv2 record type +1/-1 jugglery removed 2010-11-06 23:40:07 +05:30
Srivats P.
dbc7409616 Review and rework of GMP and IGMP 2010-11-06 23:29:44 +05:30
Srivats P.
599e591907 TextProtocol now allows specifying the end-of-line symbol
Fixes Issue 18
2010-11-04 23:05:26 +05:30
Srivats P.
fbde299478 Added HexDump Protocol 2010-11-03 19:39:36 +05:30
Srivats P.
d4408f0fc1 more changes 2010-08-20 07:22:21 +05:30
Srivats P.
19eb4a1713 snapshot before rewriting SSM report code 2010-08-14 14:50:58 +05:30
Srivats P.
82bcc756f0 added prefix inputMask (not working); added some code for sourceList (not complete) 2010-08-04 21:47:11 +05:30
Srivats P.
30bd0cd7c8 First cut code for IGMP/MLD 2010-08-04 16:56:08 +05:30
Srivats P.
c2fac2db70 Added streams save/restore; Ostinato file format specified; Protocol Field Numbering scheme changed - existing protocol field numbers changed accordingly 2010-07-13 20:36:35 +05:30
Srivats P.
fedc4ec5d1 Extended ICMP to work for ICMPv6 as well as ICMPv4 2010-06-11 20:48:24 +05:30
Srivats P.
069cc16279 Protocol Framework Change: FieldFlags - FrameField and MetaField are no longer exclusive. A field can be neither. Also frameFieldCount() now actually counts the number of frameFields instead of deriving it from metaFieldCount() - these changes allow protocols to export different sets of fields based on a opcode/type field. 2010-06-07 20:52:50 +05:30
Srivats P.
710eb7f836 Fixed a bug in IcmpProtocol::frameFieldCount() which would return incorrect values sometimes 2010-06-07 19:20:35 +05:30
Srivats P.
11acbf201d Modified ICMP protocol such that the 'Id' and 'Seq' fields are shown and used only for those ICMP types that actually have those fields 2010-06-06 22:42:19 +05:30
Srivats P.
4cba17e6c8 Fixed compiler warning 2010-05-24 21:49:59 +05:30
Srivats P.
7327fbb58d Fixed a bug in IPv4 pseudoIP cksum calculation which would cause invalid TCP and UDP cksums in certain cases 2010-05-23 22:30:32 +05:30
Srivats P.
956455137c Implemented the remaining IP Tunneling protocols - IP6over4, IP4over6, IP6over6; renumbered L3 protocol protobuf "field numbers". ComboProtocol now implements PseudoIp cksum as protoB's cksum as a convenience for the IP tunneling protocols. Also found and fixed an issue with IPv6's pseudoIp cksum which was causing the TCP/UDP cksums to be incorrect 2010-05-23 16:46:43 +05:30
Srivats P.
4a70d52e3e Implemented IPv6 protocol; found and fixed a bug in AbstractProtocol::protocolFrameValue() in the process 2010-05-22 22:02:46 +05:30
Srivats P.
46cebefb19 IP4over4 implemented as a "combo" protocol; added IP 4over4 as a L3 protocol in StreamConfigDialog. Also temporarily masked a change introduced in r59ec which triggers a crash if you click "cancel" in StreamConfigDialog with the "Protocol Data" tab open 2010-05-09 10:28:58 +05:30
Srivats P.
6ca88eb661 StreamConfigDialog "Protocol Selection" framework has been enhanced to include a L5 group. TextProtocol has been added to this L5 group. TCP/UDP protocols have been modified to get port numbers from a L5 protocol; TCP/UDP protocols have also been updated as per the "Sample" protocol recommendation 2010-05-08 20:12:38 +05:30
Srivats P.
3defe905e5 Added a generic TextProtocol that can be used for any text based protocol such as HTTP, SIP, RTSP, NNTP etc. Also - fixed a bug in ARP; IntComboBox sets itself as 'editable' 2010-05-06 20:39:29 +05:30
Srivats P.
d9f788e93d Fixed compiler warnings 2010-05-04 21:42:29 +05:30
Srivats P.
d0cddbafb8 Added a preflight check method to class StreamBase - this is used by StreamConfigDialog to notify the user of potential problems such as truncated frames 2010-05-02 15:37:46 +05:30
Srivats P.
e681e1e226 Added new param 'cksumScope' in AbstractProtocol's header and payload cksum methods; this ensures that TCP/UDP checksum is now correct if preceded by a IP 4over4. 2010-04-24 19:16:39 +05:30
Srivats P.
ae05037265 Added, edited, corrected and completed the AbstractProtocol doxygen documentation 2010-04-18 21:50:35 +05:30
Srivats P.
35f4a8bafb Fixes for 64bit compilation and Qt4.6 2010-04-16 16:45:35 +05:30
Srivats P.
59c9ae8baa - Added Copyright and License (GPLv3) notifications to all source files viz. *.h, *.cpp, *.proto
- Also added a "License" tab to the 'About Ostinato' dialog box.
2010-03-27 18:38:57 +00:00
Srivats P.
cbf114c29d - Added version/revision info to both client and server UI
- Top level 'make clean' and 'make distclean' now do not stop in case of errors
- 'make distclean' now removes the object_script.* generated files
- Added the Logo to the About dialog and also the application icon
2010-03-24 15:56:11 +00:00
Srivats P.
4dc3d2d7f9 - Added TODO instruction comments to the sample protocol
- Implemented ICMP protocol builder
- Added #ifdefs to intcombobox.h to prevent multiple inclusion
2010-03-17 15:47:56 +00:00
Srivats P.
f64d901729 - Top level Makefile
- The default 'all' target no longer has 'qmake' as prerequisite; 'make qmake' shd be done manually on a pristine codebase
    - eol's changed from dos-style to unix-style
- Trivial changes in sample.h/sample.cpp
- Implemented ARP protocol
2010-03-13 05:46:24 +00:00
Srivats P.
b28bcd3055 Implemented "exclusive control" for a port using bindconfig (Win32 only). Following changes done for the same -
- OstProto service has a new method "modifyPort()"
- At port init port.isExclusive is now set using a bindconfig query (Win32 only)
- AbstractPort interface has 2 new pure virtual methods - hasExclusiveControl() and setExclusiveControl()
- PcapPort does not support this functionality (yet) so these methods return false
- WinPcapPort suppots this new functionality using bindconfig
- Port's notes (specifying Rx/Tx limitations) are now set and updated based on hasExclusiveControl()
- Presence of 'notes' on a port is indicated using a '*' after the port name in the port stats window
- The tabwidget has been removed from Port Window | Stream View Pane
- Ostinato Client has a new action in the port window's context menu for the same
- Port Icon in the Port Window is decorated based on exclusive control
2010-02-09 15:21:52 +00:00
Srivats P.
70ca42fbb3 Enhancements
- Server now updates the "packet list" after every "apply" rather than before a "start transmit" (if dirty) - this better reflects user's expectation from these operations
- Client disables the entire application and changes to a "Busy" cursor when "applying" stream configuration

Fixes
- UDP checksum no longer is zero but a valid value
- Order of streams no longer gets messed up across a "apply"
2010-01-10 14:40:33 +00:00
Srivats P.
c97ae3bc55 Fixed a bunch of memory leaks - thanks to the superb Valgrind! 2010-01-08 15:18:55 +00:00
Srivats P.
984d65b27d - PortTransmitter on Windows now uses the Win32 QueryPerformanceCounter() instead of QThread::usleep() for more accurate timing
- Port Stats limitations are now sent from the server to the client (as it should have always been!)
2010-01-03 13:57:47 +00:00
Srivats P.
aac2229403 Removed a bunch of gcc4 warnings - mostly "unused param" 2010-01-03 08:56:16 +00:00
Srivats P.
be620e0ab6 Changes for successful Linux compilation 2010-01-02 13:49:54 +00:00
Srivats P.
c5bcc2e0c2 Converted all EOLs to unix-style '\n' only 2009-12-28 10:05:42 +00:00
Srivats P.
c7d90ff1ab - All tabs converted to spaces in all files
- .vimrc added to reflect settings used in the project
2009-12-28 08:31:28 +00:00
Srivats P.
bb6a9235c3 Features
- Ostinato Client
		- will start the server as a child process at startup and terminate it at exit

	- Ostinato Server (Drone)
		- is now a system tray application
		- if not able to bind to a IP/Port successfully, informs the user and exits
		- the GUI is now nothing more than a TextLabel

Others
	- If a getStats() request is pending, the client will not queue up any more requests till a reply is received for the pending one
	- Nitpicks in the Payload protocol Widget, PortsWindow Widget
2009-11-29 16:32:31 +00:00
Srivats P.
4c5b8faff7 Fixes/Rework
- UserScript Protocol reworked. Needs more testing. May need a significant rewrite in the future, but for now this will have to do - therefore it has been marked "EXPERIMENTAL" for now
2009-11-28 08:35:05 +00:00
Srivats P.
ebc0403fde Features
UserScript Protocol "first cut" checked-in. Needs rework.
2009-11-23 08:08:22 +00:00
Srivats P.
c9563b50eb Features
Sample Protocol completed - can be used as a template while implementing a new protocol
2009-11-16 13:09:20 +00:00
Srivats P.
17792b8253 Refactoring, optimization et. al.
---------------------------------
	- StreamConfigDialog: Valid subsequent protocol choices for a particular protocol in the simple protocol selection widget is no longer hardcoded - ProtocolManager is queried for validitity of each pair of possible protocols; signal-slot connections are made accordingly. This refactoring makes it easier to add a protocol to the simple protocol selection widget
	- ProtocolManager: populates and maintains a database of valid 'neighbour protocols' and implements a method - isValidNeighbour() to query the same for a pair of protocols
	- AbstractProtocol: new method protocolIdType() introduced to build the above database (in conjunction with the existing method protocolId(ProtocolIdType)); default implementation returns ProtocolIdNone
	- Protocols which include a valid/supported ProtocolIdType (eth/llc/ip) reimplement protocolIdType() to return the apporpirate ProtocolIdType. These are viz.
		- combo
		- eth
		- llc
		- snap
		- ip
	- Speed optimization while populating streamqueues if the protocolFrameValue/Size() does not vary across packets
	- AbstractProtocol: new methods to support the above optimization
		- isProtocolFrameValueVariable()
		- isProtocolFrameSizeVariable()
		- isProtocolFramePayloadValueVariable()
		- isProtocolFramePayloadSizeVariable()
		(each of the default implementations returns false indicating that the protocol frame value or frame size is fixed and not variable)
	- Protocols which support variable values/size (list follows) reimplement the above methods appropriately
		- combo
		- mac
		- dot3
		- ip4
		- tcp
		- udp
		- payload
	- StreamInfo::makePacket() moved to base class as StreamBase::frameValue()
	- StreamBase: all 'get' accessor functions made 'const'
	- class ProtocolManager: while registering a protocol, no need to pass the protocol name; ProtocolManager finds it out internally by using the protocol's shortName() method



Fixes
-----
	- Fixed issue with port capture not starting the first time 'start capture' was clicked
2009-11-13 16:00:57 +00:00
Srivats P.
ade8c119d9 Features
- Port State (Link/Transmit/Capture) now updated alongwith port stats
    - On link state change, the port window is not updated - partial changes have been done under #if 0; needs refactoring of Port Class implementation/usage before a signal/slot for the same can be implemented

Fixes
  - Fixed crash in client when connection to server is broken
  - Packet Capture and Capture Buffer Retrieval now works correctly and consistently (I think!)

Others
  - Minor visual changes in Ports Window
  - Port Stats Window now has 'right' alignment for stats data and 'center' for state data
2009-11-08 08:20:34 +00:00
Srivats P.
84c7fe1e06 Features
- Added support for retrieving the packet capture buffer from server to client (does not work consistently however - needs investigation)
		- getCaptureBuffer() Rpc signature changed
	- RPC: Added support in Rpc Channel (client) to queue calls
	- RPC: Added support for transferring arbitrary binary data from server to client (used to get packet capture files)
		- Rpc header changed - length is now 4 bytes instead of 2; there is no rsvd field any longer

Fixes
	- RPC: Fix for the case when a msg is not received all at once over the socket
	- StreamConfigDialog: fixed display issue in packet view for combo protocols containing meta fields
	- Fixed issue with Stacked Vlan not retaining data for both CVlan and SVlan
	- Fixed incorrect payload size issue with increment/decrement frame length modes

Refactoring, Cleanup etc.
	- RPC: Minor code and TODOs cleanup
	- Server: Minor code and TODOs cleanup
	- Server: Removed unused file(s): rxtx.cpp, rxtx.h
	- Server: Replaced direct use of ProtocolList with the ProtocolListIterator
	- Common: Minor code and TODOs cleanup
	- StreamBase::frameLen() now returns the length based on the mode/min/max and the passed in streamIndex
	- AbstractProtocol interface changed for methods - protocolFrameSize(), protocolFrameOffset(), protocolFramePayloadSize() : all of them now take streamIndex as an optional param with 0 as the default value
		- Protocols implementing the above methods changed accordingly
2009-11-03 14:02:09 +00:00