Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Navigation

Example: Adding T1 Interfaces to a RIP Group

This example shows how to use commit scripts to decrease the amount of manual configuration, specifically how to add every T1 interface configured at the [edit interfaces] hierarchy level to the [edit protocols rip group test] hierarchy level.

Requirements

This example uses a device running Junos OS with T1 interfaces.

Overview and Commit Script

If you want to enable RIP on an interface, you must make changes at both the [edit interfaces] and [edit protocols rip] hierarchy levels. This example shows how to use commit scripts to add every T1 interface configured at the [edit interfaces] hierarchy level to the [edit protocols rip group test] hierarchy level. This example includes no error, warning, or system log messages. The changes to the configuration are made silently.

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:template match="configuration">
        <xsl:variable name="all-t1"
                              select="interfaces/interface[starts-with(name, 't1-')]"/>
        <xsl:if test="$all-t1">
            <change>
                <protocols>
                    <rip>
                        <group>
                            <name>test</name>
                            <xsl:for-each select="$all-t1">
                                <xsl:variable name="ifname" select="concat(name, '.0')"/>
                                <neighbor>
                                    <name><xsl:value-of select="$ifname"/></name>
                                </neighbor>
                            </xsl:for-each>
                        </group>
                    </rip>
                </protocols>
            </change>
        </xsl:if>
    </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";
 
match configuration {
    var $all-t1 = interfaces/interface[starts-with(name, 't1-')];
    if ($all-t1) {
        <change> {
            <protocols> {
                <rip> {
                    <group> {
                        <name> "test";
                        for-each ($all-t1) {
                            var $ifname = name _ '.0';
                            <neighbor> {
                                <name> $ifname;
                            }
                        }
                    }
                }
            }
        }
    }
}

Configuration

Step-by-Step Procedure

To download, enable, and test the script:

  1. Copy the XSLT or SLAX script into a text file, name the file rip-t1.xsl or rip-t1.slax as appropriate, and copy it to the /var/db/scripts/commit/ directory on the device.
  2. 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 rip-t1.slax.

    system {scripts {commit {file rip-t1.xsl;}}}
    interfaces {t1-0/0/0 {unit 0 {family iso;}}t1-0/0/1 {unit 0 {family iso;}}t1-0/0/2 {unit 0 {family iso;}}t1-0/0/3 {unit 0 {family iso;}}t1-0/1/0 {unit 0 {family iso;}}t1-0/1/1 {unit 0 {family iso;}}t1-0/1/2 {unit 0 {family iso;}}t1-0/1/3 {unit 0 {family iso;}}}
  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 by using the mouse and the paste icon.
    2. Press Enter.
    3. Press Ctrl+d.
  4. Issue the commit command to commit the configuration.

    user@host# commit

Verification

Verifying the Configuration

Purpose

Verify that the script behaves as expected.

Action

Issue the show protocols rip group test command. All T1 interfaces should now appear under the [edit protocols rip group test] hierarchy level.

[edit]
user@host# show protocols rip group test
neighbor t1-0/0/0.0;
neighbor t1-0/0/1.0;
neighbor t1-0/0/2.0;
neighbor t1-0/0/3.0;
neighbor t1-0/1/0.0;
neighbor t1-0/1/1.0;
neighbor t1-0/1/2.0;
neighbor t1-0/1/3.0;

Published: 2013-03-05

Published: 2013-03-05