Reformulate the syslink_msg structure a bit. Instead of trying to create
commitb1a749dd0244e586549cccf69a01ea470342a7d0
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 24 Mar 2007 19:11:15 +0000 (24 19:11 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 24 Mar 2007 19:11:15 +0000 (24 19:11 +0000)
tree444e84dcaac92f786c1a2d90b9b1ee2e031ebd04
parent595bbda6255548c0321f401b99ae771d379edb09
Reformulate the syslink_msg structure a bit.  Instead of trying to create
unique sessions with a combination of logical and transaction ids, which
when all said and done is not very robust and not easy to index,
create a 'session' abstraction which can be used as a rendezvous for
a transaction as well as recorded by the route node for tracking and
caching purposes.

The 64 bit session ids are cluster-wide unique numbers, unique for all-time
(which means 'for long enough'... i.e. at least a year), which identify
abstracted connections between entities... almost the equivalent of
an 'open'.  The universal uniqueness of the number combined with the
logical end-point tracking greatly improves robustness in the face of an
ever-changing dynamic cluster mesh and guarentees that a syslink message
will never be misinterpreted.  Stale sessions can now be trivially
detected and acted upon.

This also allows us to reformulate the sysids we store in the message
structure into something that is far more suitable for tracking and routing
purposes without having to bloat the structure (three 64 bit ids in the
structure is plenty already!).
sys/kern/kern_syslink.c
sys/sys/syslink_msg.h