001
version 1.0;
002
ns junos = "http://xml.juniper.net/junos/*/junos";
003
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
004
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
005
ns ext = "http://xmlsoft.org/XSLT/namespace";
006
007
import "../import/junos.xsl";
008
009
/*
010
* This commit-script ensures that all interfaces configured
011
* under protocols/ospf have family/mpls configured and are
012
* in protocols/mpls, protocols/ldp and protocols/rsvp.
013
*/
014
015
match configuration {
016
var $ospfIntsRaw = { call ospfInterfaces(); }
017
var $ospfInts = ext:node-set($ospfIntsRaw);
018
019
var $rsvpIntsRaw = { call rsvpInterfaces(); }
020
var $rsvpInts = ext:node-set($rsvpIntsRaw);
021
022
var $ldpIntsRaw = { call ldpInterfaces(); }
023
var $ldpInts = ext:node-set($ldpIntsRaw);
024
025
var $mplsIntsRaw = { call mplsInterfaces(); }
026
var $mplsInts = ext:node-set($mplsIntsRaw);
027
028
for-each (interfaces/interface) {
029
var $int = name;
030
var $unit = unit/name;
031
var $fullint = $int _ "." _ $unit;
032
var $ospf = $ospfInts/ospfInts[@name == $fullint]/@value;
033
var $rsvp = $rsvpInts/rsvpInts[@name == $fullint]/@value;
034
var $mpls = $mplsInts/mplsInts[@name == $fullint]/@value;
035
var $ldp = $ldpInts/ldpInts[@name == $fullint]/@value;
036
if ($ospf == 1) {
037
var $intMpls = count (unit/family/mpls);
038
if (not ($intMpls == 1) && (not (contains ($int, "lo0")))) {
039
<xnm:warning> {
040
<message> {
041
expr "OSPF interface ";
042
expr $int;
043
expr ".";
044
expr $unit;
045
expr " is not configured for MPLS";
046
}
047
}
048
}
049
if (not ($mpls == 1)) {
050
<xnm:warning> {
051
<message> {
052
expr "OSPF interface ";
053
expr $int;
054
expr ".";
055
expr $unit;
056
expr " is not configured under protocols MPLS";
057
}
058
}
059
}
060
if (not ($ldp == 1)) {
061
<xnm:warning> {
062
<message> {
063
expr "OSPF interface ";
064
expr $int;
065
expr ".";
066
expr $unit;
067
expr " is not configured under protocols LDP";
068
}
069
}
070
}
071
if (not ($rsvp == 1)) {
072
<xnm:warning> {
073
<message> {
074
expr "OSPF interface ";
075
expr $int;
076
expr ".";
077
expr $unit;
078
expr " is not configured under protocols RSVP";
079
}
080
}
081
}
082
}
083
}
084
}
085
086
template ospfInterfaces () {
087
for-each (protocols/ospf/area/interface) {
088
var $int = name;
089
<ospfInts name=$int value=1>;
090
}
091
}
092
template rsvpInterfaces () {
093
for-each (protocols/rsvp/interface) {
094
var $int = name;
095
<rsvpInts name=$int value=1>;
096
}
097
}
098
template ldpInterfaces () {
099
for-each (protocols/ldp/interface) {
100
var $int = name;
101
<ldpInts name=$int value=1>;
102
}
103
}
104
template mplsInterfaces () {
105
for-each (protocols/mpls/interface) {
106
var $int = name;
107
<mplsInts name=$int value=1>;
108
}
109
}
|