Alan T. DeKok [Thu, 15 Jan 2026 15:58:19 +0000 (10:58 -0500)]
disable leak detection on CI runs for OSX
the underlying OSX libraries produce a ton of false positives,
and we don't have time right now to track them all down and add
suppression rules for each one.
linelog: Complete the fr_time_delta_t refactor and set the default timeout value for TCP and UDP linelog requests to "1s" instead of "1000s". Previous the unit was MS *sigh*.
which doesn't have the client table, but it's a start. And the
resulting structure isn't too bad.
Todo:
* have callbacks for specific fields. e.g. uptime.
* Those callbacks should be defined globally, and passed a uctx.
* the callback can then update the field before it's copied out
to the caller
Alan T. DeKok [Mon, 12 Jan 2026 16:39:33 +0000 (11:39 -0500)]
print out more stats, and start defining statistics structs and APIs
the plan is to:
* define the stats in the dictionaries
* have radict load up a statistics structure, and
* print out variable definitions for dict autoload
* print out dict autoload entries
* print out a C structure which holds the statistics
* print out a "linking" structure which ties the C structure
to the autoloaded DAs
* glue all of this into the build with GNU Make magic.
Right now, we can / have:
* define an "instance" of a statistics thing, which can be linked
to other instances of the same struct type
* allow instance data to be merged, so that we can collate all of
the similar statistics.
* functions to convert the C struct to pairs, and back
* functions to iterate over statistics
Alan T. DeKok [Sat, 10 Jan 2026 19:27:09 +0000 (14:27 -0500)]
start of tools to print dictionary structs to C types
in preparation for automatically creating statistics structures
and functions from the dictionaries.
* print out a C structure for a dictionary structure
* print out definitions for autoload dict attrs
* print out autoload definitions
There is still some additional work remaining. We need to define
the C source and header files which will "wrap" these definitions.
Once that's done, it should be fairly simple to define, encode,
and decode C data structures for managing server statistics.
We can then add a ton of (hopefully) one-line statements at
critical points to update the statistics. And then somehow find
ways to integrate the statistics across different threads.
We also need to write helper functions to "merge" statistics
structures from multiple threads.
Nick Porter [Thu, 8 Jan 2026 11:22:12 +0000 (11:22 +0000)]
Address debian sid build issues for CI
Debian sid calls to `debian/rules debian/control` fail if debian/control
doesn't exist due to an issue in one of the included system make files,
so we create a blank file and touch debian/control.in to ensure that the
make process works correctly.
Nearly all clients which do not validate Message-Authenticator are
known to accept responses which contain it, due to the provisions of
[RFC2866], Section 5:
A RADIUS client MAY ignore Attributes with an unknown Type.
These RADIUS clients are compatible with the protocol change outlined
in this document. We note also that Message-Authenticator has been
defined for almost twenty-five (25) years, since [RFC2869], so there
are few reasons for equipment to not support it.
Since the publication of the original BlastRADIUS notification, it
has become known that some implementations do not behave as expected.
That is, instead of ignoring an unexpected Message-Authenticator
attribute, they discard all responses with contain Message-
Authenticator. That behavior is entirely unreasonable, and is not
required by any standard.
The unfortunate reality is that the only way that RADIUS servers
could be compatible with such systems is for them to never send
Message-Authenticator in responses. However, doing so would open up
significantly more systems to the BlastRADIUS attack. As such, there
is no attempt made to be compatible with implementations that fail to
implement RADIUS correctly.
The only way to secure those systems is to upgrade them. Failing
that, the administrators of those systems will need to accept the
fact that their systems are vulnerable.
The solution adopted by [I-D.ietf-radext-deprecating-radius] is to
declare that clients or servers which discard packets containing
Message-Authenticator are not compliant with the RADIUS
specifications. It is not acceptable to decrease the security of the
RADIUS protocol in order to be compatible with insecure and non-
compliant implementations. That specification attempts to prevent
such issues from happening in the future, by mandating behavior for
unknown attributes in [I-D.ietf-radext-deprecating-radius] "Unknown
Attributes". There is no reason for an implementation to discard
response a packet simply because it does not recognize an attribute
in the packet.