mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
3088 lines
179 KiB
HTML
3088 lines
179 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="Infix Documentation">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/scripting/">
|
|
|
|
|
|
<link rel="prev" href="../discovery/">
|
|
|
|
|
|
<link rel="next" href="../tunnels/">
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.15">
|
|
|
|
|
|
|
|
<title>Scripting Infix - User's Guide</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.342714a4.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#scripting-infix" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="https://kernelkit.org/" title="User's Guide" class="md-header__button md-logo" aria-label="User's Guide" data-md-component="logo">
|
|
|
|
<img src="../jack.png" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
User's Guide
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Scripting Infix
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
|
|
</a>
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kernelkit/infix
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="https://kernelkit.org/" title="User's Guide" class="md-nav__button md-logo" aria-label="User's Guide" data-md-component="logo">
|
|
|
|
<img src="../jack.png" alt="logo">
|
|
|
|
</a>
|
|
User's Guide
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
kernelkit/infix
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
About
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../introduction/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../networking/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Network Configuration
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../system/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
System Configuration
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../management/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
System Management
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../upgrade/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
System Upgrade
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../license/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Origin & Licensing
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
CLI
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
CLI
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/introduction/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/configure/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Configuration
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/keybindings/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Keybindings
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/netcalc/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Network Calculator
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/tcpdump/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Network Monitoring
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/quick/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Quickstart Guide
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/text-editor/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Text Edítor
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli/upgrade/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Upgrading
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
In-Depth
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
In-Depth
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../boot/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Boot Procedure
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../dhcp/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
DHCP Server
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../container/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Docker Containers
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../hardware/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Hardware Info & Status
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../discovery/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Network Discovery
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Scripting Infix
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Scripting Infix
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tips" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tips
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#admin-user-not-authorized" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Admin User Not Authorized?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#remote-control-of-ethernet-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Remote Control of Ethernet Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#check-devices-network-connectivity" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Check Device's Network Connectivity
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-upgrade" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Upgrade
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#controlling-leds-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Controlling LEDs for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reading-power-feed-status-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Reading Power Feed Status for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples-using-ssh-and-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples using SSH and sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples using SSH and sysrepocfg">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#remote-control-of-ethernet-ports-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Remote Control of Ethernet Ports Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#enabledisable-dhcpv4-client" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Enable/Disable DHCPv4 client
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#enabledisable-ipv6" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Enable/Disable IPv6
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#change-a-binary-setting" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Change a Binary Setting
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#backup-configuration-using-sysrepocfg-and-scp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Backup Configuration Using sysrepocfg And scp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#restore-configuration-using-sysrepocfg-and-sshscp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Restore Configuration Using sysrepocfg and ssh/scp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#copy-running-to-startup-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Copy Running to Startup Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-out-hardware-information-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Read Out Hardware Information Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples-using-restconf" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples using RESTCONF
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples using RESTCONF">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-hostname" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Read Hostname
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-hostname" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Hostname
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#copy-running-to-startup" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Copy Running to Startup
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#miscellaneous" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Miscellaneous
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Miscellaneous">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#port-configuration-example-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Port Configuration Example for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Port Configuration Example for Production Tests">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuration-at-start" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Configuration at Start
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#creating-bridge-and-adding-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Creating Bridge and Adding Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#assign-vlans-to-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Assign VLANs to Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#connect-cables-and-test" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Connect Cables and Test
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#add-ip-address-on-switch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Add IP Address on Switch
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../tunnels/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tunneling (L2/L3)
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../qos/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Quality of Service
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../eth-counters/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
RMON Counters
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../syslog/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Syslog Support
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../virtual/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Virtual Environments
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../wifi/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Wireless LAN (WiFi)
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
For Developers
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_10">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
For Developers
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../branding/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Branding & Releases
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../developers-guide/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Developer's Guide
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../override-package/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Developing with Buildroot
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../netboot/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Netboot HowTo
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../testing/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Regression Testing
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../test-arch/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Test System Architechture
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../vpd/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Vital Product Data (VPD)
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tips" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tips
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#admin-user-not-authorized" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Admin User Not Authorized?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#remote-control-of-ethernet-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Remote Control of Ethernet Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#check-devices-network-connectivity" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Check Device's Network Connectivity
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-upgrade" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Upgrade
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#controlling-leds-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Controlling LEDs for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reading-power-feed-status-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Reading Power Feed Status for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples-using-ssh-and-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples using SSH and sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples using SSH and sysrepocfg">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#remote-control-of-ethernet-ports-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Remote Control of Ethernet Ports Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#enabledisable-dhcpv4-client" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Enable/Disable DHCPv4 client
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#enabledisable-ipv6" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Enable/Disable IPv6
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#change-a-binary-setting" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Change a Binary Setting
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#backup-configuration-using-sysrepocfg-and-scp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Backup Configuration Using sysrepocfg And scp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#restore-configuration-using-sysrepocfg-and-sshscp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Restore Configuration Using sysrepocfg and ssh/scp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#copy-running-to-startup-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Copy Running to Startup Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-out-hardware-information-using-sysrepocfg" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Read Out Hardware Information Using sysrepocfg
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples-using-restconf" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples using RESTCONF
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Examples using RESTCONF">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#factory-reset_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Factory Reset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#system-reboot_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
System Reboot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-date-and-time_1" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Date and Time
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#read-hostname" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Read Hostname
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-hostname" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set Hostname
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#copy-running-to-startup" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Copy Running to Startup
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#miscellaneous" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Miscellaneous
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Miscellaneous">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#port-configuration-example-for-production-tests" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Port Configuration Example for Production Tests
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Port Configuration Example for Production Tests">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuration-at-start" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Configuration at Start
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#creating-bridge-and-adding-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Creating Bridge and Adding Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#assign-vlans-to-ports" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Assign VLANs to Ports
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#connect-cables-and-test" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Connect Cables and Test
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#add-ip-address-on-switch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Add IP Address on Switch
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="scripting-infix">Scripting Infix<a class="headerlink" href="#scripting-infix" title="Permanent link">¶</a></h1>
|
|
<p>In some situations a user cannot, or does not want to, use the NETCONF
|
|
API for interacting with Infix. Examples include production tasks and
|
|
simpler remote scripting jobs to one or more remote devices.</p>
|
|
<p>This document assumes you have the password for the <code>admin</code> user, and
|
|
that you can connect to the device. Please see <a href="../discovery/">Finding my Device</a>
|
|
for help on locating it.</p>
|
|
<p>Furthermore, the example commands shown here that are execute from a PC
|
|
to a remote device over SSH, use Linux/UNIX. With advances lately in
|
|
both Windows and macOS, many of the user friendly tools previously only
|
|
available in Linux are now available there too.</p>
|
|
<ul>
|
|
<li>The shell prompt for the PC laptop side:</li>
|
|
</ul>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>~$
|
|
</code></pre></div>
|
|
<ul>
|
|
<li>The shell prompt when logged in to an Infix device:</li>
|
|
</ul>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@example:~$
|
|
</code></pre></div>
|
|
<blockquote>
|
|
<p><strong>Note:</strong> the shell script commands used here are the raw variants
|
|
which the CLI usually wraps in a warm and snugly blanket. Meaning
|
|
they may change over time, while the CLI wrappers do <em>not</em>. That
|
|
being said, please let us know if you find any inconsistencies.</p>
|
|
</blockquote>
|
|
<h2 id="tips">Tips<a class="headerlink" href="#tips" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li>Ensure the <code>admin</code> user does <em>not</em> have <code>clish</code> as login shell</li>
|
|
<li>Enable <a href="../system/#ssh-authorized-key">SSH key authentication</a></li>
|
|
<li>Deploy same SSH <em>public</em> key to many Infix devices</li>
|
|
<li>Secure your <em>private</em> SSH key using, e.g., <code>ssh-agent</code></li>
|
|
</ul>
|
|
<p>The <code>ssh-keygen</code> command, used to create the private/public key pair,
|
|
asks for a passphrase and although this is <em>technically optional</em> it is
|
|
highly recommended to set one. For ease of use, in particular when
|
|
scripting, use <code>ssh-agent</code> to avoid retyping the passphrase for every
|
|
command.</p>
|
|
<p>Useful links on SSH, keys, and using <code>ssh-agent</code>:</p>
|
|
<ul>
|
|
<li>https://en.wikipedia.org/wiki/Ssh-agent</li>
|
|
<li>https://www.cyberciti.biz/faq/how-to-use-ssh-agent-for-authentication-on-linux-unix/</li>
|
|
<li>https://goteleport.com/blog/how-to-use-ssh-agent-safely/</li>
|
|
</ul>
|
|
<h2 id="admin-user-not-authorized">Admin User Not Authorized?<a class="headerlink" href="#admin-user-not-authorized" title="Permanent link">¶</a></h2>
|
|
<p>All system services and critical configuration files are owned by the
|
|
locked-down <code>root</code> user. It is not possible to activate the <code>root</code> user
|
|
account for remote logins. Instead, use <code>admin</code> user and the <code>sudo</code>
|
|
command prefix.</p>
|
|
<p>Here we are logged in to an example device:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@example:~$ cp /cfg/startup-config.cfg /cfg/backup-config.cfg
|
|
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>cp: can't create '/cfg/backup-config.cfg': Permission denied
|
|
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>admin@example:~$ sudo cp /cfg/startup-config.cfg /cfg/backup-config.cfg
|
|
</code></pre></div>
|
|
<h2 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">¶</a></h2>
|
|
<p>The following example commands are run from the PC over SSH. The
|
|
following is a <em>very brief</em> introduction.</p>
|
|
<p>The notation is <code>ssh username@address</code>, where address can be an IPv4 or
|
|
IPv6 address, a DNS name, or an mDNS name, e.g. infix.local. In the
|
|
case of IPv6: <code>address%interface</code>, where interface differs between
|
|
operating systems. On Linux and macOS the interface name is used, but
|
|
on Windows the interface index<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup> is used.</p>
|
|
<p><strong>Logging in to a device</strong></p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>~$ ssh admin@fe80::ff:fe00:0%eth0
|
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>The authenticity of host 'fe80::ff:fe00:0%eth0 (fe80::ff:fe00:0%eth0)' can't be established.
|
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>ED25519 key fingerprint is SHA256:5/9mw64jhmYyD8MD+SwrsG3RXMBbP48pDe2T8bg14RQ.
|
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>This key is not known by any other names
|
|
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
|
|
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>Warning: Permanently added 'fe80::ff:fe00:0%eth0' (ED25519) to the list of known hosts.
|
|
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>admin@fe80::ff:fe00:0%eth0's password: *****
|
|
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>.-------.
|
|
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>| . . | Infix OS — Immutable.Friendly.Secure
|
|
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>|-. v .-| https://kernelkit.org
|
|
<a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a>'-'---'-'
|
|
<a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a>
|
|
<a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a>Run the command 'cli' for interactive OAM
|
|
</code></pre></div>
|
|
<p><strong>Executing a command on a device</strong></p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>~$ ssh admin@fe80::ff:fe00:0%eth0 echo hej
|
|
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>admin@fe80::ff:fe00:0%eth0's password: *****
|
|
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>hej
|
|
</code></pre></div>
|
|
<p><strong>Made Easy</strong></p>
|
|
<p>Connecting to networked devices using IP addresses is the way many
|
|
people are used to. The above example with IPv6 tend to scare off
|
|
people, so for the rest of this document we'll use the mDNS name
|
|
instead:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>~$ ssh admin@infix.local%eth0
|
|
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>The authenticity of host 'infix.local%eth0 (infix.local%eth0)' can't be established.
|
|
</code></pre></div>
|
|
<h3 id="factory-reset">Factory Reset<a class="headerlink" href="#factory-reset" title="Permanent link">¶</a></h3>
|
|
<p>The command option <code>-y</code> disables any "are you sure?" interaction and
|
|
immediately triggers a factory reset and reboot of the device. It is
|
|
when the device boots up it erases all writable storage.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>~$ ssh admin@infix.local%eth0 factory -y
|
|
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>admin@infix.local%eth0's password: *****
|
|
</code></pre></div>
|
|
<h3 id="system-reboot">System Reboot<a class="headerlink" href="#system-reboot" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>~$ ssh admin@infix.local%eth0 reboot
|
|
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>admin@infix.local%eth0's password: *****
|
|
</code></pre></div>
|
|
<h3 id="set-date-and-time">Set Date and Time<a class="headerlink" href="#set-date-and-time" title="Permanent link">¶</a></h3>
|
|
<p>Devices running Infix may have their system time completely off and this
|
|
can cause problems for upgrading and when accessing the web interface
|
|
over HTTPS (certificate validation looks at start and end dates).</p>
|
|
<p>To set the device's system time, <em>and</em> sync that with the RTC:
|
|
use the PCs current time as argument:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>~$ ssh admin@infix.local%eth0 "sudo date -s '2024-03-20 18:14+01:00' && sudo hwclock -w -u"
|
|
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@infix.local%eth0's password: *****
|
|
</code></pre></div>
|
|
<blockquote>
|
|
<p>The <code>-u</code> option ensures saving system time to the RTC in UTC time.</p>
|
|
</blockquote>
|
|
<p>Verify that the change took:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>~$ ssh admin@infix.local%eth0 date
|
|
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>admin@infix.local%eth0's password: *****
|
|
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>Wed Mar 20 17:14:47 UTC 2024
|
|
</code></pre></div>
|
|
<h3 id="remote-control-of-ethernet-ports">Remote Control of Ethernet Ports<a class="headerlink" href="#remote-control-of-ethernet-ports" title="Permanent link">¶</a></h3>
|
|
<p>There are two ways to do it:</p>
|
|
<ol>
|
|
<li>Change the configuration without saving it to <code>startup-config</code></li>
|
|
<li>Change the operational state</li>
|
|
</ol>
|
|
<p>The first involves sending a NETCONF command/config in XML. The second
|
|
we will cover here. We start by querying available interfaces (ports) on
|
|
the remote system:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>~$ ssh admin@infix.local%qtap0 ip -br a
|
|
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>admin@infix.local%qtap0's password:
|
|
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a>lo UP 127.0.0.1/8 ::1/128
|
|
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a>e0 UP fe80::ff:fe00:0/64
|
|
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>e1 UP
|
|
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>e2 UP
|
|
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a>e3 UP
|
|
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a>e4 UP
|
|
<a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a>e5 UP fe80::ff:fe00:5/64
|
|
<a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a>e6 UP fe80::ff:fe00:6/64
|
|
<a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a>e7 UP fe80::ff:fe00:7/64
|
|
<a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a>e8 UP fe80::ff:fe00:8/64
|
|
<a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a>e9 UP 192.168.2.200/24 fe80::ff:fe00:9/64
|
|
<a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a>br0 UP
|
|
</code></pre></div>
|
|
<p>Here we see a loopback interface (lo), ten Ethernet ports (e0-e9) and a
|
|
bridge (br0). From this quick glance we can guess that the ports e1-e4
|
|
are bridged (you can verify this with the remote command <code>bridge link</code>)
|
|
because they do not have a link-local IPv6 address.</p>
|
|
<p>I know it's port e6 that I want to take down:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>~$ ssh admin@infix.local%qtap0 ip link set e6 down
|
|
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>admin@infix.local%qtap0's password:
|
|
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>RTNETLINK answers: Operation not permitted
|
|
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>~$ ssh admin@infix.local%qtap0 sudo ip link set e6 down
|
|
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a>admin@infix.local%qtap0's password:
|
|
</code></pre></div>
|
|
<p>Changing the operational link state of a port is a privileged command,
|
|
so we have to prefix our command with <code>sudo</code>.</p>
|
|
<p>Inspecting the link state again show the port is now down:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>~$ ssh admin@infix.local%qtap0 ip -br a
|
|
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>admin@infix.local%qtap0's password:
|
|
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>lo UP 127.0.0.1/8 ::1/128
|
|
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>e0 UP fe80::ff:fe00:0/64
|
|
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>e1 UP
|
|
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>e2 UP
|
|
<a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>e3 UP
|
|
<a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a>e4 UP
|
|
<a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a>e5 UP fe80::ff:fe00:5/64
|
|
<a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a>e6 DOWN
|
|
<a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a>e7 UP fe80::ff:fe00:7/64
|
|
<a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a>e8 UP fe80::ff:fe00:8/64
|
|
<a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a>e9 UP 192.168.2.200/24 fe80::ff:fe00:9/64
|
|
<a id="__codelineno-12-14" name="__codelineno-12-14" href="#__codelineno-12-14"></a>br0 UP
|
|
</code></pre></div>
|
|
<h3 id="check-devices-network-connectivity">Check Device's Network Connectivity<a class="headerlink" href="#check-devices-network-connectivity" title="Permanent link">¶</a></h3>
|
|
<p>Say you want to perform a [System Upgrade][#system-uprgade] and it just
|
|
doesn't work, then you might want to ensure the device actually can
|
|
reach the upgrade server.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>~$ ssh admin@infix.local%eth0 ping -c 3 server.local
|
|
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>admin@infix.local%qtap0's password: *****
|
|
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>PING server.local (192.168.2.42) 56(84) bytes of data.
|
|
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>64 bytes from server.local: icmp_seq=1 ttl=64 time=0.201 ms
|
|
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a>64 bytes from server.local: icmp_seq=2 ttl=64 time=0.432 ms
|
|
<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>64 bytes from server.local: icmp_seq=3 ttl=64 time=0.427 ms
|
|
<a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a>
|
|
<a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a>--- server.local ping statistics ---
|
|
<a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a>3 packets transmitted, 3 received, 0% packet loss, time 2050ms
|
|
<a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a>rtt min/avg/max/mdev = 0.201/0.353/0.432/0.107 ms
|
|
</code></pre></div>
|
|
<p>Here we get a reply, so whatever is the issue with the upgrade was
|
|
not hiding behind a connectivity issue at least.</p>
|
|
<h3 id="system-upgrade">System Upgrade<a class="headerlink" href="#system-upgrade" title="Permanent link">¶</a></h3>
|
|
<p>The underlying software that handles upgrades is called <a href="https://rauc.io/">RAUC</a>. To
|
|
trigger an upgrade you (currently) need an FTP/TFTP or HTTP/HTTPS server
|
|
where RAUC can fetch the upgrade from. In this example we use an FTP
|
|
server to upgrade the currently inactive "slot":</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>~$ ssh admin@infix.local%eth0 rauc install ftp://server.local/infix-aarch64-24.06.0.pkg
|
|
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>admin@infix.local%eth0's password: *****
|
|
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>installing
|
|
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> 0% Installing
|
|
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> 0% Determining slot states
|
|
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a> 20% Determining slot states done.
|
|
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a> 20% Checking bundle
|
|
<a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a> 20% Verifying signature
|
|
<a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a> 40% Verifying signature done.
|
|
<a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a> 40% Checking bundle done.
|
|
<a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a> 40% Checking manifest contents
|
|
<a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a> 60% Checking manifest contents done.
|
|
<a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a> 60% Determining target install group
|
|
<a id="__codelineno-14-14" name="__codelineno-14-14" href="#__codelineno-14-14"></a> 80% Determining target install group done.
|
|
<a id="__codelineno-14-15" name="__codelineno-14-15" href="#__codelineno-14-15"></a> 80% Updating slots
|
|
<a id="__codelineno-14-16" name="__codelineno-14-16" href="#__codelineno-14-16"></a> 80% Checking slot rootfs.1
|
|
<a id="__codelineno-14-17" name="__codelineno-14-17" href="#__codelineno-14-17"></a> 90% Checking slot rootfs.1 done.
|
|
<a id="__codelineno-14-18" name="__codelineno-14-18" href="#__codelineno-14-18"></a> 90% Copying image to rootfs.1
|
|
<a id="__codelineno-14-19" name="__codelineno-14-19" href="#__codelineno-14-19"></a> 99% Copying image to rootfs.1 done.
|
|
<a id="__codelineno-14-20" name="__codelineno-14-20" href="#__codelineno-14-20"></a> 99% Updating slots done.
|
|
<a id="__codelineno-14-21" name="__codelineno-14-21" href="#__codelineno-14-21"></a>100% Installing done.
|
|
<a id="__codelineno-14-22" name="__codelineno-14-22" href="#__codelineno-14-22"></a>idle
|
|
<a id="__codelineno-14-23" name="__codelineno-14-23" href="#__codelineno-14-23"></a>Installing `ftp://server.local/infix-aarch64-24.06.0.pkg` succeeded
|
|
<a id="__codelineno-14-24" name="__codelineno-14-24" href="#__codelineno-14-24"></a>~$
|
|
</code></pre></div>
|
|
<p>The inactive slot is now marked active and will be used on the next
|
|
boot. To upgrade the partition we booted from, we must first reboot.</p>
|
|
<p>For more information, see the <a href="../boot/#system-upgrade">Boot Procedure</a> document.</p>
|
|
<p><strong>Alternative:</strong></p>
|
|
<p>If you know your device has sufficient storage, eMMC or RAM disk (check
|
|
with the remote command <code>df -h</code>), you can also copy the <code>.pkg</code> file to
|
|
the device instead of having to set up an FTP/TFTP or HTTP/HTTPS server.</p>
|
|
<p>Create an upload directory where <code>admin</code> has write permission:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>~$ ssh admin@infix.local%eth0 "sudo mkdir /var/tmp/upload; sudo chown admin /var/tmp/upload"
|
|
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>admin@infix.local%eth0's password:
|
|
</code></pre></div>
|
|
<p>Copy the file with secure copy, first we show the nasty IPv6 version of
|
|
the command:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>~$ scp infix-aarch64-24.06.0.pkg admin@\[fe80::ff:fe00:0%eth0\]:/var/tmp/upload/
|
|
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>admin@fe80::ff:fe00:0%eth0's password:
|
|
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>infix-aarch64-24.06.0.pkg 100% 296 601.4KB/s 00:00
|
|
</code></pre></div>
|
|
<p>And the upgrade command itself:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>~$ ssh admin@infix.local%eth0 rauc install /var/tmp/upload/infix-aarch64-24.06.0.pkg
|
|
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>admin@infix.local%eth0's password: *****
|
|
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>.
|
|
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>.
|
|
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a>.
|
|
</code></pre></div>
|
|
<p>Remember to remove the file from the upload directory when you are done,
|
|
this can be done before or after the reboot to activate the upgrade. If
|
|
you want to upgrade both "slots", then you can of course keep the file
|
|
until you are done (provided the upload directory was created on
|
|
persistent storage).</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>~$ ssh admin@infix.local%eth0 rm /var/tmp/upload/infix-aarch64-24.06.0.pkg
|
|
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>admin@infix.local%eth0's password: *****
|
|
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="controlling-leds-for-production-tests">Controlling LEDs for Production Tests<a class="headerlink" href="#controlling-leds-for-production-tests" title="Permanent link">¶</a></h3>
|
|
<p>As part of production testing, LED verification is often expected to
|
|
be performed. Infix uses standard <a href="https://docs.kernel.org/leds/leds-class.html">Linux support for LED
|
|
management</a>, where LEDs appear in the file system under
|
|
/sys/class/leds and can be controlled using <em>echo</em> command. <code>sudo</code>
|
|
privileges are required.</p>
|
|
<p>When interacting with LEDs this way, first disable the Infix <em>iitod</em>
|
|
daemon to avoid conflicting LED control.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>~$ ssh admin@example.local 'initctl stop iitod'
|
|
</code></pre></div>
|
|
<p>Then run the test, e.g., visually control that a red LED labeled
|
|
'LAN' is working.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>~$ ssh admin@example.local 'echo none | sudo tee /sys/class/leds/red\:lan/trigger'
|
|
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>~$ ssh admin@example.local 'echo 1 | sudo tee /sys/class/leds/red\:lan/brightness'
|
|
</code></pre></div>
|
|
<p>To turn off the same LED, run the following commands.</p>
|
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>~$ ssh admin@example.local 'echo none | sudo tee /sys/class/leds/red\:lan/trigger'
|
|
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a>~$ ssh admin@example.local 'echo 0 | sudo tee /sys/class/leds/red\:lan/brightness'
|
|
</code></pre></div>
|
|
When done with LED testing, enable Infix <em>iitod</em> daemon again.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>~$ ssh admin@example.local 'initctl start iitod'
|
|
</code></pre></div>
|
|
<h3 id="reading-power-feed-status-for-production-tests">Reading Power Feed Status for Production Tests<a class="headerlink" href="#reading-power-feed-status-for-production-tests" title="Permanent link">¶</a></h3>
|
|
<p>As part of production tests, verification of Power Feed sensors is
|
|
often expected to be performed. Infix uses standard <a href="https://docs.kernel.org/power/power_supply_class.html">Linux support for
|
|
Power management</a>, where power sources appear in the file system
|
|
under /sys/class/power_supply. The following example reads status of
|
|
two power supplies named <em>pwr1</em> and <em>pwr2</em>.</p>
|
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>~$ ssh admin@example 'cat /sys/class/power_supply/pwr1/online'
|
|
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a>1
|
|
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a>~$ ssh admin@example 'cat /sys/class/power_supply/pwr2/online'
|
|
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a>0
|
|
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a>~$
|
|
</code></pre></div>
|
|
Here, only <em>pwr1</em> happened to have power. </p>
|
|
<h2 id="examples-using-ssh-and-sysrepocfg">Examples using SSH and sysrepocfg<a class="headerlink" href="#examples-using-ssh-and-sysrepocfg" title="Permanent link">¶</a></h2>
|
|
<p><a href="https://netopeer.liberouter.org/doc/sysrepo/libyang1/html/sysrepocfg.html">sysrepocfg</a> can be used to interact with the YANG models when logged
|
|
in to infix. Thus, <em>set config</em>, <em>read config</em>, <em>read status</em> and
|
|
<em>RPC</em> can be conducted using sysrepocfg for supported YANG models.
|
|
It is possible to make configuration changes by operating on the
|
|
<em>startup</em> database.</p>
|
|
<p>See <a href="https://netopeer.liberouter.org/doc/sysrepo/libyang1/html/sysrepocfg.html">sysrepocfg</a> for information. Examples below will utilize </p>
|
|
<ul>
|
|
<li><code>sysrepocfg -I FILE -fjson -d DATABASE</code> to import/write a JSON
|
|
formatted configuration file to the specified database.</li>
|
|
<li><code>sysrepocfg -E FILE -fjson -d DATABASE</code> to edit/merge JSON formatted
|
|
configuration in FILE with the specified database.</li>
|
|
<li><code>sysrepocfg -R FILE -fjson</code> to execute remote procedure call (RPC) defined in
|
|
FILE (JSON formatted). </li>
|
|
<li><code>sysrepocfg -X -fjson -d DATABASE -x xpath</code> to read configuration or
|
|
status from specified database.</li>
|
|
</ul>
|
|
<p>For importing (-I) and editing (-E), <code>-d running</code> is typically used in
|
|
examples below. Specify <code>-d startup</code> to apply changes to startup
|
|
configuration. Exporting (-X) could operate on configuration (e.g.,
|
|
<code>-d running</code>) or status (<code>-d operational</code>).</p>
|
|
<p>Some commands require a file as input. In examples below we assume
|
|
it been transferred to Infix in advance, e.g. using <code>scp</code> as shown below.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>~$ cat file.json
|
|
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a>{
|
|
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a> "ietf-factory-default:factory-reset": {
|
|
<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a> }
|
|
<a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a>}
|
|
<a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="factory-reset-using-sysrepocfg">Factory Reset Using sysrepocfg<a class="headerlink" href="#factory-reset-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>~$ cat file.json
|
|
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a>{
|
|
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a> "ietf-factory-default:factory-reset": {
|
|
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a> }
|
|
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a>}
|
|
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a>~$ ssh admin@example.local 'sysrepocfg -fjson -R /tmp/file.json'
|
|
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a>^C
|
|
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a>~$
|
|
</code></pre></div>
|
|
See <a href="#factory-reset">Factory Reset</a> for another (simpler) alternative.</p>
|
|
<p>If it is only wished to copy factory config to running config the
|
|
following RPC is available</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>~$ cat file.json
|
|
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a>{
|
|
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a> "infix-factory-default:factory-default": {
|
|
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a> }
|
|
<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a>}
|
|
<a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a>~$ ssh admin@example.local 'sysrepocfg -fjson -R /tmp/file.json'
|
|
<a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a>^C
|
|
<a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="system-reboot-using-sysrepocfg">System Reboot Using sysrepocfg<a class="headerlink" href="#system-reboot-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>~$ cat /tmp/file.json
|
|
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a>{
|
|
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> "ietf-system:system-restart": {
|
|
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> }
|
|
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a>}
|
|
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a>~$ ssh admin@example.local 'sysrepocfg -fjson -R /tmp/file.json'
|
|
<a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a>~$
|
|
</code></pre></div>
|
|
See <a href="#system-reboot">System Reboot</a> for another (simpler) alternative.</p>
|
|
<h3 id="set-date-and-time-using-sysrepocfg">Set Date and Time Using sysrepocfg<a class="headerlink" href="#set-date-and-time-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>~$ ssh admin@example.local 'date'
|
|
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>Sun Nov 20 10:20:23 UTC 2005
|
|
<a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a>~$ cat file.json
|
|
<a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a>{
|
|
<a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a> "ietf-system:set-current-datetime": {
|
|
<a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a> "current-datetime": "2024-04-17T13:48:02-01:00"
|
|
<a id="__codelineno-28-7" name="__codelineno-28-7" href="#__codelineno-28-7"></a> }
|
|
<a id="__codelineno-28-8" name="__codelineno-28-8" href="#__codelineno-28-8"></a>}
|
|
<a id="__codelineno-28-9" name="__codelineno-28-9" href="#__codelineno-28-9"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-28-10" name="__codelineno-28-10" href="#__codelineno-28-10"></a>~$ ssh admin@example.local 'sysrepocfg -fjson -R /tmp/file.json'
|
|
<a id="__codelineno-28-11" name="__codelineno-28-11" href="#__codelineno-28-11"></a>~$ ssh admin@example.local 'date'
|
|
<a id="__codelineno-28-12" name="__codelineno-28-12" href="#__codelineno-28-12"></a>Wed Apr 17 14:48:12 UTC 2024
|
|
<a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a>~$
|
|
</code></pre></div>
|
|
See <a href="#set-date-and-time">Set Date and Time</a> for another (simpler) alternative.</p>
|
|
<h3 id="remote-control-of-ethernet-ports-using-sysrepocfg">Remote Control of Ethernet Ports Using sysrepocfg<a class="headerlink" href="#remote-control-of-ethernet-ports-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p>Reading administrative status of interface <em>e0</em> of running configuration.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d running -e report-all -x \"/ietf-interfaces:interfaces/interface[name='e0']/enabled\"'
|
|
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>{
|
|
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a> "ietf-interfaces:interfaces": {
|
|
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a> "interface": [
|
|
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a> {
|
|
<a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a> "name": "e0",
|
|
<a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a> "enabled": true
|
|
<a id="__codelineno-29-8" name="__codelineno-29-8" href="#__codelineno-29-8"></a> }
|
|
<a id="__codelineno-29-9" name="__codelineno-29-9" href="#__codelineno-29-9"></a> ]
|
|
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a> }
|
|
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a>}
|
|
<a id="__codelineno-29-12" name="__codelineno-29-12" href="#__codelineno-29-12"></a>~$
|
|
</code></pre></div>
|
|
<blockquote>
|
|
<p>Note: Without <code>-e report-all</code> argument the line <code>"enabled: true</code>
|
|
would not be shown as <code>true</code> is default.</p>
|
|
</blockquote>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>~$ ssh admin@example.local "sysrepocfg -X -fjson -d running -x \"/ietf-interfaces:interfaces/interface[name='e0']/enabled\""
|
|
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>{
|
|
<a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a> "ietf-interfaces:interfaces": {
|
|
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a> "interface": [
|
|
<a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a> {
|
|
<a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a> "name": "e0"
|
|
<a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a> }
|
|
<a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a> ]
|
|
<a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a> }
|
|
<a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a>}
|
|
<a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a>~$
|
|
</code></pre></div>
|
|
<p>Setting the administrative status of interface <em>e0</em> of running configuration.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>$ cat file.json
|
|
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a>{
|
|
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a> "ietf-interfaces:interfaces": {
|
|
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a> "interface": [
|
|
<a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a> {
|
|
<a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a> "name": "e0",
|
|
<a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a> "enabled": false
|
|
<a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a> }
|
|
<a id="__codelineno-31-9" name="__codelineno-31-9" href="#__codelineno-31-9"></a> ]
|
|
<a id="__codelineno-31-10" name="__codelineno-31-10" href="#__codelineno-31-10"></a> }
|
|
<a id="__codelineno-31-11" name="__codelineno-31-11" href="#__codelineno-31-11"></a>}
|
|
<a id="__codelineno-31-12" name="__codelineno-31-12" href="#__codelineno-31-12"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-31-13" name="__codelineno-31-13" href="#__codelineno-31-13"></a>~$ ssh admin@example.local 'sysrepocfg -E /tmp/file.json -fjson -d running'
|
|
<a id="__codelineno-31-14" name="__codelineno-31-14" href="#__codelineno-31-14"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="enabledisable-dhcpv4-client">Enable/Disable DHCPv4 client<a class="headerlink" href="#enabledisable-dhcpv4-client" title="Permanent link">¶</a></h3>
|
|
<p>Enabling DHCPv4 client on interface <em>e0</em>, with current default options.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>~$ cat /tmp/file.json
|
|
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a>{
|
|
<a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a> "infix-dhcp-client:dhcp-client": {
|
|
<a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a> "enabled": true,
|
|
<a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a> "client-if": [
|
|
<a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a> {
|
|
<a id="__codelineno-32-7" name="__codelineno-32-7" href="#__codelineno-32-7"></a> "if-name": "e0"
|
|
<a id="__codelineno-32-8" name="__codelineno-32-8" href="#__codelineno-32-8"></a> }
|
|
<a id="__codelineno-32-9" name="__codelineno-32-9" href="#__codelineno-32-9"></a> ]
|
|
<a id="__codelineno-32-10" name="__codelineno-32-10" href="#__codelineno-32-10"></a> }
|
|
<a id="__codelineno-32-11" name="__codelineno-32-11" href="#__codelineno-32-11"></a>}
|
|
<a id="__codelineno-32-12" name="__codelineno-32-12" href="#__codelineno-32-12"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-32-13" name="__codelineno-32-13" href="#__codelineno-32-13"></a>~$ ssh admin@example.local 'sysrepocfg -E /tmp/file.json -fjson -d running'
|
|
<a id="__codelineno-32-14" name="__codelineno-32-14" href="#__codelineno-32-14"></a>~$
|
|
</code></pre></div>
|
|
<p>Disabling DHCPv4 client. </p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>~$ cat /tmp/file.json
|
|
<a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a>{
|
|
<a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a> "infix-dhcp-client:dhcp-client": {
|
|
<a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a> "enabled": false
|
|
<a id="__codelineno-33-5" name="__codelineno-33-5" href="#__codelineno-33-5"></a> }
|
|
<a id="__codelineno-33-6" name="__codelineno-33-6" href="#__codelineno-33-6"></a>}
|
|
<a id="__codelineno-33-7" name="__codelineno-33-7" href="#__codelineno-33-7"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-33-8" name="__codelineno-33-8" href="#__codelineno-33-8"></a>~$ ssh admin@example.local 'sysrepocfg -E /tmp/file.json -fjson -d running'
|
|
<a id="__codelineno-33-9" name="__codelineno-33-9" href="#__codelineno-33-9"></a>~$
|
|
</code></pre></div>
|
|
<p>Configuration for client interface <em>e0</em> remains, but does not apply as
|
|
DHCPv4 is disabled. </p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>admin@example:~$ sysrepocfg -X -fjson -d running -x "/infix-dhcp-client:dhcp-client"
|
|
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a>{
|
|
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a> "infix-dhcp-client:dhcp-client": {
|
|
<a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a> "enabled": false,
|
|
<a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a> "client-if": [
|
|
<a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a> {
|
|
<a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a> "if-name": "e0"
|
|
<a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a> }
|
|
<a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a> ]
|
|
<a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a> }
|
|
<a id="__codelineno-34-11" name="__codelineno-34-11" href="#__codelineno-34-11"></a>}
|
|
<a id="__codelineno-34-12" name="__codelineno-34-12" href="#__codelineno-34-12"></a>admin@example:~$
|
|
</code></pre></div>
|
|
<p>To fully remove the DHCPv4 client configuration or a specific
|
|
<em>client-if</em> with sysrepocfg, one would need to read out the full
|
|
configuration, remove relevant parts and read back.</p>
|
|
<h3 id="enabledisable-ipv6">Enable/Disable IPv6<a class="headerlink" href="#enabledisable-ipv6" title="Permanent link">¶</a></h3>
|
|
<p>IPv6 is typically enabled on all interfaces by default. The example
|
|
below shows IPv4 and IPv6 addresses assigned on <em>e0</em>.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>~$ ssh admin@example.local 'ip addr show dev e0'
|
|
<a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a>2: e0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
|
<a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a> link/ether 02:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
|
|
<a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a> inet 10.0.2.15/24 scope global proto dhcp e0
|
|
<a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a> valid_lft forever preferred_lft forever
|
|
<a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a> inet6 fec0::ff:fe00:0/64 scope site dynamic mngtmpaddr proto kernel_ra
|
|
<a id="__codelineno-35-7" name="__codelineno-35-7" href="#__codelineno-35-7"></a> valid_lft 86380sec preferred_lft 14380sec
|
|
<a id="__codelineno-35-8" name="__codelineno-35-8" href="#__codelineno-35-8"></a> inet6 fe80::ff:fe00:0/64 scope link proto kernel_ll
|
|
<a id="__codelineno-35-9" name="__codelineno-35-9" href="#__codelineno-35-9"></a> valid_lft forever preferred_lft forever
|
|
<a id="__codelineno-35-10" name="__codelineno-35-10" href="#__codelineno-35-10"></a>~$
|
|
</code></pre></div>
|
|
<p>IPv6 is enabled/disabled per interface. The example below disables IPv6
|
|
on interface <em>e0</em>.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>~$ cat /tmp/file.json
|
|
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a>{
|
|
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a> "ietf-interfaces:interfaces": {
|
|
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a> "interface": [
|
|
<a id="__codelineno-36-5" name="__codelineno-36-5" href="#__codelineno-36-5"></a> {
|
|
<a id="__codelineno-36-6" name="__codelineno-36-6" href="#__codelineno-36-6"></a> "name": "e0",
|
|
<a id="__codelineno-36-7" name="__codelineno-36-7" href="#__codelineno-36-7"></a> "ietf-ip:ipv6": {
|
|
<a id="__codelineno-36-8" name="__codelineno-36-8" href="#__codelineno-36-8"></a> "enabled": false
|
|
<a id="__codelineno-36-9" name="__codelineno-36-9" href="#__codelineno-36-9"></a> }
|
|
<a id="__codelineno-36-10" name="__codelineno-36-10" href="#__codelineno-36-10"></a> }
|
|
<a id="__codelineno-36-11" name="__codelineno-36-11" href="#__codelineno-36-11"></a> ]
|
|
<a id="__codelineno-36-12" name="__codelineno-36-12" href="#__codelineno-36-12"></a> }
|
|
<a id="__codelineno-36-13" name="__codelineno-36-13" href="#__codelineno-36-13"></a>}
|
|
<a id="__codelineno-36-14" name="__codelineno-36-14" href="#__codelineno-36-14"></a>~$ scp file.json admin@example.local:/tmp/file.json
|
|
<a id="__codelineno-36-15" name="__codelineno-36-15" href="#__codelineno-36-15"></a>~$ ssh admin@example.local 'sysrepocfg -E /tmp/file.json -fjson -d running'
|
|
<a id="__codelineno-36-16" name="__codelineno-36-16" href="#__codelineno-36-16"></a>~$ ssh admin@example.local 'ip addr show dev e0'
|
|
<a id="__codelineno-36-17" name="__codelineno-36-17" href="#__codelineno-36-17"></a>2: e0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
|
<a id="__codelineno-36-18" name="__codelineno-36-18" href="#__codelineno-36-18"></a> link/ether 02:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
|
|
<a id="__codelineno-36-19" name="__codelineno-36-19" href="#__codelineno-36-19"></a> inet 10.0.2.15/24 scope global proto dhcp e0
|
|
<a id="__codelineno-36-20" name="__codelineno-36-20" href="#__codelineno-36-20"></a> valid_lft forever preferred_lft forever
|
|
<a id="__codelineno-36-21" name="__codelineno-36-21" href="#__codelineno-36-21"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="change-a-binary-setting">Change a Binary Setting<a class="headerlink" href="#change-a-binary-setting" title="Permanent link">¶</a></h3>
|
|
<p>A YANG <code>binary</code> type setting is Base64 encoded and requires a little bit
|
|
more tricks. We take the opportunity to showcase a shell script helper:
|
|
<code>/usr/bin/text-editor</code>, which works just like the <code>text-editor</code> command
|
|
in the CLI, but this one takes an XPath argument to the binary leaf to
|
|
edit.</p>
|
|
<p>Stripped down, it looks something like this:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="k">if</span><span class="w"> </span><span class="nv">tmp</span><span class="o">=</span><span class="k">$(</span>sysrepocfg<span class="w"> </span>-G<span class="w"> </span><span class="s2">"</span><span class="nv">$xpath</span><span class="s2">"</span><span class="k">)</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
|
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="w"> </span><span class="nv">file</span><span class="o">=</span><span class="k">$(</span>mktemp<span class="k">)</span>
|
|
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a>
|
|
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>base64<span class="w"> </span>-d<span class="w"> </span>><span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span>
|
|
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span>edit<span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
|
<a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a><span class="w"> </span><span class="nv">tmp</span><span class="o">=</span><span class="k">$(</span>base64<span class="w"> </span>-w0<span class="w"> </span><<span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="k">)</span>
|
|
<a id="__codelineno-37-7" name="__codelineno-37-7" href="#__codelineno-37-7"></a><span class="w"> </span>sysrepocfg<span class="w"> </span>-S<span class="w"> </span><span class="s2">"</span><span class="nv">$xpath</span><span class="s2">"</span><span class="w"> </span>-u<span class="w"> </span><span class="s2">"</span><span class="nv">$tmp</span><span class="s2">"</span>
|
|
<a id="__codelineno-37-8" name="__codelineno-37-8" href="#__codelineno-37-8"></a><span class="w"> </span><span class="k">fi</span>
|
|
<a id="__codelineno-37-9" name="__codelineno-37-9" href="#__codelineno-37-9"></a>
|
|
<a id="__codelineno-37-10" name="__codelineno-37-10" href="#__codelineno-37-10"></a><span class="w"> </span>rm<span class="w"> </span>-f<span class="w"> </span><span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span>
|
|
<a id="__codelineno-37-11" name="__codelineno-37-11" href="#__codelineno-37-11"></a><span class="k">else</span>
|
|
<a id="__codelineno-37-12" name="__codelineno-37-12" href="#__codelineno-37-12"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Failed to retrieve value for </span><span class="nv">$xpath</span><span class="s2">"</span>
|
|
<a id="__codelineno-37-13" name="__codelineno-37-13" href="#__codelineno-37-13"></a><span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
|
|
<a id="__codelineno-37-14" name="__codelineno-37-14" href="#__codelineno-37-14"></a><span class="k">fi</span>
|
|
</code></pre></div>
|
|
<p>An example container configuration, with an embedded file that is
|
|
mounted to <code>/var/www/index.html</code> can look like this:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="w"> </span><span class="nt">"infix-containers:containers"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="w"> </span><span class="nt">"container"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
|
<a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a><span class="w"> </span><span class="p">{</span>
|
|
<a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"web"</span><span class="p">,</span>
|
|
<a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a><span class="w"> </span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"oci-archive:/lib/oci/curios-httpd-latest.tar.gz"</span><span class="p">,</span>
|
|
<a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a><span class="w"> </span><span class="nt">"hostname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"web"</span><span class="p">,</span>
|
|
<a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a><span class="w"> </span><span class="nt">"network"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
<a id="__codelineno-38-8" name="__codelineno-38-8" href="#__codelineno-38-8"></a><span class="w"> </span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
|
<a id="__codelineno-38-9" name="__codelineno-38-9" href="#__codelineno-38-9"></a><span class="w"> </span><span class="p">{</span>
|
|
<a id="__codelineno-38-10" name="__codelineno-38-10" href="#__codelineno-38-10"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"veth-sys0"</span>
|
|
<a id="__codelineno-38-11" name="__codelineno-38-11" href="#__codelineno-38-11"></a><span class="w"> </span><span class="p">}</span>
|
|
<a id="__codelineno-38-12" name="__codelineno-38-12" href="#__codelineno-38-12"></a><span class="w"> </span><span class="p">]</span>
|
|
<a id="__codelineno-38-13" name="__codelineno-38-13" href="#__codelineno-38-13"></a><span class="w"> </span><span class="p">},</span>
|
|
<a id="__codelineno-38-14" name="__codelineno-38-14" href="#__codelineno-38-14"></a><span class="w"> </span><span class="nt">"mount"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
|
<a id="__codelineno-38-15" name="__codelineno-38-15" href="#__codelineno-38-15"></a><span class="w"> </span><span class="p">{</span>
|
|
<a id="__codelineno-38-16" name="__codelineno-38-16" href="#__codelineno-38-16"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"index.html"</span><span class="p">,</span>
|
|
<a id="__codelineno-38-17" name="__codelineno-38-17" href="#__codelineno-38-17"></a><span class="w"> </span><span class="nt">"content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PCFET0NUWVBFIGh0bWwjibberish.shortened.down=="</span><span class="p">,</span>
|
|
<a id="__codelineno-38-18" name="__codelineno-38-18" href="#__codelineno-38-18"></a><span class="w"> </span><span class="nt">"target"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/www/index.html"</span>
|
|
<a id="__codelineno-38-19" name="__codelineno-38-19" href="#__codelineno-38-19"></a><span class="w"> </span><span class="p">}</span>
|
|
<a id="__codelineno-38-20" name="__codelineno-38-20" href="#__codelineno-38-20"></a><span class="w"> </span><span class="p">]</span>
|
|
<a id="__codelineno-38-21" name="__codelineno-38-21" href="#__codelineno-38-21"></a><span class="w"> </span><span class="p">}</span>
|
|
<a id="__codelineno-38-22" name="__codelineno-38-22" href="#__codelineno-38-22"></a><span class="w"> </span><span class="p">]</span>
|
|
<a id="__codelineno-38-23" name="__codelineno-38-23" href="#__codelineno-38-23"></a><span class="w"> </span><span class="p">}</span>
|
|
</code></pre></div>
|
|
<p>The command to edit this file, and restart the container with the new
|
|
contents, look like this:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a>admin@infix:~$ cfg edit "/infix-containers:containers/container[name='web']/mount[name='index.html']/content"
|
|
</code></pre></div>
|
|
<h3 id="backup-configuration-using-sysrepocfg-and-scp"><a id="backup"></a> Backup Configuration Using sysrepocfg And scp<a class="headerlink" href="#backup-configuration-using-sysrepocfg-and-scp" title="Permanent link">¶</a></h3>
|
|
<p>Displaying running or startup configuration is possible with
|
|
<code>sysrepocfg -X</code>, as shown below.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d running'
|
|
<a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a>{
|
|
<a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a> "ieee802-dot1ab-lldp:lldp": {
|
|
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a> "infix-lldp:enabled": true
|
|
<a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a>...
|
|
<a id="__codelineno-40-6" name="__codelineno-40-6" href="#__codelineno-40-6"></a>~$
|
|
</code></pre></div>
|
|
<p>An example for backing up startup configuration from remote PC.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d startup > /tmp/backup.json'
|
|
<a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a>~$ scp admin@example.local:/tmp/backup.json .
|
|
<a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a>~$
|
|
</code></pre></div>
|
|
<p>Or possibly skip intermediate storage of file
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d startup' > backup.json
|
|
<a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a>~$
|
|
</code></pre></div></p>
|
|
<p>A final example is to only use <code>scp</code>. This is simpler, but only works to backup the
|
|
startup configuration (not running).</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a>~$ scp admin@example.local:/cfg/startup-config.cfg backup.json
|
|
<a id="__codelineno-43-2" name="__codelineno-43-2" href="#__codelineno-43-2"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="restore-configuration-using-sysrepocfg-and-sshscp"><a id="restore"></a> Restore Configuration Using sysrepocfg and ssh/scp<a class="headerlink" href="#restore-configuration-using-sysrepocfg-and-sshscp" title="Permanent link">¶</a></h3>
|
|
<p>To restore a backup configuration to startup, the simplest way is to
|
|
use <code>scp</code> and reboot as shown below</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a>~$ scp admin@example.local:/cfg/startup-config.cfg backup.json
|
|
<a id="__codelineno-44-2" name="__codelineno-44-2" href="#__codelineno-44-2"></a>~$ ssh admin@example.local 'reboot'
|
|
<a id="__codelineno-44-3" name="__codelineno-44-3" href="#__codelineno-44-3"></a>Connection to switch.local closed by remote host.
|
|
<a id="__codelineno-44-4" name="__codelineno-44-4" href="#__codelineno-44-4"></a>~$
|
|
</code></pre></div>
|
|
<p>An alternative method to restore a backup configuration is to use the
|
|
<code>sysrepocfg -I FILE</code> (import) command.</p>
|
|
<p>The example below imports the backup configuration to startup, and
|
|
reboots the unit.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a>~$ scp backup.json admin@example.local:/tmp/
|
|
<a id="__codelineno-45-2" name="__codelineno-45-2" href="#__codelineno-45-2"></a>~$ ssh admin@example.local 'sudo sysrepocfg -I /tmp/backup.json -fjson -d startup'
|
|
<a id="__codelineno-45-3" name="__codelineno-45-3" href="#__codelineno-45-3"></a>~$ ssh admin@example.local 'reboot'
|
|
<a id="__codelineno-45-4" name="__codelineno-45-4" href="#__codelineno-45-4"></a>Connection to switch.local closed by remote host.
|
|
<a id="__codelineno-45-5" name="__codelineno-45-5" href="#__codelineno-45-5"></a>~$
|
|
</code></pre></div>
|
|
<blockquote>
|
|
<p>Note: admin login credentials (hash) are stored as part of the
|
|
configuration file. When replacing a switch and applying the backed
|
|
up configuration from the former switch, the password on the
|
|
replacement unit will also change.</p>
|
|
</blockquote>
|
|
<h3 id="copy-running-to-startup-using-sysrepocfg">Copy Running to Startup Using sysrepocfg<a class="headerlink" href="#copy-running-to-startup-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p>The following command reads out the running config via <code>sysrepocfg -X</code>
|
|
and writes the result to the startup configuration.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d running > /cfg/startup-config.cfg'
|
|
<a id="__codelineno-46-2" name="__codelineno-46-2" href="#__codelineno-46-2"></a>~$
|
|
</code></pre></div>
|
|
<p>An alternative is to write it to a temporary file, and use <code>sysrepocfg
|
|
-I</code> to import it to startup.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d running > /tmp/running.json'
|
|
<a id="__codelineno-47-2" name="__codelineno-47-2" href="#__codelineno-47-2"></a>~$ ssh admin@example.local 'sysrepocfg -I /tmp/running.json -fjson -d startup'
|
|
<a id="__codelineno-47-3" name="__codelineno-47-3" href="#__codelineno-47-3"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="read-out-hardware-information-using-sysrepocfg">Read Out Hardware Information Using sysrepocfg<a class="headerlink" href="#read-out-hardware-information-using-sysrepocfg" title="Permanent link">¶</a></h3>
|
|
<p>Infix supports IETF Hardware YANG with augments for ONIE formatted
|
|
production data stored in EEPROMs, if available. See Infix <a href="../vpd/">VPD
|
|
documentation</a>, as well as <em>ietf-hardware</em> and <em>infix-hardware</em> YANG
|
|
models for details.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a>~$ ssh admin@example.local 'sysrepocfg -X -fjson -d operational -x /ietf-hardware:hardware'
|
|
<a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a>{
|
|
<a id="__codelineno-48-3" name="__codelineno-48-3" href="#__codelineno-48-3"></a> "ietf-hardware:hardware": {
|
|
<a id="__codelineno-48-4" name="__codelineno-48-4" href="#__codelineno-48-4"></a> "component": [
|
|
<a id="__codelineno-48-5" name="__codelineno-48-5" href="#__codelineno-48-5"></a> {
|
|
<a id="__codelineno-48-6" name="__codelineno-48-6" href="#__codelineno-48-6"></a> "name": "product",
|
|
<a id="__codelineno-48-7" name="__codelineno-48-7" href="#__codelineno-48-7"></a> "class": "infix-hardware:vpd",
|
|
<a id="__codelineno-48-8" name="__codelineno-48-8" href="#__codelineno-48-8"></a> "serial-num": "12345",
|
|
<a id="__codelineno-48-9" name="__codelineno-48-9" href="#__codelineno-48-9"></a> "model-name": "Switch2010",
|
|
<a id="__codelineno-48-10" name="__codelineno-48-10" href="#__codelineno-48-10"></a> "mfg-date": "2024-01-30T16:42:37+00:00",
|
|
<a id="__codelineno-48-11" name="__codelineno-48-11" href="#__codelineno-48-11"></a> "infix-hardware:vpd-data": {
|
|
<a id="__codelineno-48-12" name="__codelineno-48-12" href="#__codelineno-48-12"></a> "product-name": "Switch2010",
|
|
<a id="__codelineno-48-13" name="__codelineno-48-13" href="#__codelineno-48-13"></a> "part-number": "ABC123-001",
|
|
<a id="__codelineno-48-14" name="__codelineno-48-14" href="#__codelineno-48-14"></a> "serial-number": "007",
|
|
<a id="__codelineno-48-15" name="__codelineno-48-15" href="#__codelineno-48-15"></a> "mac-address": "00:53:00:01:23:45",
|
|
<a id="__codelineno-48-16" name="__codelineno-48-16" href="#__codelineno-48-16"></a> "manufacture-date": "01/30/2024 16:42:37",
|
|
<a id="__codelineno-48-17" name="__codelineno-48-17" href="#__codelineno-48-17"></a> "num-macs": 11,
|
|
<a id="__codelineno-48-18" name="__codelineno-48-18" href="#__codelineno-48-18"></a> "manufacturer": "ACME Production",
|
|
<a id="__codelineno-48-19" name="__codelineno-48-19" href="#__codelineno-48-19"></a> "vendor": "SanFran Networks"
|
|
<a id="__codelineno-48-20" name="__codelineno-48-20" href="#__codelineno-48-20"></a> }
|
|
<a id="__codelineno-48-21" name="__codelineno-48-21" href="#__codelineno-48-21"></a> },
|
|
<a id="__codelineno-48-22" name="__codelineno-48-22" href="#__codelineno-48-22"></a> {
|
|
<a id="__codelineno-48-23" name="__codelineno-48-23" href="#__codelineno-48-23"></a> "name": "USB",
|
|
<a id="__codelineno-48-24" name="__codelineno-48-24" href="#__codelineno-48-24"></a> "class": "infix-hardware:usb",
|
|
<a id="__codelineno-48-25" name="__codelineno-48-25" href="#__codelineno-48-25"></a> "state": {
|
|
<a id="__codelineno-48-26" name="__codelineno-48-26" href="#__codelineno-48-26"></a> "admin-state": "unlocked",
|
|
<a id="__codelineno-48-27" name="__codelineno-48-27" href="#__codelineno-48-27"></a> "oper-state": "enabled"
|
|
<a id="__codelineno-48-28" name="__codelineno-48-28" href="#__codelineno-48-28"></a> }
|
|
<a id="__codelineno-48-29" name="__codelineno-48-29" href="#__codelineno-48-29"></a> }
|
|
<a id="__codelineno-48-30" name="__codelineno-48-30" href="#__codelineno-48-30"></a> ]
|
|
<a id="__codelineno-48-31" name="__codelineno-48-31" href="#__codelineno-48-31"></a> }
|
|
<a id="__codelineno-48-32" name="__codelineno-48-32" href="#__codelineno-48-32"></a>}
|
|
<a id="__codelineno-48-33" name="__codelineno-48-33" href="#__codelineno-48-33"></a>~$
|
|
</code></pre></div>
|
|
<h2 id="examples-using-restconf">Examples using RESTCONF<a class="headerlink" href="#examples-using-restconf" title="Permanent link">¶</a></h2>
|
|
<h3 id="factory-reset_1">Factory Reset<a class="headerlink" href="#factory-reset_1" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-49-1" name="__codelineno-49-1" href="#__codelineno-49-1"></a>~$ curl -kX POST -u admin:admin \
|
|
<a id="__codelineno-49-2" name="__codelineno-49-2" href="#__codelineno-49-2"></a> -H "Content-Type: application/yang-data+json" \
|
|
<a id="__codelineno-49-3" name="__codelineno-49-3" href="#__codelineno-49-3"></a> https://example.local/restconf/operations/ietf-factory-default:factory-reset
|
|
<a id="__codelineno-49-4" name="__codelineno-49-4" href="#__codelineno-49-4"></a>curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0
|
|
</code></pre></div>
|
|
<h3 id="system-reboot_1">System Reboot<a class="headerlink" href="#system-reboot_1" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-50-1" name="__codelineno-50-1" href="#__codelineno-50-1"></a>~$ curl -kX POST -u admin:admin \
|
|
<a id="__codelineno-50-2" name="__codelineno-50-2" href="#__codelineno-50-2"></a> -H "Content-Type: application/yang-data+json" \
|
|
<a id="__codelineno-50-3" name="__codelineno-50-3" href="#__codelineno-50-3"></a> https://example.local/restconf/operations/ietf-system:system-restart
|
|
</code></pre></div>
|
|
<h3 id="set-date-and-time_1">Set Date and Time<a class="headerlink" href="#set-date-and-time_1" title="Permanent link">¶</a></h3>
|
|
<p>Here's an example of an RPC that takes input/argument:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-51-1" name="__codelineno-51-1" href="#__codelineno-51-1"></a>~$ curl -kX POST -u admin:admin \
|
|
<a id="__codelineno-51-2" name="__codelineno-51-2" href="#__codelineno-51-2"></a> -H "Content-Type: application/yang-data+json" \
|
|
<a id="__codelineno-51-3" name="__codelineno-51-3" href="#__codelineno-51-3"></a> -d '{"ietf-system:input": {"current-datetime": "2024-04-17T13:48:02-01:00"}}' \
|
|
<a id="__codelineno-51-4" name="__codelineno-51-4" href="#__codelineno-51-4"></a> https://example.local/restconf/operations/ietf-system:set-current-datetime
|
|
</code></pre></div>
|
|
<p>You can verify that the changes took by a remote SSH command:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-52-1" name="__codelineno-52-1" href="#__codelineno-52-1"></a>~$ ssh admin@example.local 'date'
|
|
<a id="__codelineno-52-2" name="__codelineno-52-2" href="#__codelineno-52-2"></a>Wed Apr 17 14:48:12 UTC 2024
|
|
<a id="__codelineno-52-3" name="__codelineno-52-3" href="#__codelineno-52-3"></a>~$
|
|
</code></pre></div>
|
|
<h3 id="read-hostname">Read Hostname<a class="headerlink" href="#read-hostname" title="Permanent link">¶</a></h3>
|
|
<p>Example of fetching JSON configuration data to stdout:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-53-1" name="__codelineno-53-1" href="#__codelineno-53-1"></a>~$ curl -kX GET -u admin:admin \
|
|
<a id="__codelineno-53-2" name="__codelineno-53-2" href="#__codelineno-53-2"></a> -H 'Accept: application/yang-data+json' \
|
|
<a id="__codelineno-53-3" name="__codelineno-53-3" href="#__codelineno-53-3"></a> https://example.local/restconf/data/ietf-system:system/hostname
|
|
<a id="__codelineno-53-4" name="__codelineno-53-4" href="#__codelineno-53-4"></a>{
|
|
<a id="__codelineno-53-5" name="__codelineno-53-5" href="#__codelineno-53-5"></a> "ietf-system:system": {
|
|
<a id="__codelineno-53-6" name="__codelineno-53-6" href="#__codelineno-53-6"></a> "hostname": "foo"
|
|
<a id="__codelineno-53-7" name="__codelineno-53-7" href="#__codelineno-53-7"></a> }
|
|
<a id="__codelineno-53-8" name="__codelineno-53-8" href="#__codelineno-53-8"></a>}
|
|
</code></pre></div>
|
|
<h3 id="set-hostname">Set Hostname<a class="headerlink" href="#set-hostname" title="Permanent link">¶</a></h3>
|
|
<p>Example of inline JSON data:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-54-1" name="__codelineno-54-1" href="#__codelineno-54-1"></a>~$ curl -kX PATCH -u admin:admin \
|
|
<a id="__codelineno-54-2" name="__codelineno-54-2" href="#__codelineno-54-2"></a> -H 'Content-Type: application/yang-data+json' \
|
|
<a id="__codelineno-54-3" name="__codelineno-54-3" href="#__codelineno-54-3"></a> -d '{"ietf-system:system":{"hostname":"bar"}}' \
|
|
<a id="__codelineno-54-4" name="__codelineno-54-4" href="#__codelineno-54-4"></a> https://example.local/restconf/data/ietf-system:system
|
|
</code></pre></div>
|
|
<h3 id="copy-running-to-startup">Copy Running to Startup<a class="headerlink" href="#copy-running-to-startup" title="Permanent link">¶</a></h3>
|
|
<p>No copy command available yet to copy between datastores, and the
|
|
Rousette back-end also does not support "write-through" to the
|
|
startup datastore.</p>
|
|
<p>To save running-config to startup-config, use the following example to
|
|
fetch running to a local file and then update startup with it:</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-55-1" name="__codelineno-55-1" href="#__codelineno-55-1"></a>~$ curl -kX GET -u admin:admin -o running-config.json \
|
|
<a id="__codelineno-55-2" name="__codelineno-55-2" href="#__codelineno-55-2"></a> -H 'Accept: application/yang-data+json' \
|
|
<a id="__codelineno-55-3" name="__codelineno-55-3" href="#__codelineno-55-3"></a> https://example.local/restconf/ds/ietf-datastores:running
|
|
<a id="__codelineno-55-4" name="__codelineno-55-4" href="#__codelineno-55-4"></a>
|
|
<a id="__codelineno-55-5" name="__codelineno-55-5" href="#__codelineno-55-5"></a>~$ curl -kX PUT -u admin:admin -d @running-config.json \
|
|
<a id="__codelineno-55-6" name="__codelineno-55-6" href="#__codelineno-55-6"></a> -H 'Content-Type: application/yang-data+json' \
|
|
<a id="__codelineno-55-7" name="__codelineno-55-7" href="#__codelineno-55-7"></a> https://example.local/restconf/ds/ietf-datastores:startup
|
|
</code></pre></div>
|
|
<h2 id="miscellaneous">Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permanent link">¶</a></h2>
|
|
<h3 id="port-configuration-example-for-production-tests"><a id="port-test-intro"></a> Port Configuration Example for Production Tests<a class="headerlink" href="#port-configuration-example-for-production-tests" title="Permanent link">¶</a></h3>
|
|
<p>As part of production tests, verification Ethernet ports are expected
|
|
to be performed. A common way is to connect a test PC to two ports and
|
|
send a <em>ping</em> traversing all ports. This can be achieved by using
|
|
VLANs on the switch as described in this section. The resulting
|
|
configuration file can be applied to the running configuration of the
|
|
produced unit, e.g, use config file restore as described
|
|
<a href="#restore">above</a>.</p>
|
|
<p>In this example we assume a 10 port switch, with ports e1-e10. </p>
|
|
<p>The following VLAN configuration and cable connections will be used:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">VLAN & Ports</th>
|
|
<th style="text-align: left;">Connect</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">VLAN 10: e1 & e2</td>
|
|
<td style="text-align: left;">e2 <=> e3</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">VLAN 20: e3 & e4</td>
|
|
<td style="text-align: left;">e4 <=> e5</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">VLAN 30: e5 & e6</td>
|
|
<td style="text-align: left;">e6 <=> e7</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">VLAN 40: e7 & e8</td>
|
|
<td style="text-align: left;">e8 <=> e9</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">VLAN 50: e9 & e10</td>
|
|
<td style="text-align: left;"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The test PC is connected to e1 and e10 via different interfaces
|
|
(alternatively, two different PCs are used).</p>
|
|
<blockquote>
|
|
<p>Configuration here is done via console. When configuring remotely
|
|
over SSH, remember to keep one IP address (the one used for the SSH
|
|
connection)! I.e., set a static IP address first, then perform the
|
|
VLAN configuration step."</p>
|
|
</blockquote>
|
|
<h4 id="configuration-at-start">Configuration at Start<a class="headerlink" href="#configuration-at-start" title="Permanent link">¶</a></h4>
|
|
<p>Starting out, we assume a configuration where all ports are network
|
|
interfaces (possibly with IPv6 enabled).</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-56-1" name="__codelineno-56-1" href="#__codelineno-56-1"></a>admin@example:/><span class="w"> </span>show<span class="w"> </span>interfaces
|
|
<a id="__codelineno-56-2" name="__codelineno-56-2" href="#__codelineno-56-2"></a>lo<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:00:00:00:00:00<span class="w"> </span>
|
|
<a id="__codelineno-56-3" name="__codelineno-56-3" href="#__codelineno-56-3"></a><span class="w"> </span>ipv4<span class="w"> </span><span class="m">127</span>.0.0.1/8<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-56-4" name="__codelineno-56-4" href="#__codelineno-56-4"></a><span class="w"> </span>ipv6<span class="w"> </span>::1/128<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-56-5" name="__codelineno-56-5" href="#__codelineno-56-5"></a>e1<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-56-6" name="__codelineno-56-6" href="#__codelineno-56-6"></a>e2<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:02<span class="w"> </span>
|
|
<a id="__codelineno-56-7" name="__codelineno-56-7" href="#__codelineno-56-7"></a>e3<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:03<span class="w"> </span>
|
|
<a id="__codelineno-56-8" name="__codelineno-56-8" href="#__codelineno-56-8"></a>e4<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:04<span class="w"> </span>
|
|
<a id="__codelineno-56-9" name="__codelineno-56-9" href="#__codelineno-56-9"></a>e5<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:05<span class="w"> </span>
|
|
<a id="__codelineno-56-10" name="__codelineno-56-10" href="#__codelineno-56-10"></a>e6<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:06<span class="w"> </span>
|
|
<a id="__codelineno-56-11" name="__codelineno-56-11" href="#__codelineno-56-11"></a>e7<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:07<span class="w"> </span>
|
|
<a id="__codelineno-56-12" name="__codelineno-56-12" href="#__codelineno-56-12"></a>e8<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:08<span class="w"> </span>
|
|
<a id="__codelineno-56-13" name="__codelineno-56-13" href="#__codelineno-56-13"></a>e9<span class="w"> </span>ethernet<span class="w"> </span>LOWER-DOWN<span class="w"> </span><span class="m">00</span>:53:00:06:11:09<span class="w"> </span>
|
|
<a id="__codelineno-56-14" name="__codelineno-56-14" href="#__codelineno-56-14"></a>e10<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:0a<span class="w"> </span>
|
|
<a id="__codelineno-56-15" name="__codelineno-56-15" href="#__codelineno-56-15"></a><span class="w"> </span>ipv6<span class="w"> </span>fe80::0053:00ff:fe06:110a/64<span class="w"> </span><span class="o">(</span>link-layer<span class="o">)</span>
|
|
<a id="__codelineno-56-16" name="__codelineno-56-16" href="#__codelineno-56-16"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<h4 id="creating-bridge-and-adding-ports">Creating Bridge and Adding Ports<a class="headerlink" href="#creating-bridge-and-adding-ports" title="Permanent link">¶</a></h4>
|
|
<p>The example below uses Infix documentation on <a href="../networking/#bridging">creating bridges</a>. </p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-57-1" name="__codelineno-57-1" href="#__codelineno-57-1"></a>admin@example:/><span class="w"> </span>configure
|
|
<a id="__codelineno-57-2" name="__codelineno-57-2" href="#__codelineno-57-2"></a>admin@example:/config/><span class="w"> </span>edit<span class="w"> </span>interface<span class="w"> </span>br0
|
|
<a id="__codelineno-57-3" name="__codelineno-57-3" href="#__codelineno-57-3"></a>admin@example:/config/interface/br0/><span class="w"> </span>end
|
|
<a id="__codelineno-57-4" name="__codelineno-57-4" href="#__codelineno-57-4"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e1<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-5" name="__codelineno-57-5" href="#__codelineno-57-5"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e2<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-6" name="__codelineno-57-6" href="#__codelineno-57-6"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e3<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-7" name="__codelineno-57-7" href="#__codelineno-57-7"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e4<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-8" name="__codelineno-57-8" href="#__codelineno-57-8"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e5<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-9" name="__codelineno-57-9" href="#__codelineno-57-9"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e6<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-10" name="__codelineno-57-10" href="#__codelineno-57-10"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e7<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-11" name="__codelineno-57-11" href="#__codelineno-57-11"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e8<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-12" name="__codelineno-57-12" href="#__codelineno-57-12"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e9<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-13" name="__codelineno-57-13" href="#__codelineno-57-13"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e10<span class="w"> </span>bridge-port<span class="w"> </span>bridge<span class="w"> </span>br0
|
|
<a id="__codelineno-57-14" name="__codelineno-57-14" href="#__codelineno-57-14"></a>admin@example:/config/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>The interface status can be viewed using "show interface" after
|
|
leaving configuration context. If configuration via SSH, first assign
|
|
an IP address to br0 before <em>leaving</em> configuration context, e.g.,
|
|
<code>set interface br0 ipv6 enabled</code> to get auto-configured IPv6
|
|
address. Or skip 'leave' and stay in configuration context until done
|
|
with all sections, including the one on <a href="#ip-on-switch">Add IP on
|
|
Switch</a>.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-58-1" name="__codelineno-58-1" href="#__codelineno-58-1"></a>admin@example:/config/><span class="w"> </span>leave
|
|
<a id="__codelineno-58-2" name="__codelineno-58-2" href="#__codelineno-58-2"></a>admin@example:/><span class="w"> </span>
|
|
<a id="__codelineno-58-3" name="__codelineno-58-3" href="#__codelineno-58-3"></a>admin@example:/><span class="w"> </span>show<span class="w"> </span>interfaces
|
|
<a id="__codelineno-58-4" name="__codelineno-58-4" href="#__codelineno-58-4"></a>INTERFACE<span class="w"> </span>PROTOCOL<span class="w"> </span>STATE<span class="w"> </span>DATA<span class="w"> </span>
|
|
<a id="__codelineno-58-5" name="__codelineno-58-5" href="#__codelineno-58-5"></a>br0<span class="w"> </span>bridge<span class="w"> </span>
|
|
<a id="__codelineno-58-6" name="__codelineno-58-6" href="#__codelineno-58-6"></a>│<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-58-7" name="__codelineno-58-7" href="#__codelineno-58-7"></a>├<span class="w"> </span>e1<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-8" name="__codelineno-58-8" href="#__codelineno-58-8"></a>├<span class="w"> </span>e2<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-9" name="__codelineno-58-9" href="#__codelineno-58-9"></a>├<span class="w"> </span>e3<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-10" name="__codelineno-58-10" href="#__codelineno-58-10"></a>├<span class="w"> </span>e4<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-11" name="__codelineno-58-11" href="#__codelineno-58-11"></a>├<span class="w"> </span>e5<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-12" name="__codelineno-58-12" href="#__codelineno-58-12"></a>├<span class="w"> </span>e6<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-13" name="__codelineno-58-13" href="#__codelineno-58-13"></a>├<span class="w"> </span>e7<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-14" name="__codelineno-58-14" href="#__codelineno-58-14"></a>├<span class="w"> </span>e8<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-15" name="__codelineno-58-15" href="#__codelineno-58-15"></a>├<span class="w"> </span>e9<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>
|
|
<a id="__codelineno-58-16" name="__codelineno-58-16" href="#__codelineno-58-16"></a>└<span class="w"> </span>e10<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>
|
|
<a id="__codelineno-58-17" name="__codelineno-58-17" href="#__codelineno-58-17"></a>lo<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:00:00:00:00:00<span class="w"> </span>
|
|
<a id="__codelineno-58-18" name="__codelineno-58-18" href="#__codelineno-58-18"></a><span class="w"> </span>ipv4<span class="w"> </span><span class="m">127</span>.0.0.1/8<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-58-19" name="__codelineno-58-19" href="#__codelineno-58-19"></a><span class="w"> </span>ipv6<span class="w"> </span>::1/128<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-58-20" name="__codelineno-58-20" href="#__codelineno-58-20"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<h4 id="assign-vlans-to-ports">Assign VLANs to Ports<a class="headerlink" href="#assign-vlans-to-ports" title="Permanent link">¶</a></h4>
|
|
<p>Then configure VLANs as outlined <a href="#port-test-intro">above</a>:
|
|
default VID for ingress (PVID), which is done per port, and egress
|
|
mode (untagged), which is done at the bridge level. See Infix
|
|
<a href="../networking/#vlan-filtering-bridge">documentation for VLAN bridges</a> for more information.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-59-1" name="__codelineno-59-1" href="#__codelineno-59-1"></a>admin@example:/><span class="w"> </span>
|
|
<a id="__codelineno-59-2" name="__codelineno-59-2" href="#__codelineno-59-2"></a>admin@example:/><span class="w"> </span>configure
|
|
<a id="__codelineno-59-3" name="__codelineno-59-3" href="#__codelineno-59-3"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e1<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">10</span>
|
|
<a id="__codelineno-59-4" name="__codelineno-59-4" href="#__codelineno-59-4"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e2<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">10</span>
|
|
<a id="__codelineno-59-5" name="__codelineno-59-5" href="#__codelineno-59-5"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e3<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">20</span>
|
|
<a id="__codelineno-59-6" name="__codelineno-59-6" href="#__codelineno-59-6"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e4<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">20</span>
|
|
<a id="__codelineno-59-7" name="__codelineno-59-7" href="#__codelineno-59-7"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e5<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">30</span>
|
|
<a id="__codelineno-59-8" name="__codelineno-59-8" href="#__codelineno-59-8"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e6<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">30</span>
|
|
<a id="__codelineno-59-9" name="__codelineno-59-9" href="#__codelineno-59-9"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e7<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">40</span>
|
|
<a id="__codelineno-59-10" name="__codelineno-59-10" href="#__codelineno-59-10"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e8<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">40</span>
|
|
<a id="__codelineno-59-11" name="__codelineno-59-11" href="#__codelineno-59-11"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e9<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">50</span>
|
|
<a id="__codelineno-59-12" name="__codelineno-59-12" href="#__codelineno-59-12"></a>admin@example:/config/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>interface<span class="w"> </span>e10<span class="w"> </span>bridge-port<span class="w"> </span>pvid<span class="w"> </span><span class="m">50</span>
|
|
<a id="__codelineno-59-13" name="__codelineno-59-13" href="#__codelineno-59-13"></a>admin@example:/config/><span class="w"> </span>edit<span class="w"> </span>interface<span class="w"> </span>br0
|
|
<a id="__codelineno-59-14" name="__codelineno-59-14" href="#__codelineno-59-14"></a>admin@example:/config/interface/br0/><span class="w"> </span>edit<span class="w"> </span>bridge<span class="w"> </span>vlans
|
|
<a id="__codelineno-59-15" name="__codelineno-59-15" href="#__codelineno-59-15"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">10</span><span class="w"> </span>untagged<span class="w"> </span>e1
|
|
<a id="__codelineno-59-16" name="__codelineno-59-16" href="#__codelineno-59-16"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">10</span><span class="w"> </span>untagged<span class="w"> </span>e2
|
|
<a id="__codelineno-59-17" name="__codelineno-59-17" href="#__codelineno-59-17"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">20</span><span class="w"> </span>untagged<span class="w"> </span>e3
|
|
<a id="__codelineno-59-18" name="__codelineno-59-18" href="#__codelineno-59-18"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">20</span><span class="w"> </span>untagged<span class="w"> </span>e4
|
|
<a id="__codelineno-59-19" name="__codelineno-59-19" href="#__codelineno-59-19"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">30</span><span class="w"> </span>untagged<span class="w"> </span>e5
|
|
<a id="__codelineno-59-20" name="__codelineno-59-20" href="#__codelineno-59-20"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">30</span><span class="w"> </span>untagged<span class="w"> </span>e6
|
|
<a id="__codelineno-59-21" name="__codelineno-59-21" href="#__codelineno-59-21"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">40</span><span class="w"> </span>untagged<span class="w"> </span>e7
|
|
<a id="__codelineno-59-22" name="__codelineno-59-22" href="#__codelineno-59-22"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">40</span><span class="w"> </span>untagged<span class="w"> </span>e8
|
|
<a id="__codelineno-59-23" name="__codelineno-59-23" href="#__codelineno-59-23"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">50</span><span class="w"> </span>untagged<span class="w"> </span>e9
|
|
<a id="__codelineno-59-24" name="__codelineno-59-24" href="#__codelineno-59-24"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">50</span><span class="w"> </span>untagged<span class="w"> </span>e10
|
|
<a id="__codelineno-59-25" name="__codelineno-59-25" href="#__codelineno-59-25"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span>leave
|
|
<a id="__codelineno-59-26" name="__codelineno-59-26" href="#__codelineno-59-26"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>Interface status would now should something like the following</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-60-1" name="__codelineno-60-1" href="#__codelineno-60-1"></a>admin@example:/><span class="w"> </span>show<span class="w"> </span>interfaces<span class="w"> </span>
|
|
<a id="__codelineno-60-2" name="__codelineno-60-2" href="#__codelineno-60-2"></a>INTERFACE<span class="w"> </span>PROTOCOL<span class="w"> </span>STATE<span class="w"> </span>DATA<span class="w"> </span>
|
|
<a id="__codelineno-60-3" name="__codelineno-60-3" href="#__codelineno-60-3"></a>br0<span class="w"> </span>bridge<span class="w"> </span>
|
|
<a id="__codelineno-60-4" name="__codelineno-60-4" href="#__codelineno-60-4"></a>│<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-60-5" name="__codelineno-60-5" href="#__codelineno-60-5"></a>├<span class="w"> </span>e1<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-60-6" name="__codelineno-60-6" href="#__codelineno-60-6"></a>├<span class="w"> </span>e2<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-60-7" name="__codelineno-60-7" href="#__codelineno-60-7"></a>├<span class="w"> </span>e3<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-60-8" name="__codelineno-60-8" href="#__codelineno-60-8"></a>├<span class="w"> </span>e4<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-60-9" name="__codelineno-60-9" href="#__codelineno-60-9"></a>├<span class="w"> </span>e5<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-60-10" name="__codelineno-60-10" href="#__codelineno-60-10"></a>├<span class="w"> </span>e6<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-60-11" name="__codelineno-60-11" href="#__codelineno-60-11"></a>├<span class="w"> </span>e7<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-60-12" name="__codelineno-60-12" href="#__codelineno-60-12"></a>├<span class="w"> </span>e8<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-60-13" name="__codelineno-60-13" href="#__codelineno-60-13"></a>├<span class="w"> </span>e9<span class="w"> </span>bridge<span class="w"> </span>LOWER-DOWN<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-60-14" name="__codelineno-60-14" href="#__codelineno-60-14"></a>└<span class="w"> </span>e10<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-60-15" name="__codelineno-60-15" href="#__codelineno-60-15"></a>lo<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:00:00:00:00:00<span class="w"> </span>
|
|
<a id="__codelineno-60-16" name="__codelineno-60-16" href="#__codelineno-60-16"></a><span class="w"> </span>ipv4<span class="w"> </span><span class="m">127</span>.0.0.1/8<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-60-17" name="__codelineno-60-17" href="#__codelineno-60-17"></a><span class="w"> </span>ipv6<span class="w"> </span>::1/128<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-60-18" name="__codelineno-60-18" href="#__codelineno-60-18"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<h4 id="connect-cables-and-test">Connect Cables and Test<a class="headerlink" href="#connect-cables-and-test" title="Permanent link">¶</a></h4>
|
|
<p>We can now connect the PC to e1 and e10, and the other ports are
|
|
patched according to plan <a href="#port-test-intro">above</a>. We should get
|
|
link up on all ports.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-61-1" name="__codelineno-61-1" href="#__codelineno-61-1"></a>admin@example:/><span class="w"> </span>show<span class="w"> </span>interfaces<span class="w"> </span>
|
|
<a id="__codelineno-61-2" name="__codelineno-61-2" href="#__codelineno-61-2"></a>INTERFACE<span class="w"> </span>PROTOCOL<span class="w"> </span>STATE<span class="w"> </span>DATA<span class="w"> </span>
|
|
<a id="__codelineno-61-3" name="__codelineno-61-3" href="#__codelineno-61-3"></a>br0<span class="w"> </span>bridge<span class="w"> </span>
|
|
<a id="__codelineno-61-4" name="__codelineno-61-4" href="#__codelineno-61-4"></a>│<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-61-5" name="__codelineno-61-5" href="#__codelineno-61-5"></a>├<span class="w"> </span>e1<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-61-6" name="__codelineno-61-6" href="#__codelineno-61-6"></a>├<span class="w"> </span>e2<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-61-7" name="__codelineno-61-7" href="#__codelineno-61-7"></a>├<span class="w"> </span>e3<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-61-8" name="__codelineno-61-8" href="#__codelineno-61-8"></a>├<span class="w"> </span>e4<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-61-9" name="__codelineno-61-9" href="#__codelineno-61-9"></a>├<span class="w"> </span>e5<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-61-10" name="__codelineno-61-10" href="#__codelineno-61-10"></a>├<span class="w"> </span>e6<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-61-11" name="__codelineno-61-11" href="#__codelineno-61-11"></a>├<span class="w"> </span>e7<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-61-12" name="__codelineno-61-12" href="#__codelineno-61-12"></a>├<span class="w"> </span>e8<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-61-13" name="__codelineno-61-13" href="#__codelineno-61-13"></a>├<span class="w"> </span>e9<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-61-14" name="__codelineno-61-14" href="#__codelineno-61-14"></a>└<span class="w"> </span>e10<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-61-15" name="__codelineno-61-15" href="#__codelineno-61-15"></a>lo<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:00:00:00:00:00<span class="w"> </span>
|
|
<a id="__codelineno-61-16" name="__codelineno-61-16" href="#__codelineno-61-16"></a><span class="w"> </span>ipv4<span class="w"> </span><span class="m">127</span>.0.0.1/8<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-61-17" name="__codelineno-61-17" href="#__codelineno-61-17"></a><span class="w"> </span>ipv6<span class="w"> </span>::1/128<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-61-18" name="__codelineno-61-18" href="#__codelineno-61-18"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>Here we use IPv6 ping all hosts (ff02::1) on PC interface eth1 to
|
|
check reachability to the other interface of the PC. </p>
|
|
<blockquote>
|
|
<p>A recommendation is to use network name spaces on PC to ensure
|
|
traffic really goes out to switch, instead of being looped
|
|
internally. Or use two PCs. </p>
|
|
</blockquote>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a>~<span class="w"> </span>$<span class="w"> </span>ping<span class="w"> </span>-L<span class="w"> </span>ff02::1%eth1
|
|
<a id="__codelineno-62-2" name="__codelineno-62-2" href="#__codelineno-62-2"></a>PING<span class="w"> </span>ff02::1%eth1<span class="o">(</span>ff02::1%eth1<span class="o">)</span><span class="w"> </span><span class="m">56</span><span class="w"> </span>data<span class="w"> </span>bytes
|
|
<a id="__codelineno-62-3" name="__codelineno-62-3" href="#__codelineno-62-3"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">1</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.496<span class="w"> </span>ms
|
|
<a id="__codelineno-62-4" name="__codelineno-62-4" href="#__codelineno-62-4"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">2</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.514<span class="w"> </span>ms
|
|
<a id="__codelineno-62-5" name="__codelineno-62-5" href="#__codelineno-62-5"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">3</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.473<span class="w"> </span>ms
|
|
<a id="__codelineno-62-6" name="__codelineno-62-6" href="#__codelineno-62-6"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">4</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.736<span class="w"> </span>ms
|
|
<a id="__codelineno-62-7" name="__codelineno-62-7" href="#__codelineno-62-7"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">5</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.563<span class="w"> </span>ms
|
|
<a id="__codelineno-62-8" name="__codelineno-62-8" href="#__codelineno-62-8"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">6</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.507<span class="w"> </span>ms
|
|
<a id="__codelineno-62-9" name="__codelineno-62-9" href="#__codelineno-62-9"></a>^C
|
|
<a id="__codelineno-62-10" name="__codelineno-62-10" href="#__codelineno-62-10"></a>---<span class="w"> </span>ff02::1%eth1<span class="w"> </span>ping<span class="w"> </span>statistics<span class="w"> </span>---
|
|
<a id="__codelineno-62-11" name="__codelineno-62-11" href="#__codelineno-62-11"></a><span class="m">6</span><span class="w"> </span>packets<span class="w"> </span>transmitted,<span class="w"> </span><span class="m">6</span><span class="w"> </span>received,<span class="w"> </span><span class="m">0</span>%<span class="w"> </span>packet<span class="w"> </span>loss,<span class="w"> </span><span class="nb">time</span><span class="w"> </span>5108ms
|
|
<a id="__codelineno-62-12" name="__codelineno-62-12" href="#__codelineno-62-12"></a>rtt<span class="w"> </span>min/avg/max/mdev<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.473/0.548/0.736/0.088<span class="w"> </span>ms
|
|
<a id="__codelineno-62-13" name="__codelineno-62-13" href="#__codelineno-62-13"></a>~<span class="w"> </span>$
|
|
</code></pre></div>
|
|
<p>We can verify that traffic goes through the switch by disconnecting
|
|
one of the patch cables, e.g., between e4 and e5</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-63-1" name="__codelineno-63-1" href="#__codelineno-63-1"></a>~<span class="w"> </span>$<span class="w"> </span>ping<span class="w"> </span>-L<span class="w"> </span>ff02::1%eth1
|
|
<a id="__codelineno-63-2" name="__codelineno-63-2" href="#__codelineno-63-2"></a>PING<span class="w"> </span>ff02::1%eth1<span class="o">(</span>ff02::1%eth1<span class="o">)</span><span class="w"> </span><span class="m">56</span><span class="w"> </span>data<span class="w"> </span>bytes
|
|
<a id="__codelineno-63-3" name="__codelineno-63-3" href="#__codelineno-63-3"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">1</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.510<span class="w"> </span>ms
|
|
<a id="__codelineno-63-4" name="__codelineno-63-4" href="#__codelineno-63-4"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">2</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.448<span class="w"> </span>ms
|
|
<a id="__codelineno-63-5" name="__codelineno-63-5" href="#__codelineno-63-5"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">3</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.583<span class="w"> </span>ms
|
|
<a id="__codelineno-63-6" name="__codelineno-63-6" href="#__codelineno-63-6"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">4</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.515<span class="w"> </span>ms
|
|
<a id="__codelineno-63-7" name="__codelineno-63-7" href="#__codelineno-63-7"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">5</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.521<span class="w"> </span>ms
|
|
<a id="__codelineno-63-8" name="__codelineno-63-8" href="#__codelineno-63-8"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">6</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.495<span class="w"> </span>ms
|
|
<a id="__codelineno-63-9" name="__codelineno-63-9" href="#__codelineno-63-9"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">7</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.743<span class="w"> </span>ms
|
|
<a id="__codelineno-63-10" name="__codelineno-63-10" href="#__codelineno-63-10"></a>...<span class="w"> </span>Disconnecting<span class="w"> </span>patch<span class="w"> </span>cable,<span class="w"> </span>thus<span class="w"> </span>losing<span class="w"> </span>packets
|
|
<a id="__codelineno-63-11" name="__codelineno-63-11" href="#__codelineno-63-11"></a>...<span class="w"> </span>and<span class="w"> </span>reconnecting<span class="w"> </span>again.<span class="w"> </span>Connectivity<span class="w"> </span>resumes.
|
|
<a id="__codelineno-63-12" name="__codelineno-63-12" href="#__codelineno-63-12"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">16</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.961<span class="w"> </span>ms
|
|
<a id="__codelineno-63-13" name="__codelineno-63-13" href="#__codelineno-63-13"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">17</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.513<span class="w"> </span>ms
|
|
<a id="__codelineno-63-14" name="__codelineno-63-14" href="#__codelineno-63-14"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">18</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.794<span class="w"> </span>ms
|
|
<a id="__codelineno-63-15" name="__codelineno-63-15" href="#__codelineno-63-15"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">19</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.755<span class="w"> </span>ms
|
|
<a id="__codelineno-63-16" name="__codelineno-63-16" href="#__codelineno-63-16"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">20</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.779<span class="w"> </span>ms
|
|
<a id="__codelineno-63-17" name="__codelineno-63-17" href="#__codelineno-63-17"></a>^C
|
|
<a id="__codelineno-63-18" name="__codelineno-63-18" href="#__codelineno-63-18"></a>---<span class="w"> </span>ff02::1%eth1<span class="w"> </span>ping<span class="w"> </span>statistics<span class="w"> </span>---
|
|
<a id="__codelineno-63-19" name="__codelineno-63-19" href="#__codelineno-63-19"></a><span class="m">20</span><span class="w"> </span>packets<span class="w"> </span>transmitted,<span class="w"> </span><span class="m">12</span><span class="w"> </span>received,<span class="w"> </span><span class="m">40</span>%<span class="w"> </span>packet<span class="w"> </span>loss,<span class="w"> </span><span class="nb">time</span><span class="w"> </span>19432ms
|
|
<a id="__codelineno-63-20" name="__codelineno-63-20" href="#__codelineno-63-20"></a>rtt<span class="w"> </span>min/avg/max/mdev<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.448/0.634/0.961/0.156<span class="w"> </span>ms
|
|
<a id="__codelineno-63-21" name="__codelineno-63-21" href="#__codelineno-63-21"></a>~<span class="w"> </span>$<span class="w"> </span>
|
|
</code></pre></div>
|
|
<h4 id="add-ip-address-on-switch"><a id="ip-on-switch"></a> Add IP Address on Switch<a class="headerlink" href="#add-ip-address-on-switch" title="Permanent link">¶</a></h4>
|
|
<p>The configuration so far does not provide a means to connect to the
|
|
switch management via SSH or NETCONF, as the switch has no IP
|
|
address. The example below shows how to add the switch to VLAN 10 (as
|
|
used for ports e1 and e2) and enables IPv6.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-64-1" name="__codelineno-64-1" href="#__codelineno-64-1"></a>admin@example:/config/><span class="w"> </span>edit<span class="w"> </span>interface<span class="w"> </span>vlan10
|
|
<a id="__codelineno-64-2" name="__codelineno-64-2" href="#__codelineno-64-2"></a>admin@example:/config/interface/vlan10/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span>lower-layer-if<span class="w"> </span>br0
|
|
<a id="__codelineno-64-3" name="__codelineno-64-3" href="#__codelineno-64-3"></a>admin@example:/config/interface/vlan10/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>ipv6<span class="w"> </span>enabled<span class="w"> </span>
|
|
<a id="__codelineno-64-4" name="__codelineno-64-4" href="#__codelineno-64-4"></a>admin@example:/config/interface/vlan10/><span class="w"> </span>show
|
|
<a id="__codelineno-64-5" name="__codelineno-64-5" href="#__codelineno-64-5"></a><span class="nb">type</span><span class="w"> </span>vlan<span class="p">;</span>
|
|
<a id="__codelineno-64-6" name="__codelineno-64-6" href="#__codelineno-64-6"></a>ipv6<span class="w"> </span><span class="o">{</span>
|
|
<a id="__codelineno-64-7" name="__codelineno-64-7" href="#__codelineno-64-7"></a><span class="w"> </span>enabled<span class="w"> </span>true<span class="p">;</span>
|
|
<a id="__codelineno-64-8" name="__codelineno-64-8" href="#__codelineno-64-8"></a><span class="o">}</span>
|
|
<a id="__codelineno-64-9" name="__codelineno-64-9" href="#__codelineno-64-9"></a>vlan<span class="w"> </span><span class="o">{</span>
|
|
<a id="__codelineno-64-10" name="__codelineno-64-10" href="#__codelineno-64-10"></a><span class="w"> </span>tag-type<span class="w"> </span>c-vlan<span class="p">;</span>
|
|
<a id="__codelineno-64-11" name="__codelineno-64-11" href="#__codelineno-64-11"></a><span class="w"> </span>id<span class="w"> </span><span class="m">10</span><span class="p">;</span>
|
|
<a id="__codelineno-64-12" name="__codelineno-64-12" href="#__codelineno-64-12"></a><span class="w"> </span>lower-layer-if<span class="w"> </span>br0<span class="p">;</span>
|
|
<a id="__codelineno-64-13" name="__codelineno-64-13" href="#__codelineno-64-13"></a><span class="o">}</span>
|
|
<a id="__codelineno-64-14" name="__codelineno-64-14" href="#__codelineno-64-14"></a>admin@example:/config/interface/vlan10/><span class="w"> </span>
|
|
<a id="__codelineno-64-15" name="__codelineno-64-15" href="#__codelineno-64-15"></a>admin@example:/config/interface/vlan10/><span class="w"> </span>end
|
|
<a id="__codelineno-64-16" name="__codelineno-64-16" href="#__codelineno-64-16"></a>admin@example:/config/><span class="w"> </span>edit<span class="w"> </span>interface<span class="w"> </span>br0<span class="w"> </span>bridge<span class="w"> </span>vlans<span class="w"> </span>
|
|
<a id="__codelineno-64-17" name="__codelineno-64-17" href="#__codelineno-64-17"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span><span class="nb">set</span><span class="w"> </span>vlan<span class="w"> </span><span class="m">10</span><span class="w"> </span>tagged<span class="w"> </span>br0
|
|
<a id="__codelineno-64-18" name="__codelineno-64-18" href="#__codelineno-64-18"></a>admin@example:/config/interface/br0/bridge/vlans/><span class="w"> </span>leave
|
|
<a id="__codelineno-64-19" name="__codelineno-64-19" href="#__codelineno-64-19"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>Interface <em>vlan10</em> with an auto-configured IPv6 address should appear.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-65-1" name="__codelineno-65-1" href="#__codelineno-65-1"></a>admin@example:/><span class="w"> </span>show<span class="w"> </span>interfaces
|
|
<a id="__codelineno-65-2" name="__codelineno-65-2" href="#__codelineno-65-2"></a>INTERFACE<span class="w"> </span>PROTOCOL<span class="w"> </span>STATE<span class="w"> </span>DATA<span class="w"> </span>
|
|
<a id="__codelineno-65-3" name="__codelineno-65-3" href="#__codelineno-65-3"></a>br0<span class="w"> </span>bridge<span class="w"> </span>vlan:10t<span class="w"> </span>
|
|
<a id="__codelineno-65-4" name="__codelineno-65-4" href="#__codelineno-65-4"></a>│<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-65-5" name="__codelineno-65-5" href="#__codelineno-65-5"></a>├<span class="w"> </span>e1<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-65-6" name="__codelineno-65-6" href="#__codelineno-65-6"></a>├<span class="w"> </span>e2<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:10u<span class="w"> </span>pvid:10<span class="w"> </span>
|
|
<a id="__codelineno-65-7" name="__codelineno-65-7" href="#__codelineno-65-7"></a>├<span class="w"> </span>e3<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-65-8" name="__codelineno-65-8" href="#__codelineno-65-8"></a>├<span class="w"> </span>e4<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:20u<span class="w"> </span>pvid:20<span class="w"> </span>
|
|
<a id="__codelineno-65-9" name="__codelineno-65-9" href="#__codelineno-65-9"></a>├<span class="w"> </span>e5<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-65-10" name="__codelineno-65-10" href="#__codelineno-65-10"></a>├<span class="w"> </span>e6<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:30u<span class="w"> </span>pvid:30<span class="w"> </span>
|
|
<a id="__codelineno-65-11" name="__codelineno-65-11" href="#__codelineno-65-11"></a>├<span class="w"> </span>e7<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-65-12" name="__codelineno-65-12" href="#__codelineno-65-12"></a>├<span class="w"> </span>e8<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:40u<span class="w"> </span>pvid:40<span class="w"> </span>
|
|
<a id="__codelineno-65-13" name="__codelineno-65-13" href="#__codelineno-65-13"></a>├<span class="w"> </span>e9<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-65-14" name="__codelineno-65-14" href="#__codelineno-65-14"></a>└<span class="w"> </span>e10<span class="w"> </span>bridge<span class="w"> </span>FORWARDING<span class="w"> </span>vlan:50u<span class="w"> </span>pvid:50<span class="w"> </span>
|
|
<a id="__codelineno-65-15" name="__codelineno-65-15" href="#__codelineno-65-15"></a>lo<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:00:00:00:00:00<span class="w"> </span>
|
|
<a id="__codelineno-65-16" name="__codelineno-65-16" href="#__codelineno-65-16"></a><span class="w"> </span>ipv4<span class="w"> </span><span class="m">127</span>.0.0.1/8<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-65-17" name="__codelineno-65-17" href="#__codelineno-65-17"></a><span class="w"> </span>ipv6<span class="w"> </span>::1/128<span class="w"> </span><span class="o">(</span>static<span class="o">)</span>
|
|
<a id="__codelineno-65-18" name="__codelineno-65-18" href="#__codelineno-65-18"></a>vlan10<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-65-19" name="__codelineno-65-19" href="#__codelineno-65-19"></a>│<span class="w"> </span>ipv6<span class="w"> </span>fe80::0053:00ff:fe06:1101/64<span class="w"> </span><span class="o">(</span>link-layer<span class="o">)</span>
|
|
<a id="__codelineno-65-20" name="__codelineno-65-20" href="#__codelineno-65-20"></a>└<span class="w"> </span>br0<span class="w"> </span>ethernet<span class="w"> </span>UP<span class="w"> </span><span class="m">00</span>:53:00:06:11:01<span class="w"> </span>
|
|
<a id="__codelineno-65-21" name="__codelineno-65-21" href="#__codelineno-65-21"></a>admin@example:/><span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>When pinging "IPv6 all hosts" from the PC, there should be two
|
|
responses for every ping, one from the switch and one from the PC
|
|
attached to e10.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-66-1" name="__codelineno-66-1" href="#__codelineno-66-1"></a>~<span class="w"> </span>$<span class="w"> </span>ping<span class="w"> </span>-L<span class="w"> </span>ff02::1%eth1
|
|
<a id="__codelineno-66-2" name="__codelineno-66-2" href="#__codelineno-66-2"></a>PING<span class="w"> </span>ff02::1%eth1<span class="o">(</span>ff02::1%eth1<span class="o">)</span><span class="w"> </span><span class="m">56</span><span class="w"> </span>data<span class="w"> </span>bytes
|
|
<a id="__codelineno-66-3" name="__codelineno-66-3" href="#__codelineno-66-3"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">1</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.508<span class="w"> </span>ms
|
|
<a id="__codelineno-66-4" name="__codelineno-66-4" href="#__codelineno-66-4"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::0053:00ff:fe06:1101%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">1</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.968<span class="w"> </span>ms
|
|
<a id="__codelineno-66-5" name="__codelineno-66-5" href="#__codelineno-66-5"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">2</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.866<span class="w"> </span>ms
|
|
<a id="__codelineno-66-6" name="__codelineno-66-6" href="#__codelineno-66-6"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::0053:00ff:fe06:1101%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">2</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.867<span class="w"> </span>ms
|
|
<a id="__codelineno-66-7" name="__codelineno-66-7" href="#__codelineno-66-7"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::0053:00ff:fe06:1101%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">3</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.467<span class="w"> </span>ms
|
|
<a id="__codelineno-66-8" name="__codelineno-66-8" href="#__codelineno-66-8"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">3</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.469<span class="w"> </span>ms
|
|
<a id="__codelineno-66-9" name="__codelineno-66-9" href="#__codelineno-66-9"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::488a:a35f:9d41:ac9c%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">4</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.452<span class="w"> </span>ms
|
|
<a id="__codelineno-66-10" name="__codelineno-66-10" href="#__codelineno-66-10"></a><span class="m">64</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>fe80::0053:00ff:fe06:1101%eth1:<span class="w"> </span><span class="nv">icmp_seq</span><span class="o">=</span><span class="m">4</span><span class="w"> </span><span class="nv">ttl</span><span class="o">=</span><span class="m">64</span><span class="w"> </span><span class="nv">time</span><span class="o">=</span><span class="m">0</span>.453<span class="w"> </span>ms
|
|
<a id="__codelineno-66-11" name="__codelineno-66-11" href="#__codelineno-66-11"></a>^C
|
|
<a id="__codelineno-66-12" name="__codelineno-66-12" href="#__codelineno-66-12"></a>---<span class="w"> </span>ff02::1%eth1<span class="w"> </span>ping<span class="w"> </span>statistics<span class="w"> </span>---
|
|
<a id="__codelineno-66-13" name="__codelineno-66-13" href="#__codelineno-66-13"></a><span class="m">4</span><span class="w"> </span>packets<span class="w"> </span>transmitted,<span class="w"> </span><span class="m">4</span><span class="w"> </span>received,<span class="w"> </span>+4<span class="w"> </span>duplicates,<span class="w"> </span><span class="m">0</span>%<span class="w"> </span>packet<span class="w"> </span>loss,<span class="w"> </span><span class="nb">time</span><span class="w"> </span>3031ms
|
|
<a id="__codelineno-66-14" name="__codelineno-66-14" href="#__codelineno-66-14"></a>rtt<span class="w"> </span>min/avg/max/mdev<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.452/0.631/0.968/0.211<span class="w"> </span>ms
|
|
<a id="__codelineno-66-15" name="__codelineno-66-15" href="#__codelineno-66-15"></a>~<span class="w"> </span>$<span class="w"> </span>
|
|
</code></pre></div>
|
|
<p>It should now be possible to access the switch from the PC via SSH (or NETCONF).</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-67-1" name="__codelineno-67-1" href="#__codelineno-67-1"></a>~<span class="w"> </span>$<span class="w"> </span>ssh<span class="w"> </span>admin@fe80::0053:00ff:fe06:1101%eth1
|
|
<a id="__codelineno-67-2" name="__codelineno-67-2" href="#__codelineno-67-2"></a>admin@fe80::0053:00ff:fe06:1101%eth1<span class="s1">'s password: </span>
|
|
<a id="__codelineno-67-3" name="__codelineno-67-3" href="#__codelineno-67-3"></a><span class="s1">.-------.</span>
|
|
<a id="__codelineno-67-4" name="__codelineno-67-4" href="#__codelineno-67-4"></a><span class="s1">| . . | Infix OS — Immutable.Friendly.Secure</span>
|
|
<a id="__codelineno-67-5" name="__codelineno-67-5" href="#__codelineno-67-5"></a><span class="s1">|-. v .-| https://kernelkit.org</span>
|
|
<a id="__codelineno-67-6" name="__codelineno-67-6" href="#__codelineno-67-6"></a><span class="s1">'</span>-<span class="s1">'---'</span>-<span class="s1">'</span>
|
|
<a id="__codelineno-67-7" name="__codelineno-67-7" href="#__codelineno-67-7"></a>
|
|
<a id="__codelineno-67-8" name="__codelineno-67-8" href="#__codelineno-67-8"></a><span class="s1">Run the command '</span>cli<span class="err">'</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>interactive<span class="w"> </span>OAM
|
|
<a id="__codelineno-67-9" name="__codelineno-67-9" href="#__codelineno-67-9"></a>
|
|
<a id="__codelineno-67-10" name="__codelineno-67-10" href="#__codelineno-67-10"></a>admin@example:~$<span class="w"> </span><span class="nb">exit</span>
|
|
<a id="__codelineno-67-11" name="__codelineno-67-11" href="#__codelineno-67-11"></a>~<span class="w"> </span>$
|
|
</code></pre></div>
|
|
<p>See previous sections on <a href="#backup">backup</a> and <a href="#restore">restore</a> of
|
|
the created configuration.</p>
|
|
<div class="footnote">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn:1">
|
|
<p>Press Win-r to bring up the Run dialog, enter <code>cmd.exe</code> and press
|
|
enter. Then type in <code>ipconfig /all</code> to list all interfaces, their
|
|
status, as well as interface index. <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
Copyright © 2025 The KernelKit Authors
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "..", "features": ["toc.follow", "navigation.path", "navigation.instant", "navigation.tracking", "navigation.sections", "search.highlight", "search.share", "content.code.copy", "content.code.annotate", "content.footnote.tooltips"], "search": "../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.56ea9cef.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |