▼Layout of ARP Packets | ARP is the Address Resolution Protocol - which we receive and then map IP to MAC addresses |
ARP: Offsets of initial items in an ARP packet. | The initial items are the hardware and protocol types, address lengths, and the operation code |
▼Layout of CDP Packets | CDP is the Cisco Discovery Protocol - which we receive and interpret, but don't send |
CDP: Offsets of initial non-TLV items in a CDP packet. | The initial items are a checksum, protocol version, and the time to live of the packet |
CDP: Sizes of the type and length portion of a CDP TLV entry. | Offsets of things that occur at the beginning of each TLV entry |
CDP: Known values for TLV types | |
CDP: Capability (CDP_TLV_CAPS) mask bits. | The TLV type CDP_TLV_CAPS value is a field with a set of bits defining the capabilities which a given switch or router might implement |
'FrameSet' data format on the wire | As noted earlier, FrameSets are logical packets |
Generic TLV capabilities | Implements a set of client-oriented TLV (Type, Length, Value) capabilities |
▼Layout of LLDP packets | The Link Layer Discovery Protocol is a layer two discovery protocol which we receive and interpret, but do not send |
LLDP: offsets for LLDP packets | |
LLDP: Known values for TLV types. | |
LLDP: Methods of encoding Chassis ID. | |
LLDP: Methods of encoding Port ID. | |
LLDP: bit mask of switch capabilities. | |
LLDP: IEEE 802.1 Organizationally specific TLV subtypes. | 802.1 Organizationally Specific TLVs – OUI == 00-80-C2 |
LLDP: IEEE 802.3 Organizationally specific TLV subtypes. | 802.3 Organizationally Specific TLVs – OUI == 00-12-0F |
Nanoprobe implementation functions | A collection of useful functions for implementing nanoprobes - sans main program |
▼C-Classes | |
▼AssimObj class | Implements the base object class for our object system |
ChildProcess class. | Class for creating and monitoring child processes in the gmainloop environment |
ConfigContext class | A base class for remembering configuration values of various types in a hash table with capabilities to go to and from JSON |
▼ResourceCmd class | Class implementing resource commands |
ResourceLSB class | Class implementing resource commands |
ResourceNAGIOS class | Class implementing resource commands |
ResourceOCF class | Class implementing resource commands |
CompressFrame class | Class implementing Compression/decompression on the wire |
ConfigContext class | A base class for remembering configuration values of various types in a hash table with capabilities to go to and from JSON |
▼Discovery class | Discovery abstract base class - supporting the discovery of various local things by our subclasses |
ArpDiscovery class | Class providing an ARP Discovery class for discovering IP/MAC address resolution - subclass of Discovery class |
JSON discovery class. | JSONDiscovery class - supporting the discovery of various things through scripts that produce JSON output to stdout |
SwitchDiscovery class | Class providing a switch discovery class for discovering network switch properties - subclass of Discovery class |
▼Frame class | Class for holding/storing binary blobs - Base class for all the other Frame types |
AddrFrame class | Class for holding/storing various kinds of NetAddr class network addresses |
CompressFrame class | Class implementing Compression/decompression on the wire |
▼CryptFrame class | Class for encrypting FrameSets |
CryptCurve25519 class | Class for encrypting FrameSets |
CstringFrame class | Class for holding/storing C-style null-terminated strings - Subclass of Frame class |
IntFrame class | Class representing various length of integers - subclass of Frame class |
IpPortFrame class | Class for holding/storing various kinds of NetAddr class network addresses |
NVpairFrame class | Class for holding/storing pairs of strings as name/value pairs Subclass of Frame class |
SeqnoFrame class | Class representing packet "sequence numbers" - subclass of Frame class |
SignFrame class | Class representing digital signatures - subclass of Frame class |
UnknownFrame class | Class representing an unrecogized or unknown type of frame in a packet - subclass of Frame class |
FrameSet class | Class representing a collection of Frames to be sent in a single datagram |
FsProtocol class | |
FsQueue class | |
▼GmainFd class. | (base) Class for reading from file descriptors (usually pipes) from gmainloop programs |
LogSourceFd class. | Class for logging the content of file descriptors in the glib gmainloop world |
HbSender class. | Class for heartbeat Senders - We send heartbeats to the chosen few |
▼Listener class. | Base Listener class - Listen for FrameSets |
AuthListener class. | Class for listening, authenticating, and obeying packets from the Collective Authority |
HbListener class. | Class for heartbeat Listeners - We listen for heartbeats and time out those which are late |
NetAddr class | This is our basic NetAddr object |
NetGSource class | This is our basic NetGSource object |
▼NetIO class | (Abstract) NetIO objects are able to perform network writes and reads |
▼NetIOudp class | A NetIOudp object performs network writes and reads on UDP sockets |
ReliableUDP class | A ReliableUDP object implements a protocol to make UDP reliable |
PacketDecoder class | A base class for transforming an incoming packet into a GSList of FrameSet class objects |
GSource_Pcap class | Class representing a pcap GSource object - for capturing packets in the g_main_loop paradigm |
▼ResourceCmd class | Class implementing resource commands |
ResourceLSB class | Class implementing resource commands |
ResourceNAGIOS class | Class implementing resource commands |
ResourceOCF class | Class implementing resource commands |
C-Class Management | |
▼#define enumerations | |
IANA Address Family Numbers | This information was taken from http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml as described by RFC 3232 |
CDP: Known values for TLV types | |
CDP: Capability (CDP_TLV_CAPS) mask bits. | The TLV type CDP_TLV_CAPS value is a field with a set of bits defining the capabilities which a given switch or router might implement |
Protocols known to (supported by) create_pcap_listener(). | These protocols can be ored together to create the complete set of interesting protocols to be passed as the 'listenmask' argument |
Data Types corresponding our various TLV types | Each of the types below has a method associated with it which knows how to convert it to a string |
FrameSet Types | |
Individual TLV 'Frame' data types and layouts (by TLV type) | Below is the set of individual frame types and data layouts - organized by TLV type |
▼Project-wide (global) todos | |
Staffing - People to look for | |
Nearer term TODOs | |
Farther out TODOs - things needing research | |
▼FrameFormats | Below is the set of frame formats and corresponding macro definitions This section will document the format of the individual frame types |
C-Class AddrFrame wire format | Here is the format we use for packaging an AddrFrame class for the wire |
C-Class C-string wire format | Here is the format we use for packaging a NUL-terminated C-style string (CstringFrame class) for the wire |
C-Class IntFrame wire format | Here are the various frame formats that we use for packaging single integers as whole frames |
C-Class IpPortFrame wire format (including port number) | Here is the format we use for packaging an IpPortFrame class for the wire |
C-class SeqNoFrame wire format | Here is the wire format we use for sequence numbers |
C-class SignFrame wire format | Here is the wire format we use for digital signatures |
Individual TLV 'Frame' data types and layouts (by TLV type) | Below is the set of individual frame types and data layouts - organized by TLV type |