Commit Graph
563 Commits
Author SHA1 Message Date
Tobias WaldekranzandJoachim Wiberg 3ae4e1d9ca confd: Use printf attribute on relevant helpers
This let's the compiler catch format-specifier-to-argument mismatches.
2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg 31d5dbda8c confd: Split out libyang extensions to separate file 2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg a79c6ec06c confd: Remove temporary interface configuration
This will be replaced by the "net do" implementation
2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg 03e44dd5b1 confd: Dynamically generate factory-config
This allows you to define a single "logical" config that can be
tailored to the specific system based on the available interfaces,
base MAC address etc.
2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg 80d9312e36 confd: Infer type when configuring physical interfaces 2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg ed41b621d9 confd: Fix -Wformat-security warning 2023-05-12 14:24:41 +02:00
Tobias WaldekranzandJoachim Wiberg f40841e5e7 confd: Consistently use srx_require_modules
This allows confd to start without errors when modules are already
loaded.
2023-05-12 14:24:41 +02:00
Richard AlpeandJoachim Wiberg def761b067 src/confd: add basic user authentication support
This patch introduces basic user authentication support via sysrepo.

Namely it adds:
* The ability to create or delete a UNIX user.
* The ability to set or delete a UNIX user password.

The password needs to be hashed and in a UNIX shadow format, such as
"$ALG$SALT$HASH". We want to avoid the handling of clear text
passwords as much as possible. In the meanwhile, passwords
can be generated in the infix shell using mkpasswd.

CLI Examples:

Add a user:
configure> set system authentication user foo

Delete a user:
configure> delete system authentication user foo

Set a user password:
configure> set system authentication user foo password ...

Signed-off-by: Richard Alpe <richard@bit42.se>
2023-05-10 09:50:53 +02:00
Richard AlpeandJoachim Wiberg 53ad138854 sys/confd: expose systemv functions in new header
Expose systemv() and systemv_silent() to confd code that includes
core.h or systemv.h explicitly.

Signed-off-by: Richard Alpe <richard@bit42.se>
2023-05-10 09:50:53 +02:00
Joachim Wiberg e7e22c4a13 package/finit: bump for fixes to 'initctl enable' regression
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-05-05 06:04:45 +02:00
Joachim Wiberg 28f8f36cca Enable runparts support at bootstrap for hybrid systems
This commit enables support for running custom startup scripts at boot,
allowing a mix of a NETCONF-based system and Classic /etc.  For example,
use NETCONF to set up network interfaces, users, etc. and runparts for
enabling and configuring the device as an OSPF router.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-05-05 06:04:45 +02:00
Henrik NordstromandJoachim Wiberg 7db1581b21 linux aarch64: Enable CPU_THERMAL 2023-05-02 10:52:43 +02:00
Joachim Wiberg f19d1fc06f package/skeleton-init-finit: take "new" runlevel 0 into account
Some critical services must never be stopped, and with the unfortunate
separation of runlevel S and 0 in Finit recently, all affected service
definitions must be updated.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-05-02 00:00:04 +02:00
Joachim Wiberg 941a2d85aa src/confd: system() replacement without /bin/sh intermediary
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-30 19:49:27 +02:00
Joachim Wiberg 60fa170bee board/common: for consistency, preserve x86_64 even in filenames
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-29 12:47:30 +02:00
Joachim Wiberg d69109305c .github: store symlinks as files
For each build there is an infix-$ARCH-$VARIANT.img -> rootfs.squash
that we want to be a real file when extracting it.  This to ease the
integration with testing frameworks like Qeneth.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-29 12:18:38 +02:00
Joachim Wiberg da014804a6 patches/lldpd: allow group wheel to use lldpctl
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-28 20:40:20 +02:00
Joachim Wiberg 6d96b218ca board/classic: generate interfaces.d, set hostname from qemu_fw_cfg
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-28 19:43:06 +02:00
Joachim Wiberg 806a0293a5 board/common: allow /bin/bash as login shell (BusyBox symlink)
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-28 19:00:51 +02:00
Joachim Wiberg 5e15d85ff9 board/common: artifact naming overhaul
With the introduction of the -classic defconfigs we need to also make
sure to name the resulting artifacts accordingly:

 - infix-$ARCH.{gns3a,img,pkg}
 - infix-$ARCH-classic.{gns3a,img,pkg}

