Example: Adding T1 Interfaces to a RIP Group

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 you how to use commit scripts to decrease the amount of manual configuration.

This example adds 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.

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;
                            }
                        }
                    }
                }
            }
        }
    }
}

Testing the ex-rip-t1 Script

To test the ex-rip-t1 script, perform the following steps:

  1. Copy the XSLT or SLAX script from Example: Adding T1 Interfaces to a RIP Group into a text file, name the file ex-rip-t1.xsl or ex-rip-t1.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-rip-t1.slax.

    system {scripts {commit {file ex-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 using the mouse and the paste icon.
    2. Press Enter.
    3. Press Ctrl+d.
  4. Issue the commit command and then the show protocols rip group test command. The following output appears:

    [edit]
    user@host# commit
    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;