Commit Graph
879 Commits
Author SHA1 Message Date
Joachim WibergandTobias Waldekranz bc048f6313 Drop Hybrid Mode from default builds, update documentation
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-22 10:38:02 +02:00
Ahmed KaricandJoachim Wiberg 2c4b67cbbc test/case: add basic routing test 2023-08-18 14:26:58 +02:00
Joachim WibergandTobias Waldekranz 920a4481b1 .github: simplify contribution guidelines slightly
Also, the file MAINTAINERS has been removed previously.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-17 08:28:33 +02:00
Joachim WibergandTobias Waldekranz 64a6df7b71 .github: add support resource/contact for when reporting issues
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-17 08:28:33 +02:00
Joachim WibergandTobias Waldekranz cad6530949 Drop unused script, PROFINET moved to separate repo
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-17 08:28:33 +02:00
Joachim WibergandTobias Waldekranz b1720f7f77 Relocate from top level
No need to clutter up the root directory of the project.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-17 08:28:33 +02:00
Joachim WibergandTobias Waldekranz 58525325b9 Slight redisposition of content
The following changes have been made to condense and simplify the
leading text in the README.  Tested with Grip to verify that the first
paragraph flows nicely to the left to the fine new logo.  This allows
us to use the space more efficiently and the reader does not have to
scroll so long before reaching relevant content.

 - Right-align logo, and shrink it a bit, to fit text to the left
 - Move topic links to a foldout at the top
 - Move boring licensing stuff to separate docment

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-17 08:28:33 +02:00
Tobias Waldekranz 8b8090bd31 doc: Add new Logo (again)
Go for something simple - Tux trapped in an RJ45 jack.

Also, remove the old versions that we don't use any more. They're in
the log if we ever need them.
2023-08-16 13:52:04 +02:00
Joachim WibergandTobias Waldekranz 1dc1a02f0c doc: add syntax highlighting for dot segments
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-16 13:52:04 +02:00
Joachim WibergandTobias Waldekranz 361ba05d8e doc: drop unused documents
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-16 13:52:04 +02:00
Joachim WibergandTobias Waldekranz b480cd76f1 Fix #64: initial Developer's Guide
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-16 13:52:04 +02:00
Joachim WibergandTobias Waldekranz 93db790de6 Untabify
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-16 13:52:04 +02:00
Joachim WibergandTobias Waldekranz d2ccb32871 New logo and split of README in multiple pages
This is a cleanup and reorganization of the Infix documentation.
Starting with a simplification of the top-level README, splitting
it up into several pages.

Also, fixes #100 by updating the documentation on Qemu.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-16 13:52:04 +02:00
Ahmed KaricandTobias Waldekranz 7432ff10aa test/case: add bridge forwarding tests (single-DUT, dual-DUT, VLAN separation) 2023-08-16 13:51:00 +02:00
Ahmed KaricandTobias Waldekranz fc7d212696 test/infamy: add edge type to logical topology (mgmt port selection) 2023-08-16 13:51:00 +02:00
Richard AlpeandJoachim Wiberg 769338515a klish-plugin-infix: fix indentation in infix.xml
Prior to this patch the indentation was a mix of tabs and spaces.
Now use 2 spaces as indentation.

Signed-off-by: Richard Alpe <richard@bit42.se>
2023-08-14 16:49:30 +02:00
Joachim WibergandTobias Waldekranz c94733f6bd package/klish: add missing faux dependency
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-14 13:00:09 +02:00
Joachim WibergandTobias Waldekranz 83e5af33ff Fix #86: rename klinfix -> klish-plugin-infix
Also renames all klix_SYM@klinfix to SYM@infix, this is fine since we're
always calling these symbols with @infix.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-14 13:00:09 +02:00
Tobias WaldekranzandJoachim Wiberg f660f6e9c7 qemu: Homogenize network setup
- Always respect the requested model to emulate. Before this change, a
  device configured to run in TAP mode would ignore a user's requested
  model and always emulate a e1000.

  This worked on x86_64 where that driver is part of the kernel, but
  that is not true for aarch64.

- Always supply a mactab. It was very confusing that the interface
  names would change, in Infix, depending on the selected networking
  mode.

- Remove old decoy variables that were assigned but never used
  anywhere.

- Separately setup the host and target side of a nic (i.e. use a
  -netdev/-device pair instead of the -nic shortcut). This lets us
  share the host side setup across all modes.
