mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 12:33:02 +02:00
Deployed 15d69472 to dev with MkDocs 1.6.1 and mike 2.1.4
This commit is contained in:
+36
-7
@@ -2751,6 +2751,8 @@ them:</p>
|
||||
XPath: <code>/ietf-system:system/authentication/user/password</code></li>
|
||||
<li><strong>Default SSH and NETCONF hostkey:</strong> <code>genkey</code> (regenerated at factory reset)
|
||||
XPath: <code>/ietf-keystore:keystore/asymmetric-keys/asymmetric-key[name='genkey']</code></li>
|
||||
<li><strong>Default HTTPS certificate:</strong> <code>gencert</code> (self-signed, regenerated at factory reset)
|
||||
XPath: <code>/ietf-keystore:keystore/asymmetric-keys/asymmetric-key[name='gencert']</code></li>
|
||||
<li><strong>Hostname format specifiers:</strong><br>
|
||||
XPath: <code>/ietf-system:system/hostname</code></li>
|
||||
<li><code>%i</code>: OS ID, from <code>/etc/os-release</code>, from Menuconfig branding</li>
|
||||
@@ -2890,8 +2892,11 @@ text file without line breaks (<code>-w0</code>):</p>
|
||||
cause them to be always automatically regenerated after each factory reset.
|
||||
Keeping the <code>factory-config</code> snippet like this means we can use the same
|
||||
file on multiple devices, without risking them sharing the same host
|
||||
keys. Sometimes you may want the same host keys, but that is the easy
|
||||
use-case and not documented here.</p>
|
||||
keys or TLS certificates. Sometimes you may want the same keys, but
|
||||
that is the easy use-case and not documented here.</p>
|
||||
<p>The <code>genkey</code> entry is the default SSH host key, and <code>gencert</code> is the
|
||||
default self-signed HTTPS certificate used by the web server (nginx).
|
||||
Both are regenerated on factory reset when their keys are empty.</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="w"> </span><span class="nt">"ietf-keystore:keystore"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">"asymmetric-keys"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="nt">"asymmetric-key"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
@@ -2902,10 +2907,22 @@ use-case and not documented here.</p>
|
||||
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="nt">"private-key-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ietf-crypto-types:rsa-private-key-format"</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="nt">"cleartext-private-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="w"> </span><span class="nt">"certificates"</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span>
|
||||
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="w"> </span><span class="p">},</span>
|
||||
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="w"> </span><span class="p">},</span>
|
||||
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gencert"</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="w"> </span><span class="nt">"public-key-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"infix-crypto-types:x509-public-key-format"</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a><span class="w"> </span><span class="nt">"public-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="w"> </span><span class="nt">"private-key-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"infix-crypto-types:rsa-private-key-format"</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a><span class="w"> </span><span class="nt">"cleartext-private-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
||||
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="w"> </span><span class="nt">"certificates"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a><span class="w"> </span><span class="nt">"certificate"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"self-signed"</span><span class="p">,</span><span class="w"> </span><span class="nt">"cert-data"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-21" name="__codelineno-4-21" href="#__codelineno-4-21"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-4-22" name="__codelineno-4-22" href="#__codelineno-4-22"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-23" name="__codelineno-4-23" href="#__codelineno-4-23"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-24" name="__codelineno-4-24" href="#__codelineno-4-24"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-4-25" name="__codelineno-4-25" href="#__codelineno-4-25"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-26" name="__codelineno-4-26" href="#__codelineno-4-26"></a><span class="w"> </span><span class="p">},</span>
|
||||
</code></pre></div>
|
||||
<h4 id="ietf-netconf-server">IETF NETCONF Server<a class="headerlink" href="#ietf-netconf-server" title="Permanent link">¶</a></h4>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="w"> </span><span class="nt">"ietf-netconf-server:netconf-server"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
@@ -2955,8 +2972,20 @@ use-case and not documented here.</p>
|
||||
<a id="__codelineno-6-15" name="__codelineno-6-15" href="#__codelineno-6-15"></a><span class="w"> </span><span class="nt">"port"</span><span class="p">:</span><span class="w"> </span><span class="mi">22</span>
|
||||
<a id="__codelineno-6-16" name="__codelineno-6-16" href="#__codelineno-6-16"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-6-17" name="__codelineno-6-17" href="#__codelineno-6-17"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-6-18" name="__codelineno-6-18" href="#__codelineno-6-18"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-6-18" name="__codelineno-6-18" href="#__codelineno-6-18"></a><span class="w"> </span><span class="p">},</span>
|
||||
<a id="__codelineno-6-19" name="__codelineno-6-19" href="#__codelineno-6-19"></a><span class="w"> </span><span class="nt">"infix-services:web"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-6-20" name="__codelineno-6-20" href="#__codelineno-6-20"></a><span class="w"> </span><span class="nt">"certificate"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gencert"</span><span class="p">,</span>
|
||||
<a id="__codelineno-6-21" name="__codelineno-6-21" href="#__codelineno-6-21"></a><span class="w"> </span><span class="nt">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<a id="__codelineno-6-22" name="__codelineno-6-22" href="#__codelineno-6-22"></a><span class="w"> </span><span class="nt">"console"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">},</span>
|
||||
<a id="__codelineno-6-23" name="__codelineno-6-23" href="#__codelineno-6-23"></a><span class="w"> </span><span class="nt">"netbrowse"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">},</span>
|
||||
<a id="__codelineno-6-24" name="__codelineno-6-24" href="#__codelineno-6-24"></a><span class="w"> </span><span class="nt">"restconf"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-6-25" name="__codelineno-6-25" href="#__codelineno-6-25"></a><span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p>The <code>certificate</code> leaf references an asymmetric key in the keystore
|
||||
that has an associated certificate. The default <code>gencert</code> entry uses
|
||||
a self-signed certificate. To use a custom (e.g., CA-signed)
|
||||
certificate, create a new keystore entry with
|
||||
<code>x509-public-key-format</code> and point the web <code>certificate</code> leaf to it.</p>
|
||||
<h2 id="integration">Integration<a class="headerlink" href="#integration" title="Permanent link">¶</a></h2>
|
||||
<p>When integrating your software stack with Infix there may be protocols
|
||||
that want to change system settings like hostname and dynamically set
|
||||
|
||||
@@ -2485,15 +2485,14 @@ followed by Enter. Available commands, press <code>?</code> at the prompt:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@host:/config/interface/eth0/> up
|
||||
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>admin@host:/config/>
|
||||
</code></pre></div>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> commands in configure context are automatically generated
|
||||
from the system's YANG models, hence different products likely have a
|
||||
different set of commands. However, both the <code>ietf-interfaces.yang</code>
|
||||
and <code>ietf-ip.yang</code> models, for instance, that provide the networking
|
||||
<p><strong>Note</strong></p>
|
||||
<p>Commands in configure context are automatically generated from the
|
||||
system's YANG models, hence different products likely have a different
|
||||
set of commands. However, both the <code>ietf-interfaces.yang</code> and
|
||||
<code>ietf-ip.yang</code> models, for instance, that provide the networking
|
||||
support are common to all systems.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="set-ip-address-on-an-interface">Set IP Address on an Interface<a class="headerlink" href="#set-ip-address-on-an-interface" title="Permanent link">¶</a></h2>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@host:/config/> edit interface eth0
|
||||
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>admin@host:/config/interface/eth0/>
|
||||
@@ -2535,12 +2534,11 @@ reboots:</p>
|
||||
</code></pre></div>
|
||||
<p>The <code>startup-config</code> can also be inspected with the <code>show</code> command to
|
||||
verify the changes are saved.</p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> all commands need to be spelled out, no short forms are
|
||||
allowed in the CLI. Use the <code>TAB</code> key to make your life easier.</p>
|
||||
<p><strong>Important</strong></p>
|
||||
<p>All commands need to be spelled out, no short forms are allowed in the
|
||||
CLI. Use the <code>TAB</code> key to make your life easier.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="changing-hostname">Changing Hostname<a class="headerlink" href="#changing-hostname" title="Permanent link">¶</a></h2>
|
||||
<p>Settings like hostname are located in the <code>ietf-system.yang</code> model.
|
||||
Here is how it can be set.</p>
|
||||
@@ -2551,35 +2549,33 @@ Here is how it can be set.</p>
|
||||
</code></pre></div>
|
||||
<p>Notice how the hostname in the prompt does not change until the change
|
||||
is committed.</p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> critical services like syslog, mDNS, LLDP, and similar that
|
||||
advertise the hostname, are restarted when the hostname is changed.</p>
|
||||
<p><strong>Note</strong></p>
|
||||
<p>Critical services like syslog, mDNS, LLDP, and similar that advertise
|
||||
the hostname, are restarted when the hostname is changed.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="changing-password">Changing Password<a class="headerlink" href="#changing-password" title="Permanent link">¶</a></h2>
|
||||
<p>User management, including passwords, is also a part of <code>ietf-system</code>.</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@host:/config/> edit system authentication user admin
|
||||
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@host:/config/system/authentication/user/admin/> change password
|
||||
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>New password:
|
||||
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>Retype password:
|
||||
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>New password:
|
||||
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>Retype password:
|
||||
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a>admin@host:/config/system/authentication/user/admin/> leave
|
||||
</code></pre></div>
|
||||
<p>The <code>change password</code> command starts an interactive dialogue that asks
|
||||
for the new password, with a confirmation, and then salts and encrypts
|
||||
the password with sha512crypt. </p>
|
||||
the password with sha512crypt.</p>
|
||||
<p>It is also possible to use the <code>set password ...</code> command. This allows
|
||||
setting an already hashed password. To manually hash a password, use
|
||||
the <code>do password encrypt</code> command. This launches the admin-exec command
|
||||
to hash, and optionally salt, your password. This encrypted string can
|
||||
then be used with <code>set password ...</code>.</p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Tip:</strong> if you are having trouble thinking of a password, there is
|
||||
also <code>do password generate</code>, which generates random but readable
|
||||
strings using the UNIX command <code>pwgen</code>.</p>
|
||||
<p><strong>Tip</strong></p>
|
||||
<p>If you are having trouble thinking of a password, there is also <code>do
|
||||
password generate</code>, which generates random but readable strings using
|
||||
the UNIX command <code>pwgen</code>.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="ssh-authorized-key">SSH Authorized Key<a class="headerlink" href="#ssh-authorized-key" title="Permanent link">¶</a></h2>
|
||||
<p>Logging in remotely with SSH is possible by adding a <em>public key</em> to a
|
||||
user. Here we add the authorized key to the admin user, multiple keys
|
||||
@@ -2595,11 +2591,11 @@ remember to verify SSH login and network connectivity before doing so.</p>
|
||||
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=;
|
||||
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/> leave
|
||||
</code></pre></div>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> the <code>ssh-keygen</code> program already base64 encodes the public
|
||||
key data, so there is no need to use the <code>text-editor</code> command, <code>set</code>
|
||||
does the job.</p>
|
||||
<p><strong>Note</strong></p>
|
||||
<p>The <code>ssh-keygen</code> program already base64 encodes the public key data,
|
||||
so there is no need to use the <code>text-editor</code> command, <code>set</code> does the
|
||||
job.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="creating-a-veth-pair">Creating a VETH Pair<a class="headerlink" href="#creating-a-veth-pair" title="Permanent link">¶</a></h2>
|
||||
@@ -2633,13 +2629,13 @@ world. Here we also add an IPv4 address to one end of the pair.</p>
|
||||
<a id="__codelineno-10-25" name="__codelineno-10-25" href="#__codelineno-10-25"></a>admin@host:/config/> leave
|
||||
</code></pre></div>
|
||||
<p>See the bridging example below for more.</p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> in the CLI you do not have to create the <code>veth0b</code> interface.
|
||||
The system <em>infers</em> this for you. When setting up a VETH pair using
|
||||
NETCONF, however, you must include the <code>veth0b</code> interface.</p>
|
||||
<p><strong>Tip</strong></p>
|
||||
<p>In the CLI you do not have to create the <code>veth0b</code> interface. The
|
||||
system <em>infers</em> this for you. This does not apply when setting up a
|
||||
VETH pair using NETCONF or RESTCONF, then you must submit a complete
|
||||
configuration.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="creating-a-bridge">Creating a Bridge<a class="headerlink" href="#creating-a-bridge" title="Permanent link">¶</a></h2>
|
||||
<p>Building on the previous example, we now create a non-VLAN filtering
|
||||
bridge (<code>br0</code>) that forwards any, normally link-local, LLDP traffic
|
||||
@@ -2689,13 +2685,12 @@ between both its bridge ports: <code>eth0</code> and <code>vet0b</code>.</p>
|
||||
the VETH pair from the previous example) are now bridged. Any traffic
|
||||
ingressing one port will egress the other. Only reserved IEEE multicast
|
||||
is filtered, except LLDP frames as shown above.</p>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> the bridge can be named anything, provided the interface
|
||||
name is not already taken. However, for any name outside the pattern
|
||||
<code>br[0-9]+</code>, you have to set the interface type manually to <code>bridge</code>.</p>
|
||||
<p><strong>Important</strong></p>
|
||||
<p>The bridge can be named anything, provided the interface name is not
|
||||
already taken. However, for any name outside the pattern <code>br[0-9]+</code>,
|
||||
you have to set the interface type manually to <code>bridge</code>.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2369,12 +2369,11 @@ available in any context are:</p>
|
||||
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>admin@host-12-34-56:/> show # Try: Tab or ?
|
||||
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>admin@host-12-34-56:/> # Try: Tab or ?
|
||||
</code></pre></div>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> even on an empty command line, you can tap the <code>Tab</code> or <code>?</code> keys.<br>
|
||||
<p><strong>Tip</strong></p>
|
||||
<p>Even on an empty command line, you can tap the <code>Tab</code> or <code>?</code> keys.<br>
|
||||
See <a href="../keybindings/"><code>help keybindings</code></a> for more tips!</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<h2 id="key-concepts">Key Concepts<a class="headerlink" href="#key-concepts" title="Permanent link">¶</a></h2>
|
||||
<p>The two modes in the CLI are the admin-exec and the configure context.</p>
|
||||
<p>The top-level context after logging in and starting the CLI is the
|
||||
@@ -2407,14 +2406,14 @@ and <em>running</em> that can be managed and inspected using the <code>copy</cod
|
||||
for these are listed below:</p>
|
||||
<ul>
|
||||
<li><code>factory-config</code> the default configuration from factory for the
|
||||
device, i.e., what the system returns to after a <code>factory-reset</code></li>
|
||||
device, i.e., what the system returns to after a <code>factory-reset</code></li>
|
||||
<li><code>startup-config</code> created from <code>factory-config</code> at first boot after
|
||||
factory reset. Loaded as the system configuration on each boot</li>
|
||||
factory reset. Loaded as the system configuration on each boot</li>
|
||||
<li><code>running-config</code> what is actively running on the system. If no
|
||||
changes have been made since boot, it is the same as <code>startup-config</code></li>
|
||||
changes have been made since boot, it is the same as <code>startup-config</code></li>
|
||||
<li><code>candidate-config</code> is created from <code>running-config</code> when entering the
|
||||
configure context. Any changes made here can be discarded (<code>abort</code>,
|
||||
<code>rollback</code>) or committed (<code>commit</code>, <code>leave</code>) to <code>running-config</code></li>
|
||||
configure context. Any changes made here can be discarded (<code>abort</code>,
|
||||
<code>rollback</code>) or committed (<code>commit</code>, <code>leave</code>) to <code>running-config</code></li>
|
||||
</ul>
|
||||
<p>Edit the <em>running</em> configuration using the <code>configure</code> command. This
|
||||
copies <em>running</em> to <em>candidate</em>, a temporary datastore, where changes
|
||||
@@ -2495,12 +2494,11 @@ store, so the system will use them for consecutive reboots, use the
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="example-session">Example Session<a class="headerlink" href="#example-session" title="Permanent link">¶</a></h2>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p><strong>Tip</strong></p>
|
||||
<p>Remember to use the <code>TAB</code> and <code>?</code> keys to speed up your navigation.<br>
|
||||
See <a href="../keybindings/"><code>help keybindings</code></a> for more tips!</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<p>In this example we enter configure context to add an IPv4 address to
|
||||
interface <code>eth0</code>, then we apply the changes using the <code>leave</code> command.</p>
|
||||
<p>We inspect the system status to ensure the change took effect. Then we
|
||||
@@ -2508,8 +2506,8 @@ save the changes for the next reboot.</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@host-12-34-56:/> configure
|
||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>admin@host-12-34-56:/config/> edit interface eth0
|
||||
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>admin@host-12-34-56:/config/interface/eth0/> set ipv4 <TAB>
|
||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> address autoconf bind-ni-name enabled
|
||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> forwarding mtu neighbor
|
||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> address autoconf bind-ni-name dhcp
|
||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> enabled forwarding mtu neighbor
|
||||
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a>admin@host-12-34-56:/config/interface/eth0/> set ipv4 address 192.168.2.200 prefix-length 24
|
||||
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a>admin@host-12-34-56:/config/interface/eth0/> show
|
||||
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a>type ethernetCsmacd;
|
||||
@@ -2546,11 +2544,12 @@ change that, e.g., breaks networking, it is trivial to revert back by:</p>
|
||||
</code></pre></div>
|
||||
<p>Or restart the device, for example if the change to the configuration
|
||||
caused you to lose contact with the system (it happens to the best of
|
||||
us). The system will start up from the last "save gave".</p>
|
||||
us). The system will start up from the last "save game".</p>
|
||||
<blockquote>
|
||||
<p><strong>Tip:</strong> when restoring a backup of a configuration, or having manually
|
||||
edited a config file, you can validate it using system's YANG models,
|
||||
it is <em>not</em> applied if validation is successful:</p>
|
||||
<p><strong>Tip:</strong> Restoring Backups</p>
|
||||
<p>When restoring a backup of a configuration, or having manually edited
|
||||
a config file, you can validate it using the system's YANG models, it
|
||||
is <em>not</em> applied if validation is successful:</p>
|
||||
<p><code>copy /media/backup/old.cfg running-config validate</code></p>
|
||||
</blockquote>
|
||||
|
||||
|
||||
@@ -490,7 +490,7 @@
|
||||
<a href="#what-is-meta" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
What is Meta?
|
||||
What is Meta
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -2257,7 +2257,7 @@
|
||||
<a href="#what-is-meta" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
What is Meta?
|
||||
What is Meta
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -2492,7 +2492,7 @@ CLI has several keybindings, most significant first:</p>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="what-is-meta">What is Meta?<a class="headerlink" href="#what-is-meta" title="Permanent link">¶</a></h2>
|
||||
<h2 id="what-is-meta">What is Meta<a class="headerlink" href="#what-is-meta" title="Permanent link">¶</a></h2>
|
||||
<p>The Meta key is called Alt on most modern keyboards. If you have
|
||||
neither, first tap the Esc key instead of holding down Alt/Meta.</p>
|
||||
<h2 id="usage">Usage<a class="headerlink" href="#usage" title="Permanent link">¶</a></h2>
|
||||
|
||||
@@ -2320,13 +2320,12 @@ keybindings are really useful to learn!</p>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p>In <code>configure</code> context the <code>help setting</code> command shows the YANG
|
||||
<p><strong>Tip:</strong> Online Help</p>
|
||||
<p>In <code>configure</code> context the <code>help <setting></code> command shows the YANG
|
||||
description text for each node and container. To reach the admin
|
||||
exec help from configure context, e.g., <code>do help text-editor</code></p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2262,7 +2262,7 @@ even both.</p>
|
||||
<p>To install a new software image to the currently <em>inactive</em> partition<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>, we
|
||||
use the <code>upgrade</code> command and a URI to a ftp/tftp/sftp or http/https server
|
||||
that hosts the file:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@host:/> upgrade tftp://192.168.122.1/firmware-x86_64-v23.11.pkg
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@example:/> upgrade tftp://192.168.122.1/firmware-x86_64-v23.11.pkg
|
||||
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>installing
|
||||
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> 0% Installing
|
||||
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> 0% Determining slot states
|
||||
@@ -2283,7 +2283,7 @@ that hosts the file:</p>
|
||||
<a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> 99% Updating slots done.
|
||||
<a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a>100% Installing done.
|
||||
<a id="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a>Installing `tftp://192.168.122.1/firmware-x86_64-v23.11.pkg` succeeded
|
||||
<a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a>admin@host:/>
|
||||
<a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a>admin@example:/>
|
||||
</code></pre></div>
|
||||
<p>The secondary partition (<code>rootfs.1</code>) has now been upgraded and will be used as
|
||||
the <em>active</em> partition on the next boot. Leaving the primary partition, with
|
||||
|
||||
+4
-3799
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 416 KiB After Width: | Height: | Size: 428 KiB |
@@ -1625,6 +1625,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#tls-certificates" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
TLS Certificates
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -2447,6 +2458,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#tls-certificates" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
TLS Certificates
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -2645,6 +2667,7 @@ for WiFi and WireGuard key formats.</p>
|
||||
<p><strong>Asymmetric Keys</strong> — public/private key pairs used for:</p>
|
||||
<ul>
|
||||
<li>SSH host authentication (RSA keys)</li>
|
||||
<li>HTTPS/TLS certificates (X.509 keys)</li>
|
||||
<li>WireGuard VPN tunnels (X25519 keys)</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -2674,6 +2697,11 @@ managed via CLI, NETCONF, or RESTCONF.</p>
|
||||
<td>RSA</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>rsa-private-key-format</code> / <code>x509-public-key-format</code></td>
|
||||
<td>TLS certificates</td>
|
||||
<td>RSA + X.509</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>x25519-private-key-format</code> / <code>x25519-public-key-format</code></td>
|
||||
<td>WireGuard VPN</td>
|
||||
<td>Curve25519</td>
|
||||
@@ -2707,6 +2735,46 @@ default host key is automatically generated on first boot and stored in the
|
||||
keystore with the name <code>genkey</code>.</p>
|
||||
<p>See <a href="../management/">SSH Management</a> for details on generating and importing
|
||||
custom SSH host keys.</p>
|
||||
<h3 id="tls-certificates">TLS Certificates<a class="headerlink" href="#tls-certificates" title="Permanent link">¶</a></h3>
|
||||
<p>TLS certificates are used by the web server (nginx) for HTTPS connections.
|
||||
The default certificate is a self-signed certificate automatically generated
|
||||
on first boot and stored in the keystore with the name <code>gencert</code>. Like SSH
|
||||
host keys, the certificate is regenerated on factory reset when its keys are
|
||||
empty.</p>
|
||||
<p>The web server's <code>certificate</code> leaf references which keystore entry to use:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nt">"infix-services:web"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="nt">"certificate"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gencert"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="nt">"enabled"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
||||
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p>To use a custom (e.g., CA-signed) certificate, create a new asymmetric key
|
||||
entry with <code>x509-public-key-format</code>, populate it with your certificate and
|
||||
private key, then point the web <code>certificate</code> leaf to it:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">"ietf-keystore:keystore"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nt">"asymmetric-keys"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="nt">"asymmetric-key"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-cert"</span><span class="p">,</span>
|
||||
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="nt">"public-key-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"infix-crypto-types:x509-public-key-format"</span><span class="p">,</span>
|
||||
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="nt">"public-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<base64-encoded-cert>"</span><span class="p">,</span>
|
||||
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="nt">"private-key-format"</span><span class="p">:</span><span class="w"> </span><span class="s2">"infix-crypto-types:rsa-private-key-format"</span><span class="p">,</span>
|
||||
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="nt">"cleartext-private-key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<base64-encoded-key>"</span><span class="p">,</span>
|
||||
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="nt">"certificates"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="nt">"certificate"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
||||
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ca-signed"</span><span class="p">,</span><span class="w"> </span><span class="nt">"cert-data"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<base64-encoded-cert>"</span><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="p">]</span>
|
||||
<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>The <code>public-key</code> and <code>cert-data</code> fields contain base64-encoded PEM data
|
||||
with the <code>-----BEGIN/END-----</code> markers stripped. The system reconstructs
|
||||
the PEM files when writing them to disk for nginx.</p>
|
||||
</div>
|
||||
<h3 id="wireguard-keys">WireGuard Keys<a class="headerlink" href="#wireguard-keys" title="Permanent link">¶</a></h3>
|
||||
<p>WireGuard uses X25519 elliptic curve cryptography for key exchange. Each
|
||||
WireGuard interface requires a public/private key pair stored as an asymmetric
|
||||
@@ -2762,6 +2830,7 @@ wg-psk octet-string zYr83O4Ykj9i1gN+/aaosJxQx...
|
||||
<span class="title">Asymmetric Keys</span>
|
||||
<span class="header">NAME TYPE PUBLIC KEY </span>
|
||||
genkey rsa MIIBCgKCAQEAnj0YinjhYDgYbEGuh7...
|
||||
gencert x509 MIIDXTCCAkWgAwIBAgIJAJC1HiIAZA...
|
||||
wg-tunnel x25519 bN1CwZ1lTP6KsrCwZ1lTP6KsrCwZ1...
|
||||
</code></pre>
|
||||
|
||||
|
||||
@@ -1630,6 +1630,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#https-certificate" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
HTTPS Certificate
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -2413,6 +2424,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#https-certificate" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
HTTPS Certificate
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -2620,6 +2642,7 @@ the unit's neighbors, collected via mDNS (see
|
||||
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
||||
admin@example:/config/> <b>edit web</b>
|
||||
admin@example:/config/web/> <b>help</b>
|
||||
certificate Reference to asymmetric key in central keystore.
|
||||
enabled Enable or disable on all web services.
|
||||
console Web console interface.
|
||||
netbrowse mDNS Network Browser.
|
||||
@@ -2665,6 +2688,19 @@ admin@example:/config/web/restconf/> <b>no enabled</b>
|
||||
admin@example:/config/web/restconf/>
|
||||
</code></pre>
|
||||
|
||||
<h3 id="https-certificate">HTTPS Certificate<a class="headerlink" href="#https-certificate" title="Permanent link">¶</a></h3>
|
||||
<p>The Web server uses a TLS certificate from the central
|
||||
<a href="../keystore/">keystore</a>. By default it uses <code>gencert</code>, a self-signed
|
||||
certificate that is automatically generated on first boot.</p>
|
||||
<p>To use a different certificate, e.g., one signed by a CA, first add
|
||||
it to the keystore as an asymmetric key with <code>x509-public-key-format</code>,
|
||||
then point the web <code>certificate</code> leaf to it:</p>
|
||||
<pre class="cli"><code>admin@example:/config/web/> <b>set certificate my-cert</b>
|
||||
admin@example:/config/web/>
|
||||
</code></pre>
|
||||
|
||||
<p>See <a href="../keystore/#tls-certificates">Keystore</a> for details on managing
|
||||
TLS certificates.</p>
|
||||
<h2 id="system-upgrade">System Upgrade<a class="headerlink" href="#system-upgrade" title="Permanent link">¶</a></h2>
|
||||
<p>See <a href="../upgrade/">Upgrade & Boot Order</a> for information on upgrading.</p>
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
+50
-50
@@ -2,202 +2,202 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/boot/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/branding/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/bridging/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/container/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/developers-guide/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/dhcp/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/discovery/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/eth-counters/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/ethernet/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/firewall/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/hardware/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/iface/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/ip/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/keystore/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/lag/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/license/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/management/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/nacm/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/netboot/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/networking/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/ntp/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/override-package/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/qos/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/routing/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/scripting-netconf/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/scripting-prod/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/scripting-restconf/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/scripting-sysrepocfg/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/scripting/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/support/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/syslog/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/system/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/test-arch/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/testing/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/tunnels/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/upgrade/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/virtual/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/vpd/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/vpn-wireguard/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/vpn/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/wifi/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/configure/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/introduction/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/keybindings/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/netcalc/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/quick/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/tcpdump/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/text-editor/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kernelkit.github.io/infix/dev/cli/upgrade/</loc>
|
||||
<lastmod>2026-03-19</lastmod>
|
||||
<lastmod>2026-03-20</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
+120
-12
@@ -2198,6 +2198,45 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Integration to Infix">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode-on-virtual-devices" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode on Virtual Devices
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode-on-physical-devices" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode on Physical Devices
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -2417,6 +2456,45 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Integration to Infix">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode-on-virtual-devices" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode on Virtual Devices
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#test-mode-on-physical-devices" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Test Mode on Physical Devices
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -2704,18 +2782,48 @@ could accept an arbitrary physical topology, run the STP algorithm on
|
||||
it offline, enable STP on all DUTs, and then verify that the resulting
|
||||
spanning tree matches the expected one.</p>
|
||||
<h2 id="integration-to-infix">Integration to Infix<a class="headerlink" href="#integration-to-infix" title="Permanent link">¶</a></h2>
|
||||
<p>When the test environment is started with Qeneth, it doesn't use the
|
||||
base image directly. Instead, it creates a copy and inserts a <code>test-mode</code>
|
||||
flag into it. During the bootstrap phase, the system checks for the
|
||||
presence of the test-mode flag (file).</p>
|
||||
<p>If the flag exists, a 'test-config.cfg' file is generated. In the
|
||||
following step, the system loads the 'test-config' instead of the
|
||||
standard <code>startup-config</code> (or <code>factory-config</code>). This configuration
|
||||
is simple and safe, equivalent to the one used in 'Secure Mode'
|
||||
(also known as 'failure-config').</p>
|
||||
<p>Additionally, the configuration enables extra RPCs related to system
|
||||
restart and configuration overrides, allowing tests to be run even on
|
||||
systems where the factory configuration may potentially create L2 loops. </p>
|
||||
<h3 id="test-mode">Test Mode<a class="headerlink" href="#test-mode" title="Permanent link">¶</a></h3>
|
||||
<p>Infix supports a <em>test mode</em> that makes devices safe and predictable to
|
||||
test against. When active, each boot starts from a known-good
|
||||
<code>test-config</code> (equivalent to the failure/secure config) instead of the
|
||||
stored startup or factory configuration. This prevents any persistent
|
||||
configuration from interfering with tests and avoids L2 loops that a
|
||||
factory config might create. It also enables two extra RPCs used by
|
||||
Infamy:</p>
|
||||
<ul>
|
||||
<li><code>infix-test:test/reset</code> — reload the <code>test-config</code> into the running
|
||||
datastore (called by <code>env.attach()</code> at the start of each test)</li>
|
||||
<li><code>infix-test:test/override-startup</code> — boot from the startup datastore
|
||||
once, instead of the <code>test-config</code> (used by tests that verify
|
||||
save-and-reboot behaviour)</li>
|
||||
</ul>
|
||||
<p>Test mode is activated by the presence of an empty file named
|
||||
<code>test-mode</code> on the device's <code>aux</code> partition (<code>/mnt/aux/test-mode</code>).</p>
|
||||
<h3 id="test-mode-on-virtual-devices">Test Mode on Virtual Devices<a class="headerlink" href="#test-mode-on-virtual-devices" title="Permanent link">¶</a></h3>
|
||||
<p>When the test environment is started with Qeneth, the <code>inject-test-mode</code>
|
||||
script (<code>test/inject-test-mode</code>) is run automatically. It copies the
|
||||
base disk image and writes the <code>test-mode</code> marker into the <code>aux</code>
|
||||
partition of that copy, which is then used as the Qeneth backing image.</p>
|
||||
<h3 id="test-mode-on-physical-devices">Test Mode on Physical Devices<a class="headerlink" href="#test-mode-on-physical-devices" title="Permanent link">¶</a></h3>
|
||||
<p>For a physical device, log in as <code>root</code> (or <code>admin</code>) and create the
|
||||
marker file on the <code>aux</code> partition, then reboot:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a># touch /mnt/aux/test-mode
|
||||
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a># reboot
|
||||
</code></pre></div>
|
||||
<p>Alternatively, if you want to prepare the disk image before flashing,
|
||||
use the <code>inject-test-mode</code> script:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>$ test/inject-test-mode -b infix-<board>.img -o infix-<board>-test.img
|
||||
</code></pre></div>
|
||||
<p>Flash <code>infix-<board>-test.img</code> to the device instead of the plain
|
||||
image. The device will boot into test mode on first power-on.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>Test mode persists across reboots until the marker file is removed
|
||||
(<code>rm /mnt/aux/test-mode</code>). A device in test mode always starts from
|
||||
the <code>test-config</code>, so any configuration changes are lost on reboot
|
||||
unless <code>startup_override()</code> is called first (or the marker is removed
|
||||
and a normal startup config is saved).</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2658,12 +2658,19 @@ namespace, specify the <code>host</code> <code>TEST_MODE</code>:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>$ make TEST_MODE=host test
|
||||
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>...
|
||||
</code></pre></div>
|
||||
<p>This typically used when testing on physical hardware. By default the
|
||||
<p>This is typically used when testing on physical hardware. By default the
|
||||
topology will be sourced from <code>/etc/infamy.dot</code>, but this can be
|
||||
overwritten by setting the <code>TOPOLOGY</code> variable:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>$ make TEST_MODE=host TOPOLOGY=~/my-topology.dot test
|
||||
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>...
|
||||
</code></pre></div>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Important</p>
|
||||
<p>Physical devices must be put into <em>test mode</em> before running tests.
|
||||
See <a href="../test-arch/#test-mode">Test Mode</a> in the architecture document
|
||||
for details. The short version: log in to the device and run
|
||||
<code>touch /mnt/aux/test-mode && reboot</code>.</p>
|
||||
</div>
|
||||
<h3 id="make-run-devices"><code>make run</code> Devices<a class="headerlink" href="#make-run-devices" title="Permanent link">¶</a></h3>
|
||||
<p>Some tests only require a single DUT. These can therefore be run
|
||||
against an Infix image started from <code>make run</code>. This requires that the
|
||||
|
||||
Reference in New Issue
Block a user