If you want to enable the Routing Information Protocol (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;
}
}
}
}
}
}
}
}
To test the example in this section, perform the following steps:
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;
}
}
}
- [edit]
- user@host# load merge terminal
- [Type ^D at a new line to end input]
- > Paste the contents of the clipboard here<
- [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;