2023-08-09 19:45:32 +02:00
Tobias WaldekranzandJoachim Wiberg 9e5904936a statd: Add missing dependencies to Config.in 2023-08-09 19:45:32 +02:00
Joachim WibergandTobias Waldekranz 15795c4b41 confd: skip lldpd and avahi hostname reload during bootstrap
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 17ff8677ee board/common: replace default editor, nano -> mg
This reverts an earlier change where nano was made the default editor in
a misguided attemt by yours truly to accomodate beginner users.

With the recent improvements of the CLI and the fact that the NETCONF
support has matured greatly, the need for a user-friendly editor have
diminished drastically.  Editing system files is now limited to devs
and the core team prefers Mg over nano and vi.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 9766bbbed5 doc/cli: update all the topics to match the refreshed CLI functions
Also, add a new `quick.md` that pops up when the user types `help`.
Very quick intro to get started.  Useful when we add a factory-default
motd: "Welcome to the CLI, type 'help' for a quick overview."

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz bfce877525 confd: ensure change_hostname() returns a sysrepo error code
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz d5298d10e8 klinfix: misc. fixes
- Sync sysrepo conf settings, lots of new settings added, one removed
 - Check if help topic exists
 - password encrypt arguments should be optional, add SWITCH
 - show datetime argument should also be optional, add SWITCH
 - Trial, output factory- and startup-config colorized
 - Switch to srp_prompt v2 for configure context

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 0c6d82cf2f package/klish-plugin-sysrepo: bump to latest + new kkit srp_prompt
The upstream help system has improved greatly.  We can now rely more on
it for generating the man-page like help texts for leaf nodes.  There
is also a new srp_prompt symbol that overrides the default klish one,
srp_prompt adds a '%x' format specifier for an inline path instead of
the default [edit foo bar] JunOS style two-liner.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 8d79235436 package/klish: bump to kkit-next, based on latest upstream
Lots of changes upstream for parsing help texts, running as different
user, etc.  Was getting too difficult to backport to tags/3.0.0, so this
resets the clock on top of (almost) the latest.  Experienced issues with
the admin user in configure mode on the latest commits (e4f65d5).

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz fdb2a5a6dc package/faux: bump to latest upstream git hash
This is needed for the bleeding edge klish + klish-plugin-sysrepo, which
the next couple of commits will add.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz e57616fe3a confd: improve DHCPv4 YANG model descriptions
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 987ec779d3 klinfix: add new commands uptime, version, and netcalc
Preparing for a "show system-information" as well, which still needs to
be discussed to determine contents.  Some data also still missing, e.g.,
article/serial/product number db.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 883d59709e klinfix: add new commands ping and tcpdump, w/ interface completion
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 10684d200f board/common: use tempfile for sysctl manip and remove when done
Mainly just cleaning up /tmp from stale files.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 032881fbf8 board/netconf: chmod 444 (read-only) generated factory-config
Prevent tampering and unintentional overwrite by users.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz b95a82207d package/klish: switch to kkit branch @kernelkit, new features
This commit switches the klish package to use the kkit branch instead of
keeping a lot of patches from the v3.0.0 release.

Most of the changes made are for dragging tinyrl into the 21st century.
It now supports most of the basic features one have come to expect from
a readline replacement: line navigation, deleting words, erasing entire
line, kill and yank of lines/words and last argument on previous line.

The history has also gotten a bit of a stern talking to.  It no longer
deletes lines matching existing old ones from the history, instead it
just checks if the previous command is repeated.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 07b057c455 board/common: import bash completion for initctl
From upstream Finit@b682a5e

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 1a2d799f82 board: drop disabling of built-in help for bash on NETCONF builds
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz d4b23eac75 klish: klish-plugin-sysrepo: klinfix: bump for new srp_prompt@sysrepo
This commit changes the JunOS look of the CLI to something more akin to
a standard shell.  To achieve this a %w format specifier to display the
path components is added to both klish and klish-plugin-sysrepo.

Before:
	admin@infix-12-34-56:exec> configure
	[edit]
	admin@infix-12-34-56:configure> ediit interfaces interface eth0
	[edit interfaces interface eth0]
	admin@infix-12-34-56:configure> leave
	admin@infix-12-34-56:exec>

After:
	admin@infix-12-34-56:/> configure
	admin@infix-12-34-56:/config/> edit interfaces interface eth0
	admin@infix-12-34-56:/config/interfaces/interface/eth0/> leave
	admin@infix-12-34-56:/> leave

