[Contents] [Prev] [Next] [Index] [Report an Error]

Assigning a Classifier

In JUNOS class of service (CoS), classifiers allow you to associate incoming packets with a forwarding class and loss priority and, based on the associated forwarding class, assign packets to output queues. After you configure a classifier, you must assign it to an input interface.

For each interface configured with the IPv4 protocol family, this script automatically assigns a specified classifier called fc-q3.

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="cos-all" select="class-of-service"/>

        <xsl:for-each
                    select="interfaces/interface[contains(name, '/')]/unit[family/inet]">
            <xsl:variable name="ifname" select="../name"/>
            <xsl:variable name="unit" select="name"/>
            <xsl:variable name="cos"
                    select="$cos-all/interfaces[name = $ifname]"/>

            <xsl:if test="not($cos/unit[name = $unit])">
                <xsl:call-template name="jcs:emit-change">
                    <xsl:with-param name="message">
                        <xsl:text>Adding CoS forwarding class for </xsl:text>
                        <xsl:value-of select="concat($ifname, '.', $unit)"/>
                    </xsl:with-param>
                    <xsl:with-param name="dot" select="$cos-all"/>
                    <xsl:with-param name="content">
                        <interfaces>
                            <name><xsl:value-of select="$ifname"/></name>
                            <unit>
                                <name><xsl:value-of select="$unit"/></name>
                                <forwarding-class>fc-q3</forwarding-class>
                            </unit>
                        </interfaces>
                    </xsl:with-param>
                </xsl:call-template>
            </xsl:if>
        </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";
match configuration {
    var $cos-all = class-of-service;

    for-each (interfaces/interface[contains(name, '/')]/unit[family/inet]) {
        var $ifname = ../name;
        var $unit = name;
        var $cos = $cos-all/interfaces[name = $ifname];

        if (not($cos/unit[name = $unit])) {
            call jcs:emit-change($dot = $cos-all) {
                with $message = {
                    expr "Adding CoS forwarding class for ";
                    expr $ifname _ '.' _ $unit;
                }
                with $content = {
                    <interfaces> {
                        <name> $ifname;
                        <unit> {
                            <name> $unit;
                            <forwarding-class> "fc-q3";
                        }
                    }
                }
            }
        }
    }
}

[Contents] [Prev] [Next] [Index] [Report an Error]