Add syntax to router name parsing to allow GDPnames to be associated
with the IP addresses. This is needed to support RtCerts. The syntax
is to include the base64-encoded GDPname after a slash, e.g.,
"gdp-01/0XwnpR-2F8dFikWnCpqTX4Bl7gzHTQlnER2pOH9qoOQ. For now the...
Make extreme debug tests consistent.
Delete some assertions that had zero effect (unsigned >= 0 is always
true); change _gdp_chan_advert_commit to _gdp_chan_advert_flush to avoid
the confusing and inaccurate name.
Fix a bug that might cause "OK" status codes to be interpreted as not
OK. This would only happen if the OK status included a value between 29
and 31 bits large.
Improved debugging on advertisements.
Fix advertising and withdrawal to actually delay between each
advertisement. Required changing handling of event loop startup and
Fix some debugging output.
Add some scaffolding to allow multiple advertisements in a single PDU.
Improve debugging of low level PDU glitches in headers.
Be more vocal on startup errors (HONGDS unconfigured and router
Update license date on all files. No functional changes.
Make debug output a bit less verbose (don't print message data unless
Mega-change: new object creation API with updated metadata; internal
name is hash of metadata, not hash of human name; query and maintain
human-oriented name to GDPname directory (HONGD).
Second cut at sorting asynchronous data records. Currently all done with
simulation (-Dtest.gdp.chan.seqno=102 randomizes the incoming sequence
numbers), and so missing or duplicated incoming records have not been
Pass Layer 4 network sequence number to higher layers.
Pull out old PROTOCOL_L4_V3 ifdef and associated code; add debugging
info to show more detail in off-the-wire L4 PDU headers; fix a memory
Add new administrative parameters to ignore SIGPIPE in gdplogd
(swarm.gdplogd.ignore.sigpipe) and applications in general
(swarm.gdp.ignore.sigpipe). This allows the library to reconnect to the
router if the connection gets interrupted during a write. However,...
Ignore SIGPIPE on router connections just in case the router goes away;
this will cause the write to return EPIPE, which should make the GDP
library attempt a reconnect.
Give more debugging output when GDP clients initiate a channel close.
Give a reasonable error code if a payload length won't fit into an uint16_t.
Fix or expand on FIXME comments.
Snapshot: compiles cleanly with updated protocol and crypto
support, but completely untested.
noticed hdr_len may be used uninitialized has returned to master
That, which is less than desired, but upon doubling is no more.
min header length adjustment to match consolidated header
Updates to Layer 4 PDU header for consistency with Rick. Untested,
since I don't have a router that speaks this protocol.
First cut on updated Net4 protocol. This moves some things from the
router's overlay header into the L4 PDU. In particular, the fields
needed for fragmentation and sequencing are now included. At some point
we know we'll want to use UDP for the client-router communication, hence...
Fix compile warning --- uninitialized variable used if a PDU comes in
with an unknown version number.
Updates for Net4 protocol based on later discussions with Griff and
Add another router ToS status indicating a clue that some data was not
delivered. It's unclear if we will use this, but I wanted to reserve
the magic number.
Add GDP_TOS_ROUTE_ACK in the L4 PDU tos field for the network to use for
switch-to-switch acknowledgements. It should never appear to the GDP
Avoid null pointer dereferences.
Snapshot of work on getting subscriptions working under Net4. Still
has several problems.
return keep reading when payload is short, just like when hdr is short
Fix problem with restarting connections on multiple router restarts;
turns out it was due to a misunderstanding about how libevent works.
Improved debugging for incoming PDUs.
Try to make sure that PDUs are sent atomically when possible.
First cut on getting Layer 4 Version 4 network protocol running. Not
yet working with Rick's code, but it does work with a hacked
gdp_router_click. However, advertising will need to be changed.
Fixes to prevent C++ compile errors for variables that are not
initialized and not used. This isn't a problem with C, and it's not a
bug, just an annoying C++-ism.
Changes necessary to compile under C++ because it doesn't understand
that (void *) is compatible with other pointer types. This adds a lot
of explicit casts that are not needed in C.
First cut at running Layer 5 network protocol version 4 over old
(version 3) Layer 4 stack. Substantial parts are unimplemented,
including signature generation and checking, read or subscribe by
timestamp or hash, and others. No asynchronous operations including...
Tweaks to Layer 4 Version 4 protocol so the networking layer can get
Fix some minor compiler warnings.
Tentatively working on v3 network protocol.
Additional debugging during initialization.
Snapshot. Trying to get advertising working on startup. This may be a
larger problem if advertisements need to use challenge-response given
that the I/O thread has been eliminated in gdplogd.
Snapshot. Compiles but doesn't work.
Fix some glitches with context data during startup/shutdown.
Mostly documentation updates.
Snapshot. Not tested.
First cut at new net protocol. Compiles, but not yet tested (not even
once --- do not try to run this!).
Be more aggressive about printing errors during initialization.
Better error checking.
Slight tweak to channel debugging options.
Declare expected lock ordering for chan, datum, gcl, and req objects.
Update licenses to 2017.
Add runtime flag to turn off Nagle algorithm (TCP_NODELAY).
Implement gdp_gcl_read_async. This also fixes some obscure problems
with other asynchronous operations, and tweaks debugging flags to make
it easier to pick out the operations you want to see.
Fix bug that sometimes caused crashes if an invalid DNS name was given
for a GDP router.
Finish putting gdp_buf abstraction in code (it was previously mixed with
libevent evbuffer calls).
Fix resource exhaustion problem when gdplogd restarts.
Add debugging for Zeroconf code.
Make it possible to compile out Zeroconf for systems that don't have
Avoid deadlock in channel handling (bufferevent locking).
Merge branch 'avahi-reformat'
Allow Zeroconf return of ipv6-addr:port without  around the address
part. Note well: a bare ipv6-addr without ":port" will be mis-parsed.
Rename globals and structs, get rid of mixed whitespace, and break up long lines
Update license. No code changes.
Include copyright in all files. There are scripts to do bulk
replacement of the copyright if desired.
Skip processing PDUs that failed to read, e.g., for bad version number.
A bit more output in demo mode.
intergrated zeroconf into main gdp lib
Make default router port be in the swarm.gdp.router.port administrative
Debugging nit: old function name in debug message.
Comments and code formatting.
Try to at least reduce the number of compile warnings on gcc. It
compiles clean on the NUC (Debian 7, gcc 4.7.2) but still gives some
errors on Ubuntu 14.04.1 (gcc 4.8.2).
Finish conversion of "packet" to "PDU". Mostly comments.
Fix resource leak when routing layer goes away.
Implement gdplogd shutdown actions: withdraw advertisements, explicitly
terminate all subscriptions.
Fix problem that would cause _gdp_chan_open to return "connected" when it actually wasn't connected.
Improved debugging; a few things that might be useful to end users at
debug levels 1 and 2.
Unify command and ack/nak processing; unify Associative and LRU GCL
caches; multiple other cleanups.
Fix reconnect so it works for applications as well as gdplogd.
Add another wakeup, just in case. (Nothing is using the channel state
at this point --- just eliminate it?)
Restarting when the routing layer goes away now works. Cleanup needed.
Snapshot in getting reconnection going --- still not there.
Fix fallbacks on open of routing layer (still need to reconnect when a
connection is lost).
Snapshot in getting fallbacks for connections to the routing plane.
Still doesn't work, but at least works for the case where the first
address in the list is available. It's also clear that _gdp_req_new
needs substantial work; as it is, gdplogd can handle commands and...