However, due to unforseen problems with the naming of VIEWs in klish,
the admin-exec level "path" is hard-coded to "/" for now.

Future imporovement: fold in calling prompt@klish from srp_prompt, and
figure out why the "main" VIEW cannot be changed to "exec" without klish
just bailing out starting up.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 63779cfe37 configs: change default TERM from linux to xterm
Turns out one of the reasons some keys did not work as they should in
certain commnands, most notably the Home/End in 'less', was due to the
default TERM variable being set to 'linux'.  Changing to 'xterm' fixes
this issue, works with both console and ssh login, and from testing do
not seem to have any adverse effects on existing functionality.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 63aa130e9c klinfix: restore Ctrl-C to abort current line, use Ctrl-D instead
While spending the past couple of weeks actually trying to use the CLI,
I realized that it was very confusing to have a different behavior for
Ctrl-C than I was used to from regular shells (including the old clish
from $OLDJOB).

This change drops the Ctrl-C binding, restoring break/abort behavior,
and lets Ctrl-D be abort/exit.  Pressing Ctrl-D in a sub-context in
configure calls exit, when in the top-most configure context we now
do an abort and return to admin-exec.

To apply the changes the user still has to type 'commit' or 'leave',
or tap Ctrl-Z as in the Cisco CLI.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz d913ce00e6 doc/cli: relocate and extend CLI docs with intro and keybindings
This is not just for online viewing, these markdown documents are also
made available in the CLI itself from admin-exec as:

    help [introduction | keybindings | tutorial]

With this commit we also add lowdown and the real less application to
be the Infix help system.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 52301db8bd package/lowdown: new package, markdown pretty-printer for terminals
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Tobias Waldekranz 0aae72745f package/klish-plugin-sysrepo: bump and switch to KernelKit mirror
This adds support for the srp_help_text() symbol.  It allows us to
display the full description for a leaf in a YANG model.  This has
been added to the 'help [foo]' configure context command.

A separate admin-exec level 'help' command will be added in a later
commit.  It will only be an intro to the CLI, keybindings, etc.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 3a4097c741 package: switch faux and klish to KernelKit mirrors on GitHub
No need to go fishing every time we build when we have everything we
need in the pond next door.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 142f33e89e patches/klish: restore some common keybindings for line manipulation
This restores some of the original keybindings for line manipulation
that was part of the original CLISH.  They had been disabled upstream
during the UTF8 conversion and never got reimplemented.

From branch kkit on https://github.com/kernelkit/klish, the kkit branch
is based off of the 3.0.0 release.  The same patches are also available
on kkit-next, which is based on the latest upstream master.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 30a28fe874 klinfix: modify show datetime, add optional [iso] flag
By default, output human-friendly RFC2822 format rather than NETCONF:ish
ISO-8601 format.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 697a907350 klinfix: new commands show log [FILE] and follow [FILE]
With completion support.  The log command has an optional last arg,
after FILE, tail NUM, which runs tail -n NUM FILE instead of cat.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 24d9a6dfc6 klinfix: add new commands password [generate | encrypt]
An excellent example of how to define commands with optional subcommands
and optional parameters:

  password encrypt [type <md5 | sha256 | sha512>] [salt STRING] [PASSWORD]

The tricks here are two:

  1. mode="switch" in the top-level password command
  2. min="0" in the encrypt subcommands

The first turns the COMMAND element into a SWITCH element (with command
matching), and the second makes a COMMAND optional.  If an optional
command is input by the user, then the enclosed PARAM is mandatory.

Please note, due to limitations in the mkpasswd¹ utility, spaces are not
supported in PASSWORD, i.e., when read from CLI prompt.  However, spaces
are allowed when using the interactive prompt, i.e., when omitting the
PASSWORD from the CLI prompt.

¹) mkpasswd does not look for any leading ' or " in the password arg.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz a5ad52e5eb package/klish: install default type definitions for klish plugin
The documentation for klish mentions the file ptypes.xml, which defines
the ptype /STRING.  So let's use that instead of defining our own types.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz 682384875c klinfix: add new commands show bridge [fdb | mdb | vlans]
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00
Joachim WibergandTobias Waldekranz cd0d12c8c0 klinfix: add new commands show [ip | interfaces] [brief | detailed]
Helper commands for quickly diagnosnig the networking subsystem after
making config changes.  Should over time be replaced with operational
status from sysrepo.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-08-08 16:35:18 +02:00