Commit Graph

473 Commits

Author SHA1 Message Date
Srivats P.
1357f495ac Major rewrite of the protocol framework - changes not yet complete
Common
------
- Change in OstProto
	- Individual protocols are now extensions of (new) message 'Protocol' instead of 'Stream'
	- Stream now contains a repeated Protocol which also determines the ordered set of currently selected protocols; StreamCore.frame_proto which was doing this earlier has been removed

- Change in AbstractProtocol Interface
	- Parent changed to StreamBase
	- Corresponding change in constructor and factory func - createInstance()
	- new method protocolNumber() - returns unique id for each protocol
	- protoDataCopyInto/From() now copies into OstProto::Protocol instead of OstProto::Stream
- Change in all subclasses of AbstractProtocol to match new interface
- For all protocols, configFrom is no longer static, but each protocol has its own configForm
	- configForm creation is lazy
	- configForm is still a child of the protocol i.e. it will be destroyed alongwith the protocol
	- TODO: convert configWidget() to a pure factory function i.e. the protocol does not own the configForm - this requires us to pass the widget into load/storeConfigWidget() methods

- ProtocolCollection class removed alongwith its .h and .cpp
- ProtocolList class redefined to serve the purpose of ProtocolCollection
- New class ProtocolListIterator defined to iterate ProtocolList
- AbstractProtocol methods now use the ProtocolListIterator
- Factory function createProtocol() added to ProtocolManager
- OstProto::StreamCore accessor functions moved from Stream to StreamBase

Server
------
- MyService uses the newly moved accessors to StreamBase for OstProto::StreamCore members
- StreamInfo now uses the protocols to create the packet

Client
------
- StreamConfigDialog now uses ProtocolListIterator
- So does PacketModel
2009-08-02 14:52:34 +00:00
Srivats P.
0103696016 - AbstractProtocol
- new method: fieldFlags() - isCksum, isMeta; Note: isMeta is a flag now not a attrib
	- fieldData() bit fields are now in lsb not msb - protocolFrameValue() and subclasses changed accordingly
	- protocolFrameValue() now takes an additional bool param indicating whether the frameValue is being requested for a checksum calculation; if so fields which are checksum fields are assumed to be zero and their value is not fetched to prevent infinite recursion
- Other Protocols
	- mac: srcMac/dstMac modes is now working
	- vlan: implemented VLAN protocol
	- ip4: src/dst Addr modes is now working
	- udp/tcp: checksum done
	- Basic testing done for MAC, VLAN, IPv4, UDP and TCP protocols
	- sample protocol: .cpp/.h added to repos - need to be made compilable
- StreamConfigDialog
	- Redesigned the protocol selection tab to accomodate "Advanced Protocol Selection"
	- L2 Tab config widgets are now in 2 columns
	- Packet Tree View is no longer collapsed if selected protocols don't change
2009-05-24 14:54:11 +00:00
Srivats P.
2ec7fb30c2 Protocol Framework basic code in place now. Cleanup pending.
- New Classes:
  o ProtocolManager - singleton with which all protocols register
  o ProtocolCollection - Aggregates all registered protocols; exports methods to work on all protocols
  o StreamBase - aggregates ProtocolCollection with Stream Core and Control; the client/server side stream classes now derive from StreamBase leading to major reduction in their code (more cleanup pending)
- AbstractProtocol now supports the additional methods
  o createInstance()
  o protocolFrameSize()
  o protocolFrameOffset(), protocolFramePayloadSize()
  o protocolId(), payloadProtocolId()
  o protocolFrameCksum(), protocolFramePayloadCksum()
  0 constructor takes an extra param - frameProtoList
- Specific protocols - eth2, llc, snap, ip4, udp, tcp now return length, protocol id and cksums correctly (tcp/udp cksum pending)
- StreamConfigDialog - protocol controls for length, cksum and protocolid are automatically updated (not fully working yet)
2009-05-10 06:27:17 +00:00
Srivats P.
2d856012cb New Protocol Framework - initial checkin; not yet complete 2009-04-27 16:51:44 +00:00
Srivats P.
238f332ac4 - About Dialog added
- Stream Dialog now remembers the "selected" tabs across close and reopen
- Other trivial UI enhancements
2009-04-05 07:19:37 +00:00
Srivats P.
53bcc077da - Implemented the "Stop" and "Goto Stream" per stream "nextWhat" options (Goto can only go to first stream for now - not any arbitrary stream)
- StreamListView now has a delegate to display a combobox for "nextWhat" and a checkbox for "status"
- StreamListView now has reasonable default widths for its columns
2009-03-10 16:48:03 +00:00
Srivats P.
f13b0915d5 Packet Transmit Changes - not using pcap_sendqueue_transmit() any longer 2009-02-22 07:53:14 +00:00
Srivats P.
017cb75ae5 - Packet Transmission is now a separate thread to allow for event processing
- Packet Transmission rate (IPG) is done - need to test. IBG is still pending
- Per port there are two pcap_t handles - one for Rx and one for Tx: since PCAP does not capture loopback packets, transmission by OST happens on Rx Hdl so that they are recieved on the Tx Hdl
- pcap_loop() changed to pcap_dispatch() to be able to work in PCAP/Linux - forgot exactly why :-)
- Removed NIC stats
- Implemented PortStatsFilterDialog ordering of ports
- PortStatsWindow - Tooltip on Port column dispays stats limitations
2009-02-12 17:07:19 +00:00
Srivats P.
0c70668e56 Split the PCAP callback into 2 - one for Rx and one for Tx using pcap_setdirection() 2009-02-02 10:08:57 +00:00
Srivats P.
9ac311f80f Fixing the path that was unix specific to work for both unix and win32 2009-01-17 11:37:35 +00:00
Srivats P.
ab007ce0a5 Checking in pcapextra.h and pcapextra.cpp that got left out in the last commit 2009-01-17 10:52:00 +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.
bfc0e8d4c8 Tcp/Udp checksums done.
Frame Length Modes done.
Data Pattern Modes done.
Some minor fixes/enhancements in streamconfigdialog.
Added a "Edit Stream" action in StreamList context menu
2008-10-05 17:07:33 +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.
4cf80d4ee4 Demo code for stats being checked in 2008-09-14 12:03:53 +00:00
Srivats P.
9e7b323973 Rewrote DumpView as a subclass of QAbstractItemView (as it should be). Correspondingly reworked PacketModel to work with DumpView. Added Dot3Protocol and PayloadProtocol to Stream class 2008-08-30 08:49:08 +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
Srivats P.
a009fcffdf Deleted unused files 2008-06-14 07:40:41 +00:00
Srivats P.
a480be5a23 Finished basic PacketModel to feed actual data into PacketView
TODO: PacketModel to feed data into DumpView
2008-06-14 06:35:17 +00:00
Srivats P.
03ab9c4349 - Fixed some trivial compilation problems with Drone
- Putting in the new PacketTreeView code (still not complete)
2008-05-25 11:53:49 +00:00
Srivats P.
8251383351 - added PortStatsFilter
- added PacketDump (test code)
- added PacketTree (not complete)
- Protocol stuff (not complete)
2008-05-25 11:30:30 +00:00
Srivats P.
7e8d8308e3 Initial Import 2008-05-03 14:37:10 +00:00