Example: Impose a Minimum MTU Setting
The maximum transmission unit (MTU) is the greatest amount of data or packet size (in bytes) that can be transferred in one physical frame on a network. In this example, a commit script tests the MTU of SONET/SDH interfaces. If the MTU is less than a specified minimum value, the commit script reports the error and causes the commit operation to fail.
Requirements
This example uses a device running Junos OS with SONET/SDH interfaces.
Overview and Commit Script
This example tests the MTU of SONET/SDH interfaces, reports
when the MTU is less than the value of the min-mtu
parameter, here set to 2048, and causes the commit operation to
fail. The for
loop selects all SONET/SDH
interfaces that start with so- and that have an MTU statement that
is defined and less than the value of min-mtu
. For the selected interfaces, the script generates an error, which
includes the location of the interface in the configuration hierarchy
and the MTU configured for that interface.
The example script is shown in both XSLT and SLAX syntax:
XSLT Syntax
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:param name="min-mtu" select="2048"/> <xsl:template match="configuration"> <xsl:for-each select="interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]"> <xnm:error> <xsl:call-template name="jcs:edit-path"/> <xsl:call-template name="jcs:statement"> <xsl:with-param name="dot" select="mtu"/> </xsl:call-template> <message> <xsl:text>SONET interfaces must have a minimum MTU of </xsl:text> <xsl:value-of select="$min-mtu"/> <xsl:text>.</xsl:text> </message> </xnm:error> </xsl:for-each> </xsl:template> </xsl:stylesheet>
SLAX Syntax
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; param $min-mtu = 2048; match configuration { for-each (interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]) { <xnm:error> { call jcs:edit-path(); call jcs:statement($dot = mtu); <message> { expr "SONET interfaces must have a minimum MTU of "; expr $min-mtu; expr "."; } } } }
Configuration
Procedure
Step-by-Step Procedure
To download, enable, and test the script:
Copy the script into a text file, name the file so-mtu.xsl or so-mtu.slax as appropriate, and copy it to the /var/db/scripts/commit/ directory on the device.
Select the following test configuration stanzas, and press Ctrl+c to copy them to the clipboard.
If you are using the SLAX version of the script, change the filename at the
[edit system scripts commit file]
hierarchy level to so-mtu.slax.system { scripts { commit { file so-mtu.xsl; } } } interfaces { so-1/2/2 { mtu 2048; } so-1/2/3 { mtu 576; } }
In configuration mode, issue the
load merge terminal
command to merge the stanzas into your device configuration.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
At the prompt, paste the contents of the clipboard by using the mouse and the paste icon.
Press Enter.
Press Ctrl+d.
Commit the configuration.
user@host# commit
Verification
Verifying the Commit Script Output
Purpose
Verify that the script behaves as expected.
Action
Review the output of the commit
command. The
sample configuration stanzas configure two SONET/SDH interfaces so-1/2/2
and so-1/2/3. The so-1/2/3 interface is configured with an MTU of
576, so the script generates an error message, and the commit operation
fails. The following output appears after issuing a commit
command:
[edit] user@host# commit [edit interfaces interface so-1/2/3] 'mtu 576;' SONET interfaces must have a minimum MTU of 2048. error: 1 error reported by commit scripts error: commit script failure