Commit Graph
564 Commits
Author SHA1 Message Date
Joachim Wiberg db136bce32 Fix container upgrade regression
In 0edc2d5 and afbe5ca, just prior to v24.06.0-rc1, support for deleting
containers in the background was added.  However, this also broke support
for upgrading containers.

In afbe5ca the start script for containers was renamed from NAME.sh to
S01-NAME.sh, but the container wrapper script's upgrade command was not
updated.  Neither was the cleanup and post-hook callbacks in confd!  So
when a container had been added to the system, the cleanup callback just
simply deleted the script, preventing it from being recreated at ugprade

This patch fixes the container identification code and also refactors
the execd code to ensure that kill scripts (for deleting in background)
and start scripts are run in the proper order *and* ensuring that execd
also does not accidentally remove the container start script.

Some cosmetic changes to the output at upgrade have also been added.

Fixes #623

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-13 16:31:39 +02:00
Jon-Olov VatnandMattias Walström 54ad3f82c5 Adding deviations for unsupported OSPF RPCs and Notifications 2024-09-13 14:46:34 +02:00
Joachim Wiberg cfd95dc300 confd: use the system base mac as mac address on bridges
To prevent the kernel from setting a random mac address on new bridges,
before we have added any bridge ports, we create bridges using the:

  1. Custom mac address from the configuration (phys-address)
  2. System base mac from /run/system.json
  3. None, if there is no base mac address in system.json, e.g. r2s

Fixes #357

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-10 17:58:26 +02:00
Richard AlpeandJoachim Wiberg 9a2df4b94b confd: initctl touch mcd after querier changes
Prior to this commit, querier multicast changes such as query-interval
where not applied to an existing multicast interface. The new initctl
touch makes finit send a sighup to mcd which causes it to re-load its
configuration files.

Signed-off-by: Richard Alpe <richard@bit42.se>
2024-09-10 16:14:23 +02:00
Mattias WalströmandJoachim Wiberg f5884098fb Bump rousette to latest GIT hash
Since we are using an old GCC we need to add a new requirement for rousette 'date'
this is included in GCC 14+.
2024-09-09 17:02:51 +02:00
Tobias Waldekranz 8d13effbe5 confd: Accept a custom timeout when loading startup/failure
This will enable us to align this timeout with the other front-ends in
the system.
2024-09-05 23:41:19 +02:00
Joachim Wiberg e7c9f59582 confd: unchecked return value from remove()
Not much we can do, other than log and report.

Found by Coverity Scan

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Joachim Wiberg 480172612a confd: fix possible NULL pointer dereference
The srx_get_str() function may return NULL, which goes unchecked in
both fxlate() and sxlate(), as well as the calls to free().

Found by Coverity Scan

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Joachim Wiberg b1d69b69a7 confd: minor, reduce complexity
- Silence linter, add braces
 - Unindent code block to reduce complexity

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Joachim Wiberg 3c3c3c95f2 confd: reduce scope of local variables
Found by clang-tidy

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Joachim Wiberg ca310589ad confd: fix variable overloading, global xpath unused
Found by clang-tidy

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Joachim Wiberg 5baec171c2 confd: constify, found by clang-tidy
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-02 11:18:27 +02:00
Mattias Walström 3c045460ef Add implementation to control test mode functions using an action
This intoduce a new sysrepo plugin to handle a new YANG
model 'infix-test'. Today only contains the actions.

This is required to run tests on infix using infamy.

This is a part of #561

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2024-08-30 17:40:02 +02:00
Joachim Wiberg 8a09b3e22c confd: fix audit logs using proper facility
The LOG_SECURITY facility was set wrong (1 << 13) instead of (13 << 3), see
https://github.com/kernelkit/sysklogd/blob/0fc6656/src/syslog.h#L120 for
details.  This caused all audit log messages to be logged in LOG_USER.

Also, rename LOG_SECURITY -> LOG_AUDIT and log macro SECURITY() -> AUDIT()
to match RFC5424 terminology.

Similar fix to sysrepo, LOG_AUDIT facility instead of daemon + WARNING.
Additionally, drop the leading [severity] prefix to sysrepo logs.  Only
needed when logging to stdout.

