Commit Graph

19 Commits

Author SHA1 Message Date
Srivats P.
90fda499dd RPC now uses stream instead of an array for protobuf parsing and serialization. This change removes the limit on the byte size of a protobuf.
Because we are now using a new protobuf API - ParseFromBoundedZeroCopyStream(), the protobuf version has to be >= 2.2.0

Fixes issue 14
2010-10-18 17:25:27 +05:30
Srivats P.
971713ae0f Replaced HTONX() and NTOHX() with qToBigEndian() and qFromBigEndian() 2010-07-21 14:10:06 +05:30
Srivats P.
564b30955b Removed hardcoded paths from pbrpc.pro; made MainWindow default size smaller 2010-05-08 20:44:33 +05:30
Srivats P.
d9f788e93d Fixed compiler warnings 2010-05-04 21:42:29 +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.
2581562ec5 Fixes
- Queued RPC calls would cause crashes due to invalid pointers to request/response and/or controller; this has been fixed
    - PbRpcController now takes ownership of request and response messages and
      will delete them when it itself is being deleted
    - This design mandates that request and response messages for each RPC call
      have to be allocated on the heap.
    - The convention for the Closure 'done' call now is to allocate and pass a
      pointer to the controller object to it which will delete it after use;
      this requires that controller itself be also allocated on the heap
      (NOTE: this is just a convention - not mandatory)
    - All existing RPC calls (in portgroup.cpp) have been changed to follow the
      above convention
- Reordering of queued RPC calls has been fixed
- PortManager is now destroyed at exit; because of this fix the per port temporary capture files are auto-removed at exit
- WinPcapPort destructor no longer deletes the monitor threads because the parent class PcapPort already does it
- Capture does not automatically (and incorrectly) stop after one packet if started immediately after a View Capture operation
- User is prompted to stop transmit on a port first if he tries to apply configuration changes on a port in 'transmit' state
2010-02-17 15:26:42 +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.
c97ae3bc55 Fixed a bunch of memory leaks - thanks to the superb Valgrind! 2010-01-08 15:18:55 +00:00
Srivats P.
aac2229403 Removed a bunch of gcc4 warnings - mostly "unused param" 2010-01-03 08:56:16 +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.
a1ae3e7e6c Refactoring
- Major code reorganization of the server code across several classes with fewer 'friends'
	- New server classes - AbstractPort, PcapPort, WinPcapPort, PortManager
	- With this reorg classes have more focus than earlier and will be hopefully easy to extend

Fixes
	- Ostinato client is now able to successfully reconnect and talk to the Ostinato server after a disconnect - earlier, if a method had been pending during the disconnect, the communication was not up after a reconnect; pending methods are cleaned up at disconnect now
2009-12-26 17:33:27 +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.
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
Srivats P.
2d856012cb New Protocol Framework - initial checkin; not yet complete 2009-04-27 16:51:44 +00:00
Srivats P.
d9aa2e43a0 Changes for successful compilation in Linux. PCAP/Winpcap functions changed to use those which are common on both PCAP and WinPCAP. Some additional WinPCAP only functions (such as the pcap_sendqueue_xxx) which we intend to use have been added into pcapextra.c which will be used in case of Linux 2009-01-17 10:13:46 +00:00
Srivats P.
62a82dfb80 Stream creation (various modes etc.) done except for Rate Control.
PortStats done - need to find solution for txRates
2008-09-28 18:01:52 +00:00
Srivats P.
c7f4c1dec9 - StreamModel no longer a friend of Stream
- PacketModel refactored by moving protocol specific stuff into Stream and xxxProtocol classes
2008-08-24 04:39:08 +00:00
Srivats P.
f220482876 Added Google Protocol Buffers as the serialization format between client and server.
Initial Checkin. PB related code not yet complete
2008-08-09 03:22:13 +00:00