For release builds the version (-23.02-$REV) will be appended before
the file suffix, e.g., infix-x86-64-classic-23.02-3.img

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-28 18:18:16 +02:00
Joachim Wiberg 42dbc1feee configs: follow-up to 5d7e6bd, path to grub-embed.cfg has changed
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-28 11:47:56 +02:00
Joachim WibergandTobias Waldekranz daa67f94c1 board/netconf: add missing (empty) rootfs overlay
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz ff7faada00 .github: fix .ccache caching
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz f515d8e737 .github: update to bild all platform::variant defconfigs
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 5b02ab80e9 configs: add aarch64_classic_defconfig, same as x86_64_classic
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 2272b56618 board/common: let Bash update its PS1 hostname for each new line
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 05d49f6cfc src/confd: set NETCONF specific motd as default
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 8158d3bffb Simplify and refine NETCONF and Classic build variants
- board/common: drop everything not needed by NETCONF mode
 - board/classic: most board/common helpers relocated here
 - Simplify Finit scripts for critical services
 - Source variant from /etc/os-release to select ramdisk /etc

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 5d7e6bd693 Rename amd64 -> x86_64 and native -> classic
A long standing internal debate comes to its logical conclusion.  Arch
naming should follow GCC.  The "native /etc" has also found a better
name: classic!

README and GitHub action has been updated accordingly.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz de85e4e4e0 configs: netconf build requires 512 MiB RAM and we want 10 ifaces
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 3caaada051 board/common: add menuconfig support for GNS3 RAM and num. of ifaces
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz ce10e4b734 board/common: add missing $DISK_IMAGE_SIZE to mkdisk.sh
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 291bfaeff0 board/common: fix system timezone in "show system-information" command
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 9462499d51 configs: split defconfigs in default (NETCONF) and simplificed (native)
- Drop unused packages in NETCONF (default) mode
   In the default build we will use the net tool instead of iupdown-ng,
   p-net & Profeth will move to customer-specifc builds with another
   licensing model.
 - Split out NETCONF specific parts from board/common to board/netconf

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 3cea71a11f configs/amd64_minimal_defconfig: simplified basic Linux build
This build is intended as a base reference and for use as a very simple
end device.  The default starts DHCP and IPv4LL (ZeroConf) on eth0, but
can be configured by editing /etc/network/interfaces.d/*

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 65afece50a package/confd: update factory-config, zeroconf for IPv4/IPv6 on eth0
Still ways to go here, eth0 should be in a bridge with a vlan1 interface
on top, which in turn should have this config.  But let's start here, it
works! :-)

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 0fffb1296f package/confd: allow avahi (mDNS/SD) and sshd to be enabled by default
The idea is to, as a plain Infix default, start up devices with DHCP and
IPv4LL/ZeroConf and IPv6 link-local address.  Using mDNS the user can
then and push a NETCONF configuration over SSH.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 7dde00c6b0 package/confd: rename factory.cfg -> factory-config.cfg
Consistent naming to match startup-config.cfg and running-config.cfg

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 461599e502 src/confd: hackish w/a to get 'initctl reload' for ietf-interfaces
This is very ugly, what we really want is that the commit_done_hook()
runs when *all* DONE events have been processed in all models.  The
side-effect of this hack is that the callback is run twice, both for
ietf-systm and ietf-interfaces if both are modified.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 8b9504ffa5 src/confd: augment ietf-ip with an 'autoconf' setting also for IPv4
This patch adds a first Infix model to augment ietf-ip with a node,
similar to the IPv6 'autoconf' node, also for IPv4.  For IPv6 the
autoconf feature comes built-in, for IPv4 it is defined in RFC3927.

The setting behaves the same as for IPv6, but in the case of IPv4 we
enable avahi-autoipd per interface to acquire the 169.254/16 address.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz ae62c20d40 src/confd: minor, spellcheck
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 85f67f6a0f configs: enable avahi-autoipd for use as ZeroConf agent
With the new templating support in Finit, and this patch, we can now
very easily enable a ZeroConf service on, e.g., eth0:

    $ initctl enable zeroconf@eth0

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 78c12d66fe patches/klish: allow all users of group 'wheel' to connect to klishd
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 33d1b9cfc5 board/common: drop clicon + www-data users, add default admin user
The root user is by default not allowed to log in over SSH, so we add an
admin user with limited root privileges for this purpose.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz cb9d981dfc board/common: replace sshd subsystem cli with klish
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz e789738a64 package/finit: bump for S vs 0 runlevel fixes and templating support
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Joachim WibergandTobias Waldekranz 3cd3d04bae package/skeleton-init-finit: fix make skeleton-init-finit-rebuild
When calling 'make skeleton-init-finit-rebuild' to (re)install any new
or modified services, we cannot remove everything installed already.
That breaks what other packages may have installed already and is not
the Buildroot way.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-27 09:59:35 +02:00
Tobias WaldekranzandJoachim Wiberg dcf3c5fe97 confd: Infer the interface type for common patterns
When a new interface is create, but the type is not specified, try to
infer the type from the interface name.
2023-04-21 19:03:15 +02:00
Tobias WaldekranzandJoachim Wiberg 54200eaba9 confd: Add wrapper for sr_set_item
This allows the xpath to be built using format string.
2023-04-21 19:03:15 +02:00
Tobias WaldekranzandJoachim Wiberg 2259e108e4 confd: Rename srx_set_item -> lydx_new_path
Since this function wraps lyd_new_path.

This allows us to write a wrapper for sr_set_item, using the expected
name.
2023-04-21 19:03:15 +02:00