File: DESIGN

package info (click to toggle)
nethogs 0.8.1-1~bpo8%2B1
  • links: PTS
  • area: main
  • in suites: jessie-backports
  • size: 308 kB
  • sloc: cpp: 1,950; ansic: 277; makefile: 112
file content (32 lines) | stat: -rw-r--r-- 1,207 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Rough design notitions:

decpcap handles pcap. nethogs.cpp asks to be notified of all IPv4 or IPv6
TCP packets.

the IP callbacks store the source and destination addresses into the user
data. The TCP callback makes a Packet out of it, finds the Connection 
corresponding to that packet, and adds the packet to the connection.

If no connection is found, a new one is constructed, and the process
related to that connection is found though getProcess.

If needed, the screen is refreshed.

If, in getProcess, no corresponding process is found, the connection is
added to the 'unknown' process.

To prevent connections from accidentally ending up in the 'unknown' process,
and then staying there indefinitely, we should maybe walk though
the unknownproc's connections whenever the connection-to-inode table is
refreshed.
And maybe, while there are still unknown connections, the connection-to-inode 
table should be updated regularly.


There are some global data structures:
connection.cpp:
  connections. 'ConnList' list containting all currently known connections.
  A connection removes itself from the global 'connections' list in its 
  destructor.

  processes. 'ProcList *' containing all processes.