Follow-up to issue #521

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-30 15:29:11 +02:00
Joachim Wiberg 7d95da7657 confd,statd: fix invalid option to openlog()
LOG_DAEMON is a facility not an option.  Replace with NDELAY option and
set facility properly in call to openlog() instead.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-30 15:29:11 +02:00
Joachim Wiberg 773ee7f479 confd: drop local aliases for "audit" and "cron2"
The backported patches to sysklogd now support the RFC facilities
natively, so we can focus on local facilities (and 'all').

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-30 15:29:11 +02:00
Mattias Walström 764a64bee8 yang: Improve must expressions for multicast-filters
Add a must expression to limit invalid configurations.
Not belonging to VLAN when added to a multicast-filter in
that VLAN. Make sure multicast snooping is enabled when
using multicast filters.

This fixes #587

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2024-08-29 16:29:44 +02:00
Joachim Wiberg 6c7758b04d confd: disable ttyd and netbrowse in failure-config
Open interfaces are console, SSH, NETCONF, and RESTCONF only.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-29 11:08:48 +02:00
Joachim Wiberg 44419607e1 confd: fix obvious copy-paste bug in infix-services for RESTCONF
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-29 11:08:48 +02:00
Joachim Wiberg 430414ab13 confd: ensure users in admin group can access all datastores
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-28 19:14:47 +02:00
Joachim Wiberg 88d81f36c5 confd: fix missing yang:operation when deleting syslog actions
The srx_get_changes() API, introduced in 18b5922, does not provide the
user with a delete yang:operation when the entire YANG tree is deleted.

Refactor syslog actions to use the srx_get_diff() API instead.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-28 19:14:47 +02:00
Joachim Wiberg 1342794671 confd: handle case of missing selectors for syslog actions
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-28 19:14:47 +02:00
Joachim Wiberg 4c81ac978e confd: adjust Frr logging for staticd and ospfd
Ensure Frr logs to the local2 syslog facility to allow sorting all
Frr (staticd, ospfd) logs into a dedicated /var/log/routing log file.

We activate OSPF debugging, but keep log level at 'informational' for
the time being.  The YANG model needs some sort of "knob" to toggle
debug messages when troubleshooting OSPF.

Fixes #541

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-28 19:14:47 +02:00
Joachim Wiberg dac2182069 confd: initial audit trail support
This commit introduces a new SECURITY() log macro that logs to facility
'audit' (sometimes called 'security') with severity set to 'alert'.  It
is then used to instrument the single most important things to log; all
changes to users and their privileges.

We also add logging to sysrepo, which knows the username for changes to
running-config, copies to startup-config, and RPCs.

Fixes #521

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 8d2bdd1f1d confd: rename syslog format -> log-format, add must expression
- For consistency and clarity, rename format -> log-format
 - Add must expression to ban 'bsd' format from file logging

Note: technically, sysklogd silently reverts back to rfc3164 for file
      logging, but it's better to be clear with the user with what is
      possible to configure and is going to be used.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 1f892c28dc confd: add support for local syslog facilities
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg fe389d07fd confd: document ietf-syslog augments and deviations properly
As a bare minimum, all augments and deviations made to standard models
should have a description denoting *why* they exist.

In the case of ietf-syslog the base model is still a draft and carries
some odd defaults we want to disable, or replace with better ones.  The
augments are global log rotation and and log format.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 90f818437a confd: refactor ietf-syslog callbacks for log-file and remote
This refactor changes the callback subscription for log-file and remote
log actions to ensure they are called for *all* changes.  Even changes
to deeply nested sub-trees like file-rotation when no other changes are
made.  The previous attempt failed to address that.

