Compatibility Policy
Upgrade Path
A successful upgrade to the next major versions is only guaranteed from the latest minor version of the currently installed major version.
Minor versions within a major version may be skipped during an upgrade.
Example. Given available versions: v12.34.0, v12.34.1, v12.34.2, v12.35.0, v12.35.1.
-
Guaranteed:
- v12.34.2 → v12.35.0 (minor version .2 is the latest of v12.34)
- v12.34.2 → v12.35.1 (see above, v12.35.0 can be skipped)
- v12.34.0 → v12.34.2 (v12.34.1 can be skipped)
-
Not guaranteed:
- v12.34.0 → v12.35.x (minor version .0 is not the latest of v12.34)
- v12.34.1 → v12.35.x (see above)
When settings format changes during the update, the settings are migrated to the new format with the preservation of meaning, if the corresponding logic is preserved.
Example. Up until v20.02, the MCR key was specified as base64 in the API and as text in the UI. Since v20.06, the key is given as a hex string. When updating, the bytes of existing keys are converted to the new format.
Example: see «Autodetection thresholds» section.
Backend API
Within the major version, a backward compatible request format is guaranteed.
Incompatible changes are described in the changelog.
Example: all queries for v12.34.0 also work with v12.34.1.
Example: some queries for v12.34.2 may not work in v12.35.0, changes are described in «Changelog v12.35.0» section.
Autodetection Thresholds
If the threshold names change in the new version, it is guaranteed that the values of the old thresholds will be migrated to the new thresholds on update, unless the old logic is removed.
Example.
In version v12.34 there was a Threshold
threshold, upon crossing which
the countermeasure was turned on or off, it was set to 100. In version v12.35,
the countermeasure is enabled by the Threshold.On
threshold, and disabled by
Threshold.Off
. When updating, the Threshold
threshold will be removed, instead
Threshold.Off
and Threshold.On
will be created with the same values of 100.
BPF Programs
Binary code in object files works via the application binary interface (ABI). ABI change may prevent existing object files from loading or may lead to program malfunction.
ABI is only changed on major version releases. ABI change is announced in the changelog.
Source code in C language uses API in mitigator_bpf.h
.
API change may break compilation of existing source code,
although already compiled object code will continue to load and function.
API changes affecting existing programs are only released with major versions.
Example. Version v21.04 introduced IPv6 support for BPF, some data types were changed. ABI version was bumped, so previously compiled programs stopped loading. API also changed, so existing code required fixes. The changes had been announced in the changelog.