Skip to content

Commit

Permalink
remove fulfilled todo and document new protocol version
Browse files Browse the repository at this point in the history
  • Loading branch information
cjdelisle committed Feb 24, 2015
1 parent 48122dc commit 54b1599
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
3 changes: 0 additions & 3 deletions net/InterfaceController.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,9 +325,6 @@ static void iciPing(struct InterfaceController_Iface_pvt* ici, struct InterfaceC
if (unresponsive) {
// our link to the peer is broken...

// XXX(cjd): we need to tell the switch about this because packets to this if
// should be responded to with error packets.

// Lets skip 87% of pings when they're really down.
if (ep->pingCount % 8) {
ep->pingCount++;
Expand Down
29 changes: 28 additions & 1 deletion util/version/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,34 @@ Version_COMPAT(15, ([12,13,14]))
* February 13, 2014
*
* Verschlumbesserung
* XXX(cjd): Explain this version
*
* This version comprises a major refactoring both in the internal organizatin of and the behavior
* of cjdns. First on the internal organization note, the file formerly known as Ducttape.c is no
* more, it made cjdns when cjdns didn't work but now it's time has passed, long live Ducttape.
* Ducttape has been broken up into a series of 5 modules, SwitchAdapter, ControlHandler,
* SessionManager, UpperDistributor and TUNAdapter. Furthermore Interface.h has been removed and
* replaced with Iface.h. Interface.h was "gendered", meaning the male side of one interface could
* only be linked with the female side of the other, Iface is ungendered and is linked (potentially
* to any other interface in the project) using Iface_plumb(). Furthermore Iface has been adapted
* to facilitate manual tail-call optimization.
*
* A new protocol called PFChan seperates the Pathfinder from the (packet handling) core. The
* pathfinder is nolonger required to answer any questions for the core synchronously and since it
* now communicated using Message and Iface as opposed to function calls, it may be seperated into
* an external process. Furthermore the EventEmitter (module to which the pathfinder connects) is
* capable of accepting connections from multiple pathfinders, allowing advanced external
* pathfinders to be developed outside of the main cjdns project.
*
* On the point of protocol, two new headers have been defined, one is sent over the wire to other
* nodes and the other is merely internal protocol for communicating with the SessionManager.
* DataHeader is a new header, sent over the wire between any two v16+ nodes, it replaces the faux
* IPv6 headers which previously were sent over the wire. RouteHeader is used internally to tell
* SessionManager where one wants the packet to go but is never seen on the wire. The final and
* perhaps most significant change in this version is the loss of packet forwarding. No longer does
* a v16 node attempt to forward a message to another node in case that it does not know a route to
* the final destination instead it bufferes the packet and triggers a DHT search in the same way
* that Ethernet buffers a frame and triggers an ARP request. This vastly simplifies the debugging
* of weird routing behaviors.
*/
Version_COMPAT(16, ([12,13,14,15]))

Expand Down

0 comments on commit 54b1599

Please sign in to comment.