Example: Imposing 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.

This example tests the MTU of SONET/SDH interfaces, reports when the MTU is less than the value of the $min-mtu variable, here set to 2048, and causes the commit operation to fail.

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 &lt; $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 ".";
            }
        }
    }
}

Testing the ex-so-mtu Script

To test the ex-so-mtu script, perform the following steps:

  1. Copy the XSLT or SLAX script from Example: Imposing a Minimum MTU Setting into a text file, name the file ex-so-mtu.xsl or ex-so-mtu.slax as appropriate, and copy it to the /var/db/scripts/commit directory on the device.
  2. Select the following 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 ex-so-mtu.slax.

    system {scripts {commit {file ex-so-mtu.xsl;}}}interfaces {so-1/2/2 {mtu 2048;}so-1/2/3 {mtu 576;}}
  3. 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 ...
    1. At the prompt, paste the contents of the clipboard using the mouse and the paste icon.
    2. Press Enter.
    3. Press Ctrl+d.
  4. Issue the commit command. The following output appears:

    [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