--- /dev/null
+<target name="MAX_LINK_BANDWIDTH">
+ <!-- The context is empty, since this target does not require any input from SFA -->
+ <context select=""/>
+ <rule>
+ <argument>
+ <name>max-link-bandwidth</name>
+ <help>Maximum link bandwidth.</help>
+ <operand>bps</operand>
+ </argument>
+ </argument>
+ </rule>
+ <processor filename="max_link_banwidth.xsl"/>
+</target>
--- /dev/null
+<RSpec name="vini">
+ <sfatables-input>
+ <rule>
+ <argument>
+ <name>max-link-bandwidth</name>
+ <value>1000001</value>
+ </argument>
+ </rule>
+ </sfatables-input>
+
+ <Request>
+ <NetSpec name="default_topology">
+ <LinkSpec>
+ <endpoint>i2atla1</endpoint>
+ <endpoint>i2chic1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2atla1</endpoint>
+ <endpoint>i2hous1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2atla1</endpoint>
+ <endpoint>i2wash1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2chic1</endpoint>
+ <endpoint>i2kans1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2chic1</endpoint>
+ <endpoint>i2wash1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2hous1</endpoint>
+ <endpoint>i2kans1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2hous1</endpoint>
+ <endpoint>i2losa1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2kans1</endpoint>
+ <endpoint>i2salt1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2losa1</endpoint>
+ <endpoint>i2salt1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2losa1</endpoint>
+ <endpoint>i2seat1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2newy1</endpoint>
+ <endpoint>i2wash1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ <LinkSpec>
+ <endpoint>i2salt1</endpoint>
+ <endpoint>i2seat1</endpoint>
+ <bw>1000000</bw>
+ </LinkSpec>
+ </NetSpec>
+ </Request>
+ </RSpec>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <!-- Magic sauce copied from a manual. This fragment basically copies everything except for
+ stuff that explicitly matches with the templates defined below. In the case of such a match,
+ the matched node is treated differently.-->
+ <xsl:template match="@* | node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@* | node()"/>
+ </xsl:copy>
+ </xsl:template>
+ <!-- End of magic sauce -->
+
+ <!-- Read in the value of the argument. See 'example_vini_rspec.xml' for an example of such an argument -->
+ <xsl:variable name="max-link-bandwidth" select="//RSpec//rule/argument[name='max-link-bandwidth']/value"/>
+
+ <!-- Drop Linkspecs for which bw > max-link-bandwidth -->
+ <xsl:template match="LinkSpec">
+ <xsl:choose>
+ <xsl:when test="bw < $max-link-bandwidth">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="sfatables-input"/>
+</xsl:stylesheet>