The refactored callbacks replace sr_get_changes() with srx_get_changes()
for better control over what they iterate over.  The callbacks always
regenerate the syslogd *.conf file snippets for each log action, so
there is no need for the overly granular sr_get_changes(), ever.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 96ee348eab confd: add support for log format selection
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg df2998777b confd: simplify /etc/syslog.d/*.conf file naming
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 203896dc49 confd: add support for syslog server configuration
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 1091b0ad82 confd: add support for acting as a remote syslog server
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 45cc5f4897 confd: add support for syslog log-file rotation
This augments ietf-syslog.yang with global file rotation settings which
are used when per-file rotation is not configured.  The defaults chosen
match previously decided defaults for Infix: 1M:10, i.e., rotate every
file at 1 MiB and keep up to 10 gzipped aged-out archives.

The standard model includes a default value of 1 for the number of files
kept, which is removed (deviated).  There is also a unit specified for
max-file-size, 'megabytes', replaced with 'kilobytes' in this change.
On smaller embedded systems, smaller sizes may be required.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg 9ada734b00 confd: refactor ietf-syslog
Also, add [] guards to remote IPv6 address.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg d44678ef37 confd: add support for logging to remote syslog servers
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Joachim Wiberg bf83003d23 confd: initial support for ietf-syslog.yang
Add YANG models and an initial plugin for file logging.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-26 20:54:49 +02:00
Ahmed KaricandMattias Walström a44f83c127 confd: add missing 10-infix-services.json to failure and test config + fix allignment 2024-08-26 13:59:49 +02:00
Ahmed KaricandMattias Walström 21274aa379 confd: fix output directory for gen-version in gen_failure_cfg
Fixes #562
2024-08-23 11:15:12 +02:00
Ahmed KaricandMattias Walström efafa944d6 confd: minor cleanup
- removed unused parameters in functions factory() and failure()
- renamed the functions
2024-08-23 11:15:12 +02:00
Ahmed KaricandMattias Walström 837fb0ee7f confd: load test-config when in test-mode 2024-08-23 11:15:12 +02:00
Ahmed KaricandMattias Walström 4a325af4e4 confd: generate test-config.cfg
Currently, it's not possible to run infix tests from an external
project (based on infix) due to an incompatibility between the
configuration used in the tests (the default configuration
within the image generated by the external project) and the infix
base configuration expected by the test cases. Therefore, a simple
configuration specifically for testing purposes needs to be generated
within an image. This test-config should always be generated
but only loaded when the device is in test mode.

Part of issue #568
2024-08-23 11:15:12 +02:00
Joachim Wiberg fa1cece60f Follow-up to 2194f7be: migrate /libexec to /usr/libexec
For consistency with the / + /usr merge, see 2194f7be, let's move the
last remnants in /: /libexec/infix to /usr/libexec/infix

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg 05526dd893 confd: avoid setting lower-layer-if to vlanN
Inference for an interface named vlanN can only guess C-VLAN and VID,
the base interface must be left to the user to fill in.  This is also
mandatory in the model.

Fixes #531

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg 76d3627ccd confd: fix vid sanity check, 4095 is reserved
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg f6b3dfabf9 confd: minor whitespace and readability changes
Reduce scope of pointer, reduce repetition with a define, and add
whitespace for readability.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg c3a4a93cc8 confd: disable password aging when unlocking password login for user
We cannot rely on time being correct.  Password expiration need to be handled
by external mechanism, e.g., RADIUS.

Fixes #534

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg a275282307 confd: harmonize empty and missing password hash behavior
Removing a user's password hash should be the same an empty password
hash.  In the latter case we already allow login with SSH keys, this
change harmonizes the behavior by also allowing login with SSH keys
when the users's password hash is removed.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg 39e4935369 confd: refactor user hash validation
Consolidate empty password and $factory$ hash extraction to a common
function called before set_pasword().  The purpose is to ensure all
error handling and log messages are in the same place, except for
missing factory-password-hash, which is now treated as a PANIC and
logged to /dev/console.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Joachim Wiberg 9bbc973d9d confd: silence user group member check
Fixes group record leakage to syslog.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-08 13:35:27 +02:00
Mattias Walström 2b5ed0615f Bump libyang, libnetconf2, sysrepo and netopeer2
For netopeer2 we need to patch away local-users, since if it is enabled
netopeer2 requires all users that should be allowed to use netconf to
also be configured in ietf-netconf-server.

Also add some upstream patches.
2024-07-03 09:08:56 +02:00