Commit Graph

525 Commits

Author SHA1 Message Date
Srivats P.
a937112e63 Checking in intermediate changes in Stream Config Dialog. Changes to related to handling of protocols after introducing combo protocol 2009-10-11 06:07:27 +00:00
Srivats P.
4c2df3c5a7 Protocols
---------
	- all protocols on allocation of a configWidget, also populate it before returning from configWidget()
	- VLAN TPID override is now correctly saved and restored from/to its widget (vlan.cpp)
	- Payload protocol returns a minimum frame value of 1 byte size (Hack to avoid crash in stream config dialog when sum of all protocol frame sizes is greater than the frame length
	- small layout changes in mac widget (mac.ui)
	- src/dst ip mask changed from 255.255.255.255 to 255.255.255.0 (ip4.proto)
	- src mac changed from u32 to u64 (mac.proto)
	- "Combo Protocol" protocol container introduced to define newer protocols as a combination of existing protocols e.g. dot2 = dot3 + llc - THIS IS NOT YET COMPLETE (comboprotocol.h)


Client/StreamConfigDialog
-------------------------
	- Advanced Protocol Selection implemented
	- Simple Protocol Selection rewritten to work alongside Advanced
	- Payload Widget is treated like any other protocol - hence it is not placedinto the dialog specially
	- Any protocol selection change (in Simple/Advanced mode) immediately triggers change in the Stream's protocolList
	- Protocol Widgets now are arranged in a toolBox on a top level tab of the dialog instead of a nested tabWidget
	- Vlan selection (Simple Mode) uses Radio buttons instead of checkboxes
	- Double Tagged (SVlan + CVlan) now works via Simple Mode
2009-09-23 14:53:26 +00:00
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