Deployed ce90ad9a to dev with MkDocs 1.6.1 and mike 2.1.3

This commit is contained in:
github-actions[bot]
2026-01-23 10:52:30 +00:00
parent 3855618518
commit 8ed629c41d
47 changed files with 6889 additions and 1606 deletions
+60 -30
View File
@@ -1033,6 +1033,8 @@
@@ -1138,6 +1140,34 @@
<li class="md-nav__item">
<a href="/infix/dev/nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="/infix/dev/hardware/" class="md-nav__link">
@@ -1400,34 +1430,6 @@
<li class="md-nav__item">
<a href="/infix/dev/scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="/infix/dev/scripting-netconf/" class="md-nav__link">
@@ -1436,7 +1438,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1464,7 +1466,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="/infix/dev/scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1054,6 +1054,8 @@
@@ -1445,6 +1447,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1707,34 +1737,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1743,7 +1745,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1771,7 +1773,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+61 -31
View File
@@ -10,7 +10,7 @@
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/branding/">
<link rel="prev" href="../scripting-restconf/">
<link rel="prev" href="../scripting-prod/">
<link rel="next" href="../developers-guide/">
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1178,6 +1178,8 @@
@@ -1283,6 +1285,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1545,34 +1575,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1581,7 +1583,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1609,7 +1611,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1123,6 +1123,8 @@
@@ -1228,6 +1230,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1490,34 +1520,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1526,7 +1528,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1554,7 +1556,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1123,6 +1123,8 @@
@@ -1228,6 +1230,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1490,34 +1520,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1526,7 +1528,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1554,7 +1556,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1123,6 +1123,8 @@
@@ -1228,6 +1230,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1490,34 +1520,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1526,7 +1528,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1554,7 +1556,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1064,6 +1064,8 @@
@@ -1169,6 +1171,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1431,34 +1461,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1467,7 +1469,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1495,7 +1497,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1123,6 +1123,8 @@
@@ -1228,6 +1230,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1490,34 +1520,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1526,7 +1528,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1554,7 +1556,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1151,6 +1151,8 @@
@@ -1256,6 +1258,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1518,34 +1548,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1554,7 +1556,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1582,7 +1584,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1064,6 +1064,8 @@
@@ -1169,6 +1171,34 @@
<li class="md-nav__item">
<a href="../../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../hardware/" class="md-nav__link">
@@ -1431,34 +1461,6 @@
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-netconf/" class="md-nav__link">
@@ -1467,7 +1469,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1495,7 +1497,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1533,6 +1533,8 @@
@@ -1638,6 +1640,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1900,34 +1930,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1936,7 +1938,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1964,7 +1966,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1156,6 +1156,8 @@
@@ -1261,6 +1263,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1523,34 +1553,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1559,7 +1561,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1587,7 +1589,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1201,6 +1201,8 @@
@@ -1306,6 +1308,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1568,34 +1598,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1604,7 +1606,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1632,7 +1634,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1064,6 +1064,8 @@
@@ -1169,6 +1171,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1431,34 +1461,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1467,7 +1469,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1495,7 +1497,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+61 -31
View File
@@ -1384,6 +1384,8 @@
@@ -1489,6 +1491,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1751,34 +1781,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1787,7 +1789,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1815,7 +1817,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
@@ -2674,7 +2704,7 @@ built-in help system can also be useful:
<b>DESCRIPTION</b>
Enable masquerading (SNAT) for traffic matching this policy.<br>
Matching traffic will have their source IP address changed on egress,
using the IP address of the interface the traffic egresses.";<br>
using the IP address of the interface the traffic egresses.<br>
admin@example:/config/firewall/policy/lan-to-dmz/&gt;
</true></code></pre><p></p>
<h3 id="symbolic-names">Symbolic Names<a class="headerlink" href="#symbolic-names" title="Permanent link"></a></h3>
+61 -31
View File
@@ -10,7 +10,7 @@
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/hardware/">
<link rel="prev" href="../system/">
<link rel="prev" href="../nacm/">
<link rel="next" href="../management/">
@@ -1054,6 +1054,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
@@ -1518,34 +1548,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1554,7 +1556,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1582,7 +1584,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1130,6 +1130,8 @@
@@ -1235,6 +1237,34 @@
<li class="md-nav__item">
<a href="nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="hardware/" class="md-nav__link">
@@ -1497,34 +1527,6 @@
<li class="md-nav__item">
<a href="scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="scripting-netconf/" class="md-nav__link">
@@ -1533,7 +1535,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1561,7 +1563,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1050,6 +1050,8 @@
@@ -1155,6 +1157,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1417,34 +1447,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1453,7 +1455,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1481,7 +1483,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1054,6 +1054,8 @@
@@ -1159,6 +1161,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1568,34 +1598,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1604,7 +1606,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1632,7 +1634,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+3261
View File
File diff suppressed because it is too large Load Diff
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1789,6 +1789,8 @@
@@ -1894,6 +1896,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -2156,34 +2186,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -2192,7 +2194,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -2220,7 +2222,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1212,6 +1212,8 @@
@@ -1317,6 +1319,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1579,34 +1609,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1615,7 +1617,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1643,7 +1645,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1196,6 +1196,8 @@
@@ -1301,6 +1303,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1563,34 +1593,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1599,7 +1601,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1627,7 +1629,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+64 -34
View File
@@ -10,7 +10,7 @@
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/scripting-netconf/">
<link rel="prev" href="../scripting-prod/">
<link rel="prev" href="../scripting-sysrepocfg/">
<link rel="next" href="../scripting-restconf/">
@@ -24,7 +24,7 @@
<title>With NETCONF - User's Guide</title>
<title>NETCONF Scripting - User's Guide</title>
@@ -127,7 +127,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
</span>
</div>
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
@@ -1466,7 +1468,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1484,7 +1486,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1993,7 +1995,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+88 -58
View File
@@ -10,10 +10,10 @@
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/scripting-prod/">
<link rel="prev" href="../scripting-sysrepocfg/">
<link rel="prev" href="../scripting-restconf/">
<link rel="next" href="../scripting-netconf/">
<link rel="next" href="../branding/">
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,6 +1449,62 @@
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
<span class="md-ellipsis">
NETCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-restconf/" class="md-nav__link">
<span class="md-ellipsis">
RESTCONF Scripting
</span>
</a>
</li>
@@ -1556,62 +1642,6 @@
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
<span class="md-ellipsis">
With NETCONF
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-restconf/" class="md-nav__link">
<span class="md-ellipsis">
With RESTCONF
</span>
</a>
</li>
</ul>
</nav>
+584 -149
View File
@@ -13,7 +13,7 @@
<link rel="prev" href="../scripting-netconf/">
<link rel="next" href="../branding/">
<link rel="next" href="../scripting-prod/">
@@ -24,7 +24,7 @@
<title>With RESTCONF - User's Guide</title>
<title>RESTCONF Scripting - User's Guide</title>
@@ -127,7 +127,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</div>
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1421,34 +1451,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1457,7 +1459,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1494,7 +1496,7 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
@@ -1512,7 +1514,7 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
@@ -1546,6 +1548,89 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#http-methods-in-restconf" class="md-nav__link">
<span class="md-ellipsis">
HTTP Methods in RESTCONF
</span>
</a>
<nav class="md-nav" aria-label="HTTP Methods in RESTCONF">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#get-read-data" class="md-nav__link">
<span class="md-ellipsis">
GET - Read Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#put-replace-resource" class="md-nav__link">
<span class="md-ellipsis">
PUT - Replace Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#patch-mergeupdate-resource" class="md-nav__link">
<span class="md-ellipsis">
PATCH - Merge/Update Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#post-create-new-resource" class="md-nav__link">
<span class="md-ellipsis">
POST - Create New Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#delete-remove-resource" class="md-nav__link">
<span class="md-ellipsis">
DELETE - Remove Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference" class="md-nav__link">
<span class="md-ellipsis">
Quick Reference
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@@ -1691,6 +1776,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#update-interface-description" class="md-nav__link">
<span class="md-ellipsis">
Update Interface Description
</span>
</a>
</li>
<li class="md-nav__item">
@@ -1923,6 +2019,34 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
</ul>
</nav>
@@ -2288,6 +2412,89 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#http-methods-in-restconf" class="md-nav__link">
<span class="md-ellipsis">
HTTP Methods in RESTCONF
</span>
</a>
<nav class="md-nav" aria-label="HTTP Methods in RESTCONF">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#get-read-data" class="md-nav__link">
<span class="md-ellipsis">
GET - Read Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#put-replace-resource" class="md-nav__link">
<span class="md-ellipsis">
PUT - Replace Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#patch-mergeupdate-resource" class="md-nav__link">
<span class="md-ellipsis">
PATCH - Merge/Update Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#post-create-new-resource" class="md-nav__link">
<span class="md-ellipsis">
POST - Create New Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#delete-remove-resource" class="md-nav__link">
<span class="md-ellipsis">
DELETE - Remove Resource
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference" class="md-nav__link">
<span class="md-ellipsis">
Quick Reference
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@@ -2433,6 +2640,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#update-interface-description" class="md-nav__link">
<span class="md-ellipsis">
Update Interface Description
</span>
</a>
</li>
<li class="md-nav__item">
@@ -2825,99 +3043,316 @@ command-line options or environment variables:</p>
</code></pre></div>
<p>The examples below show both raw <code>curl</code> commands and the equivalent using
<code>curl.sh</code> where applicable.</p>
<h2 id="http-methods-in-restconf">HTTP Methods in RESTCONF<a class="headerlink" href="#http-methods-in-restconf" title="Permanent link"></a></h2>
<p>RESTCONF uses standard HTTP methods to perform different operations on
configuration and operational data. Understanding when to use each method is
crucial for correct and safe operations.</p>
<h3 id="get-read-data">GET - Read Data<a class="headerlink" href="#get-read-data" title="Permanent link"></a></h3>
<p>Retrieve configuration or operational data without making changes.</p>
<p><strong>When to use:</strong></p>
<ul>
<li>Reading current configuration</li>
<li>Querying operational state (interface statistics, routing tables, etc.)</li>
<li>Discovering what exists before making changes</li>
</ul>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Safe operation (no side effects)</li>
<li>Can be repeated without consequences</li>
<li>Works on both configuration and operational datastores</li>
</ul>
<p><strong>Example:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces
</code></pre></div><p></p>
<h3 id="put-replace-resource">PUT - Replace Resource<a class="headerlink" href="#put-replace-resource" title="Permanent link"></a></h3>
<div class="admonition danger">
<p class="admonition-title">Heads-up!</p>
<p>PUT replaces everything - missing fields will be deleted!</p>
</div>
<p>Replace an entire resource with new content.</p>
<p><strong>When to use:</strong></p>
<ul>
<li>Replacing entire datastore (backup/restore scenarios)</li>
<li>Complete reconfiguration of a container</li>
<li>When you want to ensure the resource matches exactly what you provide</li>
</ul>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Replaces all content at the target path</li>
<li>Any existing data not in the PUT request is <strong>removed</strong></li>
<li>Requires complete, valid configuration</li>
<li>Dangerous if you don't include all necessary fields</li>
</ul>
<p><strong>Example:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>PUT<span class="w"> </span>/ietf-system:system<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:system":{"hostname":"newhost","contact":"admin@example.com"}}'</span>
</code></pre></div><p></p>
<h3 id="patch-mergeupdate-resource">PATCH - Merge/Update Resource<a class="headerlink" href="#patch-mergeupdate-resource" title="Permanent link"></a></h3>
<p>Partially update a resource by merging changes with existing data.</p>
<p><strong>When to use:</strong></p>
<ul>
<li>Modifying specific fields while preserving others</li>
<li>Working with path-based NACM permissions</li>
<li>Incremental configuration changes</li>
<li>Safer alternative to PUT for most use cases</li>
</ul>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Merges changes with existing configuration</li>
<li>Only specified fields are modified</li>
<li>Unspecified fields remain unchanged</li>
<li>Works with partial data structures</li>
<li>NACM-friendly (respects path-based permissions)</li>
</ul>
<p><strong>Example:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>PATCH<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-interfaces:interfaces":{"interface":[{"name":"e0","description":"WAN"}]}}'</span>
</code></pre></div><p></p>
<div class="admonition tip">
<p class="admonition-title">Best practice</p>
<p>Use PATCH instead of PUT for most configuration updates.</p>
</div>
<h3 id="post-create-new-resource">POST - Create New Resource<a class="headerlink" href="#post-create-new-resource" title="Permanent link"></a></h3>
<p>Create a new resource within a collection or invoke an RPC.</p>
<p><strong>When to use:</strong></p>
<ul>
<li>Adding new list entries (interfaces, users, routes, etc.)</li>
<li>Creating resources at specific paths</li>
<li>Invoking RPC operations (reboot, factory-reset, etc.)</li>
</ul>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Creates new resources</li>
<li>For lists: adds a new element</li>
<li>For RPCs: executes the operation</li>
<li>Returns error if resource already exists (for configuration)</li>
</ul>
<p><strong>Example - Add IP address:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>POST<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"prefix-length": 32}'</span>
</code></pre></div><p></p>
<p><strong>Example - Invoke RPC:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-system:system-restart
</code></pre></div><p></p>
<h3 id="delete-remove-resource">DELETE - Remove Resource<a class="headerlink" href="#delete-remove-resource" title="Permanent link"></a></h3>
<p>Delete a resource or configuration element.</p>
<p><strong>When to use:</strong></p>
<ul>
<li>Removing interfaces, routes, users, etc.</li>
<li>Deleting specific configuration items</li>
<li>Cleaning up unwanted configuration</li>
</ul>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Removes the resource completely</li>
<li>Cannot be undone (except by reconfiguration)</li>
<li>Returns error if resource doesn't exist</li>
</ul>
<p><strong>Example:</strong>
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>DELETE<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254
</code></pre></div><p></p>
<h3 id="quick-reference">Quick Reference<a class="headerlink" href="#quick-reference" title="Permanent link"></a></h3>
<table>
<thead>
<tr>
<th><strong>Method</strong></th>
<th><strong>Use Case</strong></th>
<th><strong>Safe?</strong></th>
<th><strong>Idempotent?</strong></th>
<th><strong>NACM Impact</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>GET</td>
<td>Read data</td>
<td></td>
<td></td>
<td>Read permissions</td>
</tr>
<tr>
<td>PUT</td>
<td>Replace entire resource</td>
<td></td>
<td></td>
<td>Full write access needed</td>
</tr>
<tr>
<td>PATCH</td>
<td>Merge/update fields</td>
<td></td>
<td></td>
<td>Path-specific write</td>
</tr>
<tr>
<td>POST</td>
<td>Create new/invoke RPC</td>
<td></td>
<td></td>
<td>Create/exec permissions</td>
</tr>
<tr>
<td>DELETE</td>
<td>Remove resource</td>
<td></td>
<td></td>
<td>Delete permissions</td>
</tr>
</tbody>
</table>
<p><strong>Key takeaways:</strong></p>
<ul>
<li><strong>Use PATCH for updates</strong> - Safer than PUT, works with NACM</li>
<li><strong>Use PUT sparingly</strong> - Only when you need complete replacement</li>
<li><strong>GET is always safe</strong> - Read as much as you need</li>
<li><strong>POST for creation/RPCs</strong> - Creating new items or executing operations</li>
<li><strong>DELETE with care</strong> - Cannot be undone</li>
</ul>
<h2 id="discovery-common-patterns">Discovery &amp; Common Patterns<a class="headerlink" href="#discovery-common-patterns" title="Permanent link"></a></h2>
<p>Before working with specific configuration items, you often need to discover
what exists on the system. This section shows common discovery patterns and
practical workflows.</p>
<h3 id="discovering-available-interfaces">Discovering Available Interfaces<a class="headerlink" href="#discovering-available-interfaces" title="Permanent link"></a></h3>
<p><strong>List all interface names:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][].name'</span>
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>lo
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>e0
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>e1
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][].name'</span>
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>lo
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>e0
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>e1
</code></pre></div>
<p>This is essential for automation - interface names vary by platform (eth0,
e1, enp0s3, etc.), so scripts should discover them rather than hardcode.</p>
<h3 id="get-api-capabilities">Get API Capabilities<a class="headerlink" href="#get-api-capabilities" title="Permanent link"></a></h3>
<p>Discover what YANG modules are available:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span>https://example.local/restconf/data/ietf-yang-library:yang-library
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span>https://example.local/restconf/data/ietf-yang-library:yang-library
</code></pre></div>
<p>This returns all supported YANG modules, revisions, and features.</p>
<h3 id="get-entire-running-configuration">Get Entire Running Configuration<a class="headerlink" href="#get-entire-running-configuration" title="Permanent link"></a></h3>
<p>Useful for exploration or backup:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/<span class="w"> </span>-o<span class="w"> </span>backup.json
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/<span class="w"> </span>-o<span class="w"> </span>backup.json
</code></pre></div>
<h3 id="common-workflow-patterns">Common Workflow Patterns<a class="headerlink" href="#common-workflow-patterns" title="Permanent link"></a></h3>
<h4 id="pattern-1-find-interface-by-ip-address">Pattern 1: Find interface by IP address<a class="headerlink" href="#pattern-1-find-interface-by-ip-address" title="Permanent link"></a></h4>
<p>Get all interfaces with IPs and search:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | select(.["ietf-ip:ipv4"]["address"][]?.ip == "192.168.1.100") | .name'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | select(.["ietf-ip:ipv4"]["address"][]?.ip == "192.168.1.100") | .name'</span>
</code></pre></div>
<h4 id="pattern-2-list-all-interfaces-that-are-down">Pattern 2: List all interfaces that are down<a class="headerlink" href="#pattern-2-list-all-interfaces-that-are-down" title="Permanent link"></a></h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | select(.["oper-status"] == "down") | .name'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | select(.["oper-status"] == "down") | .name'</span>
</code></pre></div>
<h4 id="pattern-3-get-statistics-for-all-interfaces">Pattern 3: Get statistics for all interfaces<a class="headerlink" href="#pattern-3-get-statistics-for-all-interfaces" title="Permanent link"></a></h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | "\(.name): RX \(.statistics["in-octets"]) TX \(.statistics["out-octets"])"'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][] | "\(.name): RX \(.statistics["in-octets"]) TX \(.statistics["out-octets"])"'</span>
</code></pre></div>
<p>Output:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>lo: RX 29320 TX 29320
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>e0: RX 1847392 TX 892341
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>e1: RX 0 TX 0
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>lo: RX 29320 TX 29320
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>e0: RX 1847392 TX 892341
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>e1: RX 0 TX 0
</code></pre></div>
<h4 id="pattern-4-check-if-interface-exists-before-configuring">Pattern 4: Check if interface exists before configuring<a class="headerlink" href="#pattern-4-check-if-interface-exists-before-configuring" title="Permanent link"></a></h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>~$<span class="w"> </span><span class="k">if</span><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>eth0<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-q<span class="w"> </span><span class="s2">"ietf-interfaces:interface"</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Interface eth0 exists"</span>
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="k">else</span>
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Interface eth0 not found"</span>
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="w"> </span><span class="k">fi</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>~$<span class="w"> </span><span class="k">if</span><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>eth0<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-q<span class="w"> </span><span class="s2">"ietf-interfaces:interface"</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Interface eth0 exists"</span>
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span><span class="k">else</span>
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Interface eth0 not found"</span>
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="w"> </span><span class="k">fi</span>
</code></pre></div>
<h2 id="configuration-operations">Configuration Operations<a class="headerlink" href="#configuration-operations" title="Permanent link"></a></h2>
<h3 id="read-hostname">Read Hostname<a class="headerlink" href="#read-hostname" title="Permanent link"></a></h3>
<p>Example of fetching JSON configuration data:</p>
<p><strong>Using curl directly:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span>https://example.local/restconf/data/ietf-system:system/hostname
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="o">{</span>
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="w"> </span><span class="s2">"ietf-system:system"</span>:<span class="w"> </span><span class="o">{</span>
<a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a><span class="w"> </span><span class="s2">"hostname"</span>:<span class="w"> </span><span class="s2">"foo"</span>
<a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a><span class="w"> </span><span class="o">}</span>
<a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a><span class="o">}</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="w"> </span>https://example.local/restconf/data/ietf-system:system/hostname
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a><span class="o">{</span>
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a><span class="w"> </span><span class="s2">"ietf-system:system"</span>:<span class="w"> </span><span class="o">{</span>
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a><span class="w"> </span><span class="s2">"hostname"</span>:<span class="w"> </span><span class="s2">"foo"</span>
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a><span class="w"> </span><span class="o">}</span>
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a><span class="o">}</span>
</code></pre></div>
<p><strong>Using curl.sh:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-system:system/hostname
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="o">{</span>
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="w"> </span><span class="s2">"ietf-system:system"</span>:<span class="w"> </span><span class="o">{</span>
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="w"> </span><span class="s2">"hostname"</span>:<span class="w"> </span><span class="s2">"foo"</span>
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="w"> </span><span class="o">}</span>
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a><span class="o">}</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-system:system/hostname
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="o">{</span>
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="w"> </span><span class="s2">"ietf-system:system"</span>:<span class="w"> </span><span class="o">{</span>
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="w"> </span><span class="s2">"hostname"</span>:<span class="w"> </span><span class="s2">"foo"</span>
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="w"> </span><span class="o">}</span>
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="o">}</span>
</code></pre></div>
<h3 id="set-hostname">Set Hostname<a class="headerlink" href="#set-hostname" title="Permanent link"></a></h3>
<p>Example of updating configuration with inline JSON data:</p>
<p><strong>Using curl directly:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PATCH<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:system":{"hostname":"bar"}}'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="w"> </span>https://example.local/restconf/data/ietf-system:system
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PATCH<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:system":{"hostname":"bar"}}'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="w"> </span>https://example.local/restconf/data/ietf-system:system
</code></pre></div>
<p><strong>Using curl.sh:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>PATCH<span class="w"> </span>/ietf-system:system<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:system":{"hostname":"bar"}}'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>PATCH<span class="w"> </span>/ietf-system:system<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:system":{"hostname":"bar"}}'</span>
</code></pre></div>
<h3 id="update-interface-description">Update Interface Description<a class="headerlink" href="#update-interface-description" title="Permanent link"></a></h3>
<p>PATCH allows you to modify specific parts of the configuration without
replacing the entire container. This is particularly useful when working
with NACM (Network Access Control Model) permissions that grant access to
specific paths.</p>
<p><strong>Why use PATCH instead of PUT:</strong></p>
<ul>
<li><strong>Partial updates</strong>: Only changes specified fields, preserves others</li>
<li><strong>NACM-friendly</strong>: Works with path-based access control rules</li>
<li><strong>Safer</strong>: Reduces risk of accidentally removing unrelated configuration</li>
</ul>
<p><strong>Example - Modify an interface description:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PATCH<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-interfaces:interfaces":{"interface":[{"name":"e0","description":"WAN Port"}]}}'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="w"> </span>https://example.local/restconf/data/ietf-interfaces:interfaces
</code></pre></div>
<p><strong>Using curl.sh:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>PATCH<span class="w"> </span>/ietf-interfaces:interfaces<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-interfaces:interfaces":{"interface":[{"name":"e0","description":"WAN Port"}]}}'</span>
</code></pre></div>
<p><strong>Formatted for readability:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PATCH<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{</span>
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="s1"> "ietf-interfaces:interfaces": {</span>
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="s1"> "interface": [</span>
<a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="s1"> {</span>
<a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a><span class="s1"> "name": "e0",</span>
<a id="__codelineno-23-8" name="__codelineno-23-8" href="#__codelineno-23-8"></a><span class="s1"> "description": "WAN Port"</span>
<a id="__codelineno-23-9" name="__codelineno-23-9" href="#__codelineno-23-9"></a><span class="s1"> }</span>
<a id="__codelineno-23-10" name="__codelineno-23-10" href="#__codelineno-23-10"></a><span class="s1"> ]</span>
<a id="__codelineno-23-11" name="__codelineno-23-11" href="#__codelineno-23-11"></a><span class="s1"> }</span>
<a id="__codelineno-23-12" name="__codelineno-23-12" href="#__codelineno-23-12"></a><span class="s1"> }'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-23-13" name="__codelineno-23-13" href="#__codelineno-23-13"></a><span class="w"> </span>https://example.local/restconf/data/ietf-interfaces:interfaces
</code></pre></div>
<p><strong>Key points:</strong></p>
<ul>
<li>PATCH URL targets the <strong>container</strong> (<code>/interfaces</code>), not a specific interface</li>
<li>JSON body includes the full structure with the interface array</li>
<li>Only specified fields are modified; other interface settings remain unchanged</li>
<li>The <code>name</code> field identifies which interface to update</li>
</ul>
<p><strong>Verify the change:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>e0<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.["ietf-interfaces:interface"][0].description'</span>
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="s2">"WAN Port"</span>
</code></pre></div>
<h3 id="add-ip-address-to-interface">Add IP Address to Interface<a class="headerlink" href="#add-ip-address-to-interface" title="Permanent link"></a></h3>
<p>Add an IP address to the loopback interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>POST<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{ "prefix-length": 32 }'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>POST<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{ "prefix-length": 32 }'</span>
</code></pre></div>
<h3 id="delete-ip-address-from-interface">Delete IP Address from Interface<a class="headerlink" href="#delete-ip-address-from-interface" title="Permanent link"></a></h3>
<p>Remove an IP address from the loopback interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>DELETE<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>DELETE<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254
</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
@@ -2926,129 +3361,129 @@ startup datastore.</p>
<p>To save running-config to startup-config, fetch running to a local file
and then update startup with it:</p>
<p><strong>Using curl directly:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span>-o<span class="w"> </span>running-config.json<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="w"> </span>https://example.local/restconf/ds/ietf-datastores:running
<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>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PUT<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span>-d<span class="w"> </span>@running-config.json<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a><span class="w"> </span>https://example.local/restconf/ds/ietf-datastores:startup
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>GET<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span>-o<span class="w"> </span>running-config.json<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a><span class="w"> </span>https://example.local/restconf/ds/ietf-datastores:running
<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>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>PUT<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span>-d<span class="w"> </span>@running-config.json<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type: application/yang-data+json'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a><span class="w"> </span>https://example.local/restconf/ds/ietf-datastores:startup
</code></pre></div>
<p><strong>Using curl.sh:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/<span class="w"> </span>-o<span class="w"> </span>running-config.json
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>startup<span class="w"> </span>PUT<span class="w"> </span>/<span class="w"> </span>-d<span class="w"> </span>@running-config.json
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/<span class="w"> </span>-o<span class="w"> </span>running-config.json
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>startup<span class="w"> </span>PUT<span class="w"> </span>/<span class="w"> </span>-d<span class="w"> </span>@running-config.json
</code></pre></div>
<h2 id="operational-data">Operational Data<a class="headerlink" href="#operational-data" title="Permanent link"></a></h2>
<h3 id="read-interface-configuration">Read Interface Configuration<a class="headerlink" href="#read-interface-configuration" title="Permanent link"></a></h3>
<p>Get the running configuration for the loopback interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
</code></pre></div>
<h3 id="read-interface-operational-state">Read Interface Operational State<a class="headerlink" href="#read-interface-operational-state" title="Permanent link"></a></h3>
<p>Get operational data (state, statistics, etc.) for an interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
</code></pre></div>
<p>This includes administrative and operational state, MAC address, MTU, and
statistics counters.</p>
<h3 id="read-interface-statistics">Read Interface Statistics<a class="headerlink" href="#read-interface-statistics" title="Permanent link"></a></h3>
<p>Extract specific statistics using <code>jq</code>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>eth0<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][0]["statistics"]["in-octets"]'</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>eth0<span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][0]["statistics"]["in-octets"]'</span>
</code></pre></div>
<h3 id="list-all-interfaces">List All Interfaces<a class="headerlink" href="#list-all-interfaces" title="Permanent link"></a></h3>
<p>Get operational data for all interfaces:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces
</code></pre></div>
<h3 id="read-routing-table">Read Routing Table<a class="headerlink" href="#read-routing-table" title="Permanent link"></a></h3>
<p>Get the IPv4 routing table:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/ribs/rib<span class="o">=</span>ipv4-default
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/ribs/rib<span class="o">=</span>ipv4-default
</code></pre></div>
<h3 id="read-ospf-state">Read OSPF State<a class="headerlink" href="#read-ospf-state" title="Permanent link"></a></h3>
<p>Get OSPF operational data (neighbors, routes, etc.):</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/control-plane-protocols/control-plane-protocol<span class="o">=</span>ietf-ospf:ospfv2,default
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/control-plane-protocols/control-plane-protocol<span class="o">=</span>ietf-ospf:ospfv2,default
</code></pre></div>
<p>Or get just the neighbor information:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/control-plane-protocols/control-plane-protocol<span class="o">=</span>ietf-ospf:ospfv2,default/ietf-ospf:ospf/areas/area<span class="o">=</span><span class="m">0</span>.0.0.0/interfaces
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>~$<span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span>example.local<span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-routing:routing/control-plane-protocols/control-plane-protocol<span class="o">=</span>ietf-ospf:ospfv2,default/ietf-ospf:ospf/areas/area<span class="o">=</span><span class="m">0</span>.0.0.0/interfaces
</code></pre></div>
<h2 id="system-operations-rpcs">System Operations (RPCs)<a class="headerlink" href="#system-operations-rpcs" title="Permanent link"></a></h2>
<h3 id="factory-reset">Factory Reset<a class="headerlink" href="#factory-reset" title="Permanent link"></a></h3>
<p>Reset the system to factory defaults:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-factory-default:factory-reset
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a>curl:<span class="w"> </span><span class="o">(</span><span class="m">56</span><span class="o">)</span><span class="w"> </span>OpenSSL<span class="w"> </span>SSL_read:<span class="w"> </span>error:0A000126:SSL<span class="w"> </span>routines::unexpected<span class="w"> </span>eof<span class="w"> </span><span class="k">while</span><span class="w"> </span>reading,<span class="w"> </span>errno<span class="w"> </span><span class="m">0</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-factory-default:factory-reset
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a>curl:<span class="w"> </span><span class="o">(</span><span class="m">56</span><span class="o">)</span><span class="w"> </span>OpenSSL<span class="w"> </span>SSL_read:<span class="w"> </span>error:0A000126:SSL<span class="w"> </span>routines::unexpected<span class="w"> </span>eof<span class="w"> </span><span class="k">while</span><span class="w"> </span>reading,<span class="w"> </span>errno<span class="w"> </span><span class="m">0</span>
</code></pre></div>
<blockquote>
<p><strong>Note:</strong> The connection error is expected - the device resets immediately.</p>
</blockquote>
<h3 id="system-reboot">System Reboot<a class="headerlink" href="#system-reboot" title="Permanent link"></a></h3>
<p>Reboot the system:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-system:system-restart
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-system:system-restart
</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>Example of an RPC that takes input/arguments:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>~$<span class="w"> </span>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:input": {"current-datetime": "2024-04-17T13:48:02-01:00"}}'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-system:set-current-datetime
<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>curl<span class="w"> </span>-kX<span class="w"> </span>POST<span class="w"> </span>-u<span class="w"> </span>admin:admin<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type: application/yang-data+json"</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"ietf-system:input": {"current-datetime": "2024-04-17T13:48:02-01:00"}}'</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a><span class="w"> </span>https://example.local/restconf/operations/ietf-system:set-current-datetime
</code></pre></div>
<p>Verify the change with SSH:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>~$<span class="w"> </span>ssh<span class="w"> </span>admin@example.local<span class="w"> </span><span class="s1">'date'</span>
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>Wed<span class="w"> </span>Apr<span class="w"> </span><span class="m">17</span><span class="w"> </span><span class="m">14</span>:48:12<span class="w"> </span>UTC<span class="w"> </span><span class="m">2024</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a>~$<span class="w"> </span>ssh<span class="w"> </span>admin@example.local<span class="w"> </span><span class="s1">'date'</span>
<a id="__codelineno-39-2" name="__codelineno-39-2" href="#__codelineno-39-2"></a>Wed<span class="w"> </span>Apr<span class="w"> </span><span class="m">17</span><span class="w"> </span><span class="m">14</span>:48:12<span class="w"> </span>UTC<span class="w"> </span><span class="m">2024</span>
</code></pre></div>
<h2 id="advanced-examples">Advanced Examples<a class="headerlink" href="#advanced-examples" title="Permanent link"></a></h2>
<h3 id="makefile-for-common-operations">Makefile for Common Operations<a class="headerlink" href="#makefile-for-common-operations" title="Permanent link"></a></h3>
<p>Create a <code>Makefile</code> to simplify common operations:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="nv">HOST</span><span class="w"> </span><span class="o">?=</span><span class="w"> </span>infix.local
<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><span class="nf">lo-running</span><span class="o">:</span>
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<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><span class="nf">lo-operational</span><span class="o">:</span>
<a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<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><span class="nf">lo-add-ip</span><span class="o">:</span>
<a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>POST<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-30-12" name="__codelineno-30-12" href="#__codelineno-30-12"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{ "prefix-length": 32 }'</span>
<a id="__codelineno-30-13" name="__codelineno-30-13" href="#__codelineno-30-13"></a>
<a id="__codelineno-30-14" name="__codelineno-30-14" href="#__codelineno-30-14"></a><span class="nf">lo-del-ip</span><span class="o">:</span>
<a id="__codelineno-30-15" name="__codelineno-30-15" href="#__codelineno-30-15"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>DELETE<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-30-16" name="__codelineno-30-16" href="#__codelineno-30-16"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254
<a id="__codelineno-30-17" name="__codelineno-30-17" href="#__codelineno-30-17"></a>
<a id="__codelineno-30-18" name="__codelineno-30-18" href="#__codelineno-30-18"></a><span class="nf">%-stats</span><span class="o">:</span>
<a id="__codelineno-30-19" name="__codelineno-30-19" href="#__codelineno-30-19"></a><span class="w"> </span>@./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span><span class="nv">$*</span><span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-30-20" name="__codelineno-30-20" href="#__codelineno-30-20"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][0]["statistics"]["in-octets"]'</span>
<a id="__codelineno-30-21" name="__codelineno-30-21" href="#__codelineno-30-21"></a>
<a id="__codelineno-30-22" name="__codelineno-30-22" href="#__codelineno-30-22"></a><span class="nf">%-monitor</span><span class="o">:</span>
<a id="__codelineno-30-23" name="__codelineno-30-23" href="#__codelineno-30-23"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span>sleep<span class="w"> </span><span class="m">0</span>.2<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>make<span class="w"> </span>-s<span class="w"> </span><span class="nv">HOST</span><span class="o">=</span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span><span class="nv">$*</span>-stats<span class="p">;</span><span class="w"> </span><span class="k">done</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-30-24" name="__codelineno-30-24" href="#__codelineno-30-24"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>ttyplot<span class="w"> </span>-t<span class="w"> </span><span class="s2">"</span><span class="k">$(</span>HOST<span class="k">)</span><span class="s2">:</span><span class="nv">$*</span><span class="s2"> in-octets"</span><span class="w"> </span>-r
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="nv">HOST</span><span class="w"> </span><span class="o">?=</span><span class="w"> </span>infix.local
<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><span class="nf">lo-running</span><span class="o">:</span>
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<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><span class="nf">lo-operational</span><span class="o">:</span>
<a id="__codelineno-40-7" name="__codelineno-40-7" href="#__codelineno-40-7"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo
<a id="__codelineno-40-8" name="__codelineno-40-8" href="#__codelineno-40-8"></a>
<a id="__codelineno-40-9" name="__codelineno-40-9" href="#__codelineno-40-9"></a><span class="nf">lo-add-ip</span><span class="o">:</span>
<a id="__codelineno-40-10" name="__codelineno-40-10" href="#__codelineno-40-10"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>POST<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-40-11" name="__codelineno-40-11" href="#__codelineno-40-11"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-40-12" name="__codelineno-40-12" href="#__codelineno-40-12"></a><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{ "prefix-length": 32 }'</span>
<a id="__codelineno-40-13" name="__codelineno-40-13" href="#__codelineno-40-13"></a>
<a id="__codelineno-40-14" name="__codelineno-40-14" href="#__codelineno-40-14"></a><span class="nf">lo-del-ip</span><span class="o">:</span>
<a id="__codelineno-40-15" name="__codelineno-40-15" href="#__codelineno-40-15"></a><span class="w"> </span>./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>DELETE<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-40-16" name="__codelineno-40-16" href="#__codelineno-40-16"></a><span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span>lo/ietf-ip:ipv4/address<span class="o">=</span><span class="m">192</span>.168.254.254
<a id="__codelineno-40-17" name="__codelineno-40-17" href="#__codelineno-40-17"></a>
<a id="__codelineno-40-18" name="__codelineno-40-18" href="#__codelineno-40-18"></a><span class="nf">%-stats</span><span class="o">:</span>
<a id="__codelineno-40-19" name="__codelineno-40-19" href="#__codelineno-40-19"></a><span class="w"> </span>@./curl.sh<span class="w"> </span>-h<span class="w"> </span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span>-d<span class="w"> </span>operational<span class="w"> </span>GET<span class="w"> </span>/ietf-interfaces:interfaces/interface<span class="o">=</span><span class="nv">$*</span><span class="w"> </span><span class="m">2</span>&gt;/dev/null<span class="w"> </span><span class="se">\</span>
<a id="__codelineno-40-20" name="__codelineno-40-20" href="#__codelineno-40-20"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span>-r<span class="w"> </span><span class="s1">'.["ietf-interfaces:interfaces"]["interface"][0]["statistics"]["in-octets"]'</span>
<a id="__codelineno-40-21" name="__codelineno-40-21" href="#__codelineno-40-21"></a>
<a id="__codelineno-40-22" name="__codelineno-40-22" href="#__codelineno-40-22"></a><span class="nf">%-monitor</span><span class="o">:</span>
<a id="__codelineno-40-23" name="__codelineno-40-23" href="#__codelineno-40-23"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span>sleep<span class="w"> </span><span class="m">0</span>.2<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>make<span class="w"> </span>-s<span class="w"> </span><span class="nv">HOST</span><span class="o">=</span><span class="k">$(</span>HOST<span class="k">)</span><span class="w"> </span><span class="nv">$*</span>-stats<span class="p">;</span><span class="w"> </span><span class="k">done</span><span class="w"> </span><span class="se">\</span>
<a id="__codelineno-40-24" name="__codelineno-40-24" href="#__codelineno-40-24"></a><span class="w"> </span><span class="p">|</span><span class="w"> </span>ttyplot<span class="w"> </span>-t<span class="w"> </span><span class="s2">"</span><span class="k">$(</span>HOST<span class="k">)</span><span class="s2">:</span><span class="nv">$*</span><span class="s2"> in-octets"</span><span class="w"> </span>-r
</code></pre></div>
<p>Usage examples:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="c1"># Get loopback operational state</span>
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a>~$<span class="w"> </span>make<span class="w"> </span>lo-operational
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a>
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="c1"># Add IP to loopback</span>
<a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a>~$<span class="w"> </span>make<span class="w"> </span>lo-add-ip
<a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a>
<a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a><span class="c1"># Get eth0 statistics</span>
<a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-stats
<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><span class="c1"># Monitor eth0 traffic in real-time (requires ttyplot)</span>
<a id="__codelineno-31-11" name="__codelineno-31-11" href="#__codelineno-31-11"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-monitor
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="c1"># Get loopback operational state</span>
<a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a>~$<span class="w"> </span>make<span class="w"> </span>lo-operational
<a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a>
<a id="__codelineno-41-4" name="__codelineno-41-4" href="#__codelineno-41-4"></a><span class="c1"># Add IP to loopback</span>
<a id="__codelineno-41-5" name="__codelineno-41-5" href="#__codelineno-41-5"></a>~$<span class="w"> </span>make<span class="w"> </span>lo-add-ip
<a id="__codelineno-41-6" name="__codelineno-41-6" href="#__codelineno-41-6"></a>
<a id="__codelineno-41-7" name="__codelineno-41-7" href="#__codelineno-41-7"></a><span class="c1"># Get eth0 statistics</span>
<a id="__codelineno-41-8" name="__codelineno-41-8" href="#__codelineno-41-8"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-stats
<a id="__codelineno-41-9" name="__codelineno-41-9" href="#__codelineno-41-9"></a>
<a id="__codelineno-41-10" name="__codelineno-41-10" href="#__codelineno-41-10"></a><span class="c1"># Monitor eth0 traffic in real-time (requires ttyplot)</span>
<a id="__codelineno-41-11" name="__codelineno-41-11" href="#__codelineno-41-11"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-monitor
</code></pre></div>
<p>You can override the host:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>~$<span class="w"> </span>make<span class="w"> </span><span class="nv">HOST</span><span class="o">=</span><span class="m">192</span>.168.1.10<span class="w"> </span>lo-operational
<div class="highlight"><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a>~$<span class="w"> </span>make<span class="w"> </span><span class="nv">HOST</span><span class="o">=</span><span class="m">192</span>.168.1.10<span class="w"> </span>lo-operational
</code></pre></div>
<h3 id="monitoring-interface-traffic">Monitoring Interface Traffic<a class="headerlink" href="#monitoring-interface-traffic" title="Permanent link"></a></h3>
<p>The <code>%-monitor</code> target demonstrates real-time monitoring by polling
interface statistics and piping to <code>ttyplot</code> for visualization. Install
<code>ttyplot</code> with:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>~$<span class="w"> </span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>ttyplot
<div class="highlight"><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a>~$<span class="w"> </span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>ttyplot
</code></pre></div>
<p>Then monitor any interface:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-monitor
<div class="highlight"><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a>~$<span class="w"> </span>make<span class="w"> </span>eth0-monitor
</code></pre></div>
<p>This creates a live ASCII graph of incoming octets on <code>eth0</code>.</p>
<h2 id="references">References<a class="headerlink" href="#references" title="Permanent link"></a></h2>
+67 -35
View File
@@ -13,7 +13,7 @@
<link rel="prev" href="../scripting/">
<link rel="next" href="../scripting-prod/">
<link rel="next" href="../scripting-netconf/">
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1589,34 +1619,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1625,7 +1627,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1653,7 +1655,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
@@ -2212,10 +2242,12 @@
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method is a legacy "simple and human-friendly" way to manage the
system. These days we strongly recommend using <a href="../scripting-restconf/">RESTCONF</a> instead.</p>
<div class="admonition warning">
<p class="admonition-title">Deprecated - Use RESTCONF Instead</p>
<p>This legacy interface requires elevated privileges (<code>sudo sysrepocfg</code>) even
for admin users and is no longer intended for production use. All scripting
should use <a href="../scripting-restconf/">RESTCONF</a> as the standard management interface. There is
however an NACM compliant replacement <code>copy</code> that can be used without sudo.</p>
</div>
<h1 id="legacy-scripting">Legacy Scripting<a class="headerlink" href="#legacy-scripting" title="Permanent link"></a></h1>
<p>Although not the primary interface for Infix, it is possible to interact
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1628,34 +1658,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1664,7 +1666,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1692,7 +1694,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
File diff suppressed because one or more lines are too long
+46 -42
View File
@@ -2,170 +2,174 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://kernelkit.github.io/infix/dev/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/boot/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/branding/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/container/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/developers-guide/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/dhcp/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/discovery/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/eth-counters/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/firewall/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/hardware/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/license/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/management/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/nacm/</loc>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/netboot/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/networking/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/ntp/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/override-package/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/qos/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/scripting-netconf/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/scripting-prod/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/scripting-restconf/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/scripting-sysrepocfg/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/scripting/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/support/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/syslog/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/system/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/test-arch/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/testing/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/tunnels/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/upgrade/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/virtual/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/vpd/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/vpn-wireguard/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/vpn/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/wifi/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/configure/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/introduction/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/keybindings/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/netcalc/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/quick/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/tcpdump/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/text-editor/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
<url>
<loc>https://kernelkit.github.io/infix/dev/cli/upgrade/</loc>
<lastmod>2026-01-20</lastmod>
<lastmod>2026-01-23</lastmod>
</url>
</urlset>
Binary file not shown.
+60 -30
View File
@@ -1054,6 +1054,8 @@
@@ -1159,6 +1161,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1501,34 +1531,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1537,7 +1539,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1565,7 +1567,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1054,6 +1054,8 @@
@@ -1159,6 +1161,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1595,34 +1625,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1631,7 +1633,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1659,7 +1661,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+495 -144
View File
@@ -13,7 +13,7 @@
<link rel="prev" href="../boot/">
<link rel="next" href="../hardware/">
<link rel="next" href="../nacm/">
@@ -1054,6 +1054,8 @@
@@ -1243,10 +1245,21 @@
</li>
<li class="md-nav__item">
<a href="#adding-a-user-to-the-admin-group" class="md-nav__link">
<a href="#adding-a-user-to-a-group" class="md-nav__link">
<span class="md-ellipsis">
Adding a User to the Admin Group
Adding a User to a Group
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-control-matrix" class="md-nav__link">
<span class="md-ellipsis">
Access Control Matrix
</span>
</a>
@@ -1367,6 +1380,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1629,34 +1670,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1665,7 +1678,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1693,7 +1706,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
@@ -2115,10 +2156,21 @@
</li>
<li class="md-nav__item">
<a href="#adding-a-user-to-the-admin-group" class="md-nav__link">
<a href="#adding-a-user-to-a-group" class="md-nav__link">
<span class="md-ellipsis">
Adding a User to the Admin Group
Adding a User to a Group
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access-control-matrix" class="md-nav__link">
<span class="md-ellipsis">
Access Control Matrix
</span>
</a>
@@ -2298,7 +2350,7 @@ model, augmented with Linux specific extensions in <a href="https://github.com/k
like Message of the Day (login message) and user login shell. More
on this later on in this document.</p>
<p>For the sake of brevity, the hostname in the following examples has been
shortened to <code>host</code>. The default hostname is composed from a product
shortened to <code>example</code>. The default hostname is composed from a product
specific string followed by the last three octets of the system base MAC
address, e.g., <code>switch-12-34-56</code>. An example of how to change the
hostname is included below.</p>
@@ -2311,11 +2363,11 @@ Introduction</a> for a background.</p>
<h2 id="changing-password">Changing Password<a class="headerlink" href="#changing-password" title="Permanent link"></a></h2>
<p>User management, including passwords, SSH keys, remote authentication is
available in the system authentication configuration context.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@host:/config/&gt; edit system authentication user admin
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>admin@host:/config/system/authentication/user/admin/&gt; change password
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@example:/config/&gt; edit system authentication user admin
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>admin@example:/config/system/authentication/user/admin/&gt; change password
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>New password:
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>Retype password:
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>admin@host:/config/system/authentication/user/admin/&gt; leave
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>admin@example:/config/system/authentication/user/admin/&gt; leave
</code></pre></div>
<p>The <code>change password</code> command starts an interactive dialogue that asks
for the new password, with a confirmation, and then salts and encrypts
@@ -2338,14 +2390,14 @@ user. Here we add the authorized key to the admin user, multiple keys
are supported.</p>
<p>With SSH keys in place it is possible to disable password login, just
remember to verify SSH login and network connectivity before doing so.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@host:/config/&gt; edit system authentication user admin
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>admin@host:/config/system/authentication/user/admin/&gt; edit authorized-key example@host
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set algorithm ssh-rsa
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; show
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@example:/config/&gt; edit system authentication user admin
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>admin@example:/config/system/authentication/user/admin/&gt; edit authorized-key admin@example
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>admin@example:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set algorithm ssh-rsa
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>admin@example:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>admin@example:/config/system/authentication/user/admin/authorized-key/example@host/&gt; show
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>algorithm ssh-rsa;
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=;
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; leave
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>admin@example:/config/system/authentication/user/admin/authorized-key/example@host/&gt; leave
</code></pre></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
@@ -2354,72 +2406,371 @@ so there is no need to use the <code>text-editor</code> command, <code>set</code
job.</p>
</div>
<h2 id="multiple-users">Multiple Users<a class="headerlink" href="#multiple-users" title="Permanent link"></a></h2>
<p>The system supports multiple users and multiple user levels, or groups,
that a user can be a member of. Access control is entirely handled by
the NETCONF <a href="https://www.rfc-editor.org/rfc/rfc8341">"NACM"</a> YANG model, which provides granular access to
configuration, data, and RPC commands over NETCONF.</p>
<p>By default the system ships with a single group, <code>admin</code>, which the
default user <code>admin</code> is a member of. The broad permissions granted by
the <code>admin</code> group is what gives its users full system administrator
privileges. There are no restrictions on the number of users with
administrator privileges, nor is the <code>admin</code> user reserved or protected
in any way -- it is completely possible to remove the default <code>admin</code>
user from the configuration. However, it is recommended to keep at
least one user with administrator privileges in the system, otherwise
the only way to regain full access is to perform a <em>factory reset</em>.</p>
<p>The factory configuration provides three hierarchical user group levels by
default: <strong>guest ⊂ operator ⊂ admin</strong>. These levels work out-of-the-box
with sensible permissions - operators can configure the system immediately,
while sensitive items (passwords, cryptographic keys) remain protected.</p>
<p>The default levels provide different access to system resources and
configuration:</p>
<ul>
<li>
<p><strong>Admin</strong>: Full system access - can manage users, upgrade software,
restart the system, and modify all configuration including network
settings, routing, and firewall rules.</p>
</li>
<li>
<p><strong>Operator</strong>: Configuration access - can modify most system settings
including network interfaces, routing, firewall, hostname, and more.
<em>Cannot access</em> password hashes, cryptographic keys, or perform
sensitive operations (factory reset, software upgrade).</p>
</li>
<li>
<p><strong>Guest</strong>: Read-only access - can view operational state and
configuration but cannot modify anything or execute operations.</p>
</li>
</ul>
<p>System access control is handled by the <a href="https://www.rfc-editor.org/rfc/rfc8341">ietf-netconf-acm</a> YANG model,
usually referred to as <a href="../nacm/">NACM</a>, which provides granular access to
configuration, data, and RPC commands. The hierarchical levels in the system
are determined by:</p>
<ol>
<li><strong>NACM permissions</strong> - what the user can access</li>
<li><strong>Shell setting</strong> - which command-line interface the user can use</li>
</ol>
<p>By default the system ships with a single user, <code>admin</code>, in the <code>admin</code>
group. There are no restrictions on the number of users with admin
privileges, nor is the <code>admin</code> user reserved or protected -- it can be
removed from the configuration. However, it is strongly recommended to
keep at least one user with administrator privileges, otherwise the only
way to regain full access is to perform a <em>factory reset</em>.</p>
<p>For an overview of users and groups on the system, there is an admin-exec
command:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@example:/&gt; show nacm
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>enabled : yes
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>default read access : permit
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>default write access : permit
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>default exec access : permit
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>denied operations : 0
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a>denied data writes : 0
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>denied notifications : 0
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a>
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a> ┌──────────┬─────────┬─────────┬─────────┐
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a> │ GROUP │ READ │ WRITE │ EXEC │
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a> ├──────────┼─────────┼─────────┼─────────┤
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a> │ admin │ ✓ │ ✓ │ ✓ │
<a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a> │ operator │ ⚠ │ ⚠ │ ⚠ │
<a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a> │ guest │ ⚠ │ ✗ │ ✗ │
<a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a> └──────────┴─────────┴─────────┴─────────┘
<a id="__codelineno-2-17" name="__codelineno-2-17" href="#__codelineno-2-17"></a> ✓ Full ⚠ Restricted ✗ Denied
<a id="__codelineno-2-18" name="__codelineno-2-18" href="#__codelineno-2-18"></a>
<a id="__codelineno-2-19" name="__codelineno-2-19" href="#__codelineno-2-19"></a>USER SHELL LOGIN
<a id="__codelineno-2-20" name="__codelineno-2-20" href="#__codelineno-2-20"></a>admin bash password+key
<a id="__codelineno-2-21" name="__codelineno-2-21" href="#__codelineno-2-21"></a>jacky clish password
<a id="__codelineno-2-22" name="__codelineno-2-22" href="#__codelineno-2-22"></a>monitor false key
<a id="__codelineno-2-23" name="__codelineno-2-23" href="#__codelineno-2-23"></a>
<a id="__codelineno-2-24" name="__codelineno-2-24" href="#__codelineno-2-24"></a>GROUP USERS
<a id="__codelineno-2-25" name="__codelineno-2-25" href="#__codelineno-2-25"></a>admin admin
<a id="__codelineno-2-26" name="__codelineno-2-26" href="#__codelineno-2-26"></a>operator jacky
<a id="__codelineno-2-27" name="__codelineno-2-27" href="#__codelineno-2-27"></a>guest monitor
</code></pre></div>
<p>The permissions matrix shows effective access for each NACM group:</p>
<ul>
<li><strong>✓ Full</strong> (green) - unrestricted access</li>
<li><strong>⚠ Restricted</strong> (yellow) - access with exceptions, use <code>show nacm group</code>
for details</li>
<li><strong>✗ Denied</strong> (red) - no access</li>
</ul>
<p>For detailed information about a specific group's rules:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@example:/&gt; show nacm group operator
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>members : jacky
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>read permission : restricted
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>write permission : restricted
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>exec permission : restricted
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>applicable rules : 4
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>──────────────────────────────────────────────────────────────────────
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>permit-system-rpcs
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a> action : permit
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a> operations : exec
<a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a> target : ietf-system (rpc: *)
<a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a> comment : Operators can reboot, shutdown, and set system time.
<a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a>
<a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a>──────────────────────────────────────────────────────────────────────
<a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a>deny-password-access (via '*')
<a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a> action : deny
<a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a> operations : *
<a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a> target : /ietf-system:system/authentication/user/password
<a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a> comment : No user except admins can access password hashes.
<a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a>
<a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a>──────────────────────────────────────────────────────────────────────
<a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a>deny-keystore-access (via '*')
<a id="__codelineno-3-23" name="__codelineno-3-23" href="#__codelineno-3-23"></a> action : deny
<a id="__codelineno-3-24" name="__codelineno-3-24" href="#__codelineno-3-24"></a> operations : *
<a id="__codelineno-3-25" name="__codelineno-3-25" href="#__codelineno-3-25"></a> target : ietf-keystore
<a id="__codelineno-3-26" name="__codelineno-3-26" href="#__codelineno-3-26"></a> comment : No user except admins can access cryptographic keys.
<a id="__codelineno-3-27" name="__codelineno-3-27" href="#__codelineno-3-27"></a>
<a id="__codelineno-3-28" name="__codelineno-3-28" href="#__codelineno-3-28"></a>──────────────────────────────────────────────────────────────────────
<a id="__codelineno-3-29" name="__codelineno-3-29" href="#__codelineno-3-29"></a>deny-truststore-access (via '*')
<a id="__codelineno-3-30" name="__codelineno-3-30" href="#__codelineno-3-30"></a> action : deny
<a id="__codelineno-3-31" name="__codelineno-3-31" href="#__codelineno-3-31"></a> operations : *
<a id="__codelineno-3-32" name="__codelineno-3-32" href="#__codelineno-3-32"></a> target : ietf-truststore
<a id="__codelineno-3-33" name="__codelineno-3-33" href="#__codelineno-3-33"></a> comment : No user except admins can access trust store.
</code></pre></div>
<p>For user details:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>admin@example:/&gt; show nacm user jacky
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>shell : clish
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>login : password
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>nacm group : operator
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>read permission : restricted
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>write permission : restricted
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>exec permission : restricted
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a>For detailed rules, use: show nacm group &lt;name&gt;
</code></pre></div>
<h3 id="adding-a-user">Adding a User<a class="headerlink" href="#adding-a-user" title="Permanent link"></a></h3>
<p>Similar to how to change password, adding a new user is done using the
same set of commands:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@host:/config/&gt; edit system authentication user jacky
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>admin@host:/config/system/authentication/user/jacky/&gt; change password
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>New password:
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>Retype password:
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>admin@host:/config/system/authentication/user/jacky/&gt; leave
<p>Creating a new user starts with defining the user account in the system:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@example:/config/&gt; edit system authentication user jacky
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>admin@example:/config/system/authentication/user/jacky/&gt; change password
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>New password:
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a>Retype password:
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>admin@example:/config/system/authentication/user/jacky/&gt; leave
</code></pre></div>
<p>An authorized SSH key is added the same way as presented previously.</p>
<h3 id="adding-a-user-to-the-admin-group">Adding a User to the Admin Group<a class="headerlink" href="#adding-a-user-to-the-admin-group" title="Permanent link"></a></h3>
<p>The following commands add user <code>jacky</code> to the <code>admin</code> group.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@host:/config/&gt; edit nacm group admin
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>admin@host:/config/nacm/group/admin/&gt; set user-name jacky
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>admin@host:/config/nacm/group/admin/&gt; leave
<p>An authorized SSH key can be added the same way as described in the
previous sections.</p>
<p>By default, shell access is disabled (<code>shell false</code>). To allow CLI/SSH
access, set the shell:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>admin@example:/config/&gt; edit system authentication user jacky
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>admin@example:/config/system/authentication/user/jacky/&gt; set shell clish
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>admin@example:/config/system/authentication/user/jacky/&gt; leave
</code></pre></div>
<p>Available shells:</p>
<ul>
<li><code>bash</code> - Full Bourne-again shell (recommended for admins only)</li>
<li><code>sh</code> - POSIX shell (recommended for admins only)</li>
<li><code>clish</code> - Limited CLI-only shell (recommended for operators and guests)</li>
<li><code>false</code> - No shell access (default)</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Security Notice</p>
<p>For security reasons, it is strongly recommended to limit non-admin users
to the <code>clish</code> shell, which provides CLI access without exposing the
underlying UNIX system. Reserve <code>bash</code> and <code>sh</code> for administrators who
need full system access for debugging and maintenance.</p>
<p>Note that shell and CLI access is not always necessary - the system
supports NETCONF and RESTCONF for remote management and automation.
Setting <code>shell false</code> for users who only need programmatic access
minimizes the attack surface and improves overall system security.</p>
</div>
<h3 id="adding-a-user-to-a-group">Adding a User to a Group<a class="headerlink" href="#adding-a-user-to-a-group" title="Permanent link"></a></h3>
<p>To assign a user to a specific privilege level, add them to the
corresponding NACM group:</p>
<p><strong>Operator user:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>admin@example:/config/&gt; edit nacm group operator
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>admin@example:/config/nacm/group/operator/&gt; set user-name jacky
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>admin@example:/config/nacm/group/operator/&gt; leave
</code></pre></div>
<p><strong>Adding another admin:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@example:/config/&gt; edit nacm group admin
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@example:/config/nacm/group/admin/&gt; set user-name alice
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>admin@example:/config/nacm/group/admin/&gt; leave
</code></pre></div>
<p><strong>Guest user:</strong></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>admin@example:/config/&gt; edit nacm group guest
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>admin@example:/config/nacm/group/guest/&gt; set user-name monitor
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>admin@example:/config/nacm/group/guest/&gt; leave
</code></pre></div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>For technical details about NACM rule evaluation, module-name vs path
matching, and creating custom access control policies, see the
<a href="../nacm/">NACM Technical Guide</a>.</p>
</div>
<h3 id="access-control-matrix">Access Control Matrix<a class="headerlink" href="#access-control-matrix" title="Permanent link"></a></h3>
<p>The following table shows what each user level can do based on the NACM rules
and shell access configured for each user:</p>
<ul>
<li><strong>Admin</strong>: <code>bash</code> — full system access</li>
<li><strong>Operator</strong>: <code>clish</code> — CLI-only access without UNIX system exposure</li>
<li><strong>Guest</strong>: <code>false</code> — no shell access</li>
</ul>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Admin</th>
<th>Operator</th>
<th>Guest</th>
</tr>
</thead>
<tbody>
<tr>
<td>Network interfaces</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>Routing (FRR)</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>Firewall rules</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>VLANs/bridges</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>Containers</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>Hostname/system config</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>CLI/SSH access</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>System restart</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Set date/time</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>System reboot</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>System shutdown</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>User management</td>
<td></td>
<td></td>
<td>Read only</td>
</tr>
<tr>
<td>Keystore (certs/keys)</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Truststore</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Read passwords/secrets</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>NACM rules</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Factory reset</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Software upgrade</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="security-aspects">Security Aspects<a class="headerlink" href="#security-aspects" title="Permanent link"></a></h3>
<p>The NACM user levels apply primarily to NETCONF, with exception of the
<code>admin</code> group which is granted full system administrator privileges to
the underlying UNIX system with the following ACL rules:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="w"> </span><span class="err">...</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">"module-name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"*"</span><span class="p">,</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="nt">"access-operations"</span><span class="p">:</span><span class="w"> </span><span class="s2">"*"</span><span class="p">,</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="nt">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"permit"</span><span class="p">,</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="err">...</span>
<p>The three default user levels are implemented through a combination of NACM
rules and UNIX group membership. Access control is permission-based, not
name-based - the system detects user levels by examining their NACM
permissions and shell settings.</p>
<p><strong>Admin users</strong> have unrestricted NACM access with the following rule:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="w"> </span><span class="nt">"module-name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"*"</span><span class="p">,</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="nt">"access-operations"</span><span class="p">:</span><span class="w"> </span><span class="s2">"*"</span><span class="p">,</span>
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="nt">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"permit"</span>
</code></pre></div>
<p>A user in the <code>admin</code> group is allowed to also use a POSIX login shell
and use the <code>sudo</code> command to perform system administrative commands.
This makes it possible to use all the underlying UNIX tooling, which
to many can be very useful, in particular when debugging a system, but
please remember to use with care -- the system is not built to require
managing from the shell. The tools available in the CLI and automated
services, started from the system's configuration, are the recommended
way of using the system, in addition to NETCONF tooling.</p>
<p>Admin users are automatically added to the UNIX <code>wheel</code> and <code>frrvty</code>
groups, granting them <code>sudo</code> privileges and access to FRR routing
protocols. This makes it possible to use all the underlying UNIX
tooling, which can be very useful for debugging, but please use with
care -- the system is designed to be managed through the CLI and
NETCONF, not directly via shell commands.</p>
<p><strong>Operator users</strong> use the permit-by-default NACM model (<code>write-default:
"permit"</code>), which means they can configure most system settings without
explicit permit rules. This design is "future proof" - when new features
are added, operators can immediately use them.</p>
<p>The following are explicitly denied to operators through global NACM rules:</p>
<ul>
<li>Password hashes (<code>/ietf-system:system/authentication/user/password</code>)</li>
<li>Cryptographic keys (<code>ietf-keystore</code> module)</li>
<li>Trust store certificates (<code>ietf-truststore</code> module)</li>
</ul>
<p>Additionally, sensitive operations like factory reset, software upgrades,
and system shutdown are protected by YANG-level <code>nacm:default-deny-all</code>
annotations and remain restricted to administrators.</p>
<p>Operators are automatically added to the UNIX <code>operator</code> and <code>frrvty</code>
groups, granting them <code>sudo</code> privileges for network operations and FRR
access.</p>
<p><strong>Guest users</strong> have read-only NACM access through an explicit deny rule
that blocks all write and exec operations (<code>create update delete exec</code>),
while <code>read-default: "permit"</code> allows viewing configuration and state.
Guests receive no special UNIX group memberships. The shell setting
determines whether guests can access the CLI (<code>clish</code>) or are restricted
from shell access entirely (<code>false</code>).</p>
<p>All users, regardless of level, are denied access to password hashes and
cryptographic key material through global NACM rules.</p>
<h2 id="changing-hostname">Changing Hostname<a class="headerlink" href="#changing-hostname" title="Permanent link"></a></h2>
<p>Notice how the hostname in the prompt does not change until the change
is committed by issuing the <code>leave</code> command.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@host:/config/&gt; edit system
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>admin@host:/config/system/&gt; set hostname example
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>admin@host:/config/system/&gt; leave
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a>admin@example:/&gt;
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>admin@example:/config/&gt; edit system
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>admin@example:/config/system/&gt; set hostname myrouter
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>admin@example:/config/system/&gt; leave
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>admin@myrouter:/&gt;
</code></pre></div>
<p>The hostname is advertised over mDNS-SD in the <code>.local</code> domain. If
another device already has claimed the <code>example.local</code> CNAME, in our
another device already has claimed the <code>myrouter.local</code> CNAME, in our
case, mDNS will advertise a "uniqified" variant, usually suffixing with
an index, e.g., <code>example-1.local</code>. Use an mDNS browser to scan for
an index, e.g., <code>myrouter-1.local</code>. Use an mDNS browser to scan for
available devices on your LAN.</p>
<p>In some cases you may want to set the device's <em>domain name</em> as well.
This is handled the same way:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>admin@host:/config/&gt; edit system
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>admin@host:/config/system/&gt; set hostname foo.example.com
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>admin@host:/config/system/&gt; leave
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>admin@foo:/&gt;
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>admin@example:/config/&gt; edit system
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>admin@example:/config/system/&gt; set hostname foo.example.com
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>admin@example:/config/system/&gt; leave
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>admin@foo:/&gt;
</code></pre></div>
<p>Both host and domain name are stored in the system files <code>/etc/hosts</code>
and <code>/etc/hostname</code>. The latter is exclusively for the host name. The
@@ -2439,10 +2790,10 @@ built-in <a href="../cli/text-editor/"><code>text-editor</code> command</a>.</p>
<p>See the next section for how to change the editor used to something
you may be more familiar with.</p>
</div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>admin@host:/config/&gt; edit system
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>admin@host:/config/system/&gt; text-editor motd-banner
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>admin@host:/config/system/&gt; leave
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a>admin@host:/&gt;
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>admin@example:/config/&gt; edit system
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>admin@example:/config/system/&gt; text-editor motd-banner
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>admin@example:/config/system/&gt; leave
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>admin@example:/&gt;
</code></pre></div>
<p>Log out and log back in again to inspect the changes.</p>
<h2 id="changing-the-editor">Changing the Editor<a class="headerlink" href="#changing-the-editor" title="Permanent link"></a></h2>
@@ -2454,11 +2805,11 @@ as the <code>text-editor</code> command:</p>
<li><code>vi</code> (Visual Editor)</li>
</ul>
<p>To change the editor to GNU Nano:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@host:/&gt; configure
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@host:/config/&gt; edit system
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>admin@host:/config/system/&gt; set text-editor nano
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>admin@host:/config/system/&gt; leave
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a>admin@host:/&gt;
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>admin@example:/&gt; configure
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>admin@example:/config/&gt; edit system
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>admin@example:/config/system/&gt; set text-editor nano
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a>admin@example:/config/system/&gt; leave
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a>admin@example:/&gt;
</code></pre></div>
<div class="admonition tip">
<p class="admonition-title">Important</p>
@@ -2470,16 +2821,16 @@ configure context to use your editor of choice.</p>
<p>The system supports both static and dynamic (DHCP) DNS setup. The
locally configured (static) server is preferred over any acquired
from a DHCP client.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>admin@host:/&gt; configure
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>admin@host:/config/&gt; edit system dns-resolver
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>admin@host:/config/system/dns-resolver/&gt; set server google udp-and-tcp address 8.8.8.8
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>admin@host:/config/system/dns-resolver/&gt; show
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a>server google {
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a> udp-and-tcp {
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a> address 8.8.8.8;
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a> }
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a>}
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a>admin@host:/config/system/dns-resolver/&gt; leave
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>admin@example:/&gt; configure
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>admin@example:/config/&gt; edit system dns-resolver
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>admin@example:/config/system/dns-resolver/&gt; set server google udp-and-tcp address 8.8.8.8
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a>admin@example:/config/system/dns-resolver/&gt; show
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a>server google {
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a> udp-and-tcp {
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a> address 8.8.8.8;
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> }
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a>}
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a>admin@example:/config/system/dns-resolver/&gt; leave
</code></pre></div>
<p>It is also possible to configure resolver options like timeout and
retry attempts. See the YANG model for details, or use the built-in
@@ -2493,14 +2844,14 @@ server.</p>
<h2 id="ntp-client-configuration">NTP Client Configuration<a class="headerlink" href="#ntp-client-configuration" title="Permanent link"></a></h2>
<p>Below is an example configuration for enabling NTP with a specific
server and the <code>iburst</code> option for faster initial synchronization.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>admin@host:/&gt; configure
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>admin@host:/config/&gt; edit system ntp
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a>admin@host:/config/system/ntp/&gt; set enabled
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a>admin@host:/config/system/ntp/&gt; set server ntp-pool
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>admin@host:/config/system/ntp/&gt; set server ntp-pool udp address pool.ntp.org
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>admin@host:/config/system/ntp/&gt; set server ntp-pool iburst
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a>admin@host:/config/system/ntp/&gt; set server ntp-pool prefer
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a>admin@host:/config/system/ntp/&gt; leave
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>admin@example:/&gt; configure
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>admin@example:/config/&gt; edit system ntp
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>admin@example:/config/system/ntp/&gt; set enabled
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>admin@example:/config/system/ntp/&gt; set server ntp-pool
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>admin@example:/config/system/ntp/&gt; set server ntp-pool udp address pool.ntp.org
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>admin@example:/config/system/ntp/&gt; set server ntp-pool iburst
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a>admin@example:/config/system/ntp/&gt; set server ntp-pool prefer
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a>admin@example:/config/system/ntp/&gt; leave
</code></pre></div>
<p>This configuration enables the NTP client and sets the NTP server to
<code>pool.ntp.org</code> with the <code>iburst</code> and <code>prefer</code> options. The <code>iburst</code>
@@ -2517,30 +2868,30 @@ as the primary source unless it becomes unreachable or unusable.</li>
<p>The status for NTP sources is availble in YANG and accessable with
CLI/NETCONF/RESTCONF.</p>
<p>To view the sources being used by the NTP client, run:
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>admin@target:/&gt; show ntp
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>ADDRESS MODE STATE STRATUM POLL-INTERVAL
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>192.168.1.1 server candidate 1 6
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>192.168.2.1 server candidate 1 6
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a>192.168.3.1 server selected 1 6
</p><div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>admin@target:/&gt; show ntp
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>ADDRESS MODE STATE STRATUM POLL-INTERVAL
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>192.168.1.1 server candidate 1 6
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>192.168.2.1 server candidate 1 6
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a>192.168.3.1 server selected 1 6
</code></pre></div><p></p>
<h3 id="show-ntp-status">Show NTP Status<a class="headerlink" href="#show-ntp-status" title="Permanent link"></a></h3>
<p>To check the status of NTP synchronization (only availble in CLI), use
the following command:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>admin@host:/&gt; show ntp tracking
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>Reference ID : C0248F86 (192.36.143.134)
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>Stratum : 2
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>Ref time (UTC) : Mon Oct 21 10:06:45 2024
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>System time : 0.000000001 seconds slow of NTP time
<a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>Last offset : -3845.151367188 seconds
<a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>RMS offset : 3845.151367188 seconds
<a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a>Frequency : 4.599 ppm slow
<a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a>Residual freq : +1293.526 ppm
<a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a>Skew : 12.403 ppm
<a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a>Root delay : 1.024467230 seconds
<a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a>Root dispersion : 0.273462683 seconds
<a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a>Update interval : 0.0 seconds
<a id="__codelineno-12-14" name="__codelineno-12-14" href="#__codelineno-12-14"></a>Leap status : Normal
<a id="__codelineno-12-15" name="__codelineno-12-15" href="#__codelineno-12-15"></a>admin@host:/&gt;
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>admin@example:/&gt; show ntp tracking
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>Reference ID : C0248F86 (192.36.143.134)
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>Stratum : 2
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a>Ref time (UTC) : Mon Oct 21 10:06:45 2024
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>System time : 0.000000001 seconds slow of NTP time
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a>Last offset : -3845.151367188 seconds
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a>RMS offset : 3845.151367188 seconds
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a>Frequency : 4.599 ppm slow
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a>Residual freq : +1293.526 ppm
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a>Skew : 12.403 ppm
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a>Root delay : 1.024467230 seconds
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a>Root dispersion : 0.273462683 seconds
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a>Update interval : 0.0 seconds
<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a>Leap status : Normal
<a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a>admin@example:/&gt;
</code></pre></div>
<p>This output provides detailed information about the NTP status, including
reference ID, stratum, time offsets, frequency, and root delay.</p>
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1240,6 +1240,8 @@
@@ -1345,6 +1347,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1607,34 +1637,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1643,7 +1645,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1671,7 +1673,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1054,6 +1054,8 @@
@@ -1159,6 +1161,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1540,34 +1570,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1576,7 +1578,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1604,7 +1606,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1052,6 +1052,8 @@
@@ -1157,6 +1159,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1419,34 +1449,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1455,7 +1457,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1483,7 +1485,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1048,6 +1048,8 @@
@@ -1153,6 +1155,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1415,34 +1445,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1451,7 +1453,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1479,7 +1481,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1151,6 +1151,8 @@
@@ -1256,6 +1258,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1518,34 +1548,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1554,7 +1556,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1582,7 +1584,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
+60 -30
View File
@@ -1351,6 +1351,8 @@
@@ -1456,6 +1458,34 @@
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
@@ -1718,34 +1748,6 @@
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
@@ -1754,7 +1756,7 @@
<span class="md-ellipsis">
With NETCONF
NETCONF Scripting
@@ -1782,7 +1784,35 @@
<span class="md-ellipsis">
With RESTCONF
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing