opnsense-core/src/opnsense/mvc/app/models/OPNsense/TrafficShaper/TrafficShaper.xml

379 lines
17 KiB
XML

<model>
<mount>//OPNsense/TrafficShaper</mount>
<version>1.0.3</version>
<description>
OPNsense traffic shaper
</description>
<items>
<pipes>
<pipe type="ArrayField">
<number type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>Pipe number must be between 1...65535</ValidationMessage>
<Required>Y</Required>
</number>
<enabled type="BooleanField">
<default>1</default>
<Required>Y</Required>
</enabled>
<bandwidth type="IntegerField">
<Required>Y</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>899795</MaximumValue>
<ValidationMessage>Bandwidth out of range</ValidationMessage>
</bandwidth>
<bandwidthMetric type="OptionField">
<Required>Y</Required>
<default>Kbit</default>
<OptionValues>
<bit>bit/s</bit>
<Kbit>kbit/s</Kbit>
<Mbit>Mbit/s</Mbit>
</OptionValues>
<ValidationMessage>Bandwidth metric should be either bit/s, kbit/s or Mbit/s</ValidationMessage>
</bandwidthMetric>
<queue type="IntegerField">
<Required>N</Required>
<MinimumValue>2</MinimumValue>
<MaximumValue>100</MaximumValue>
<ValidationMessage>queue size should be between 2...100</ValidationMessage>
</queue>
<mask type="OptionField">
<Required>Y</Required>
<default>none</default>
<OptionValues>
<none>(none)</none>
<src-ip>source</src-ip>
<dst-ip>destination</dst-ip>
</OptionValues>
</mask>
<buckets type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>bucket size should be between 1...65535</ValidationMessage>
</buckets>
<scheduler type="OptionField">
<Required>N</Required>
<default></default>
<BlankDesc>Weighted Fair Queueing</BlankDesc>
<OptionValues>
<fifo>FIFO</fifo>
<rr>Deficit Round Robin</rr>
<qfq>QFQ</qfq>
<fq_codel>FlowQueue-CoDel</fq_codel>
<fq_pie>FlowQueue-PIE</fq_pie>
</OptionValues>
</scheduler>
<codel_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<ValidationMessage>CoDel and PIE can not be combined.</ValidationMessage>
<type>SingleSelectConstraint</type>
<addFields>
<pie_enable>pie_enable</pie_enable>
</addFields>
</check001>
</Constraints>
</codel_enable>
<codel_target type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_target>
<codel_interval type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_interval>
<codel_ecn_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
</codel_ecn_enable>
<pie_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<reference>codel_enable.check001</reference>
</check001>
</Constraints>
</pie_enable>
<fqcodel_quantum type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_quantum>
<fqcodel_limit type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_limit>
<fqcodel_flows type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_flows>
<origin type="TextField">
<Required>N</Required>
<mask>/^([a-z,A-Z,1-9]){0,30}$/</mask>
<ValidationMessage>Origin should be regular text of max 30 characters</ValidationMessage>
</origin>
<delay type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>3000</MaximumValue>
<ValidationMessage>Please choose a value between 1 and 3000</ValidationMessage>
</delay>
<description type="TextField">
<Required>Y</Required>
<mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){1,255}$/u</mask>
<ValidationMessage>Description should be a string between 1 and 255 characters</ValidationMessage>
</description>
</pipe>
</pipes>
<queues>
<queue type="ArrayField">
<number type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>Queue number must be between 1...65535</ValidationMessage>
<Required>Y</Required>
</number>
<enabled type="BooleanField">
<default>1</default>
<Required>Y</Required>
</enabled>
<pipe type="ModelRelationField">
<Model>
<pipes>
<source>OPNsense.TrafficShaper.TrafficShaper</source>
<items>pipes.pipe</items>
<display>description</display>
</pipes>
</Model>
<ValidationMessage>Related pipe not found</ValidationMessage>
<Required>Y</Required>
</pipe>
<weight type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>100</MaximumValue>
<Default>100</Default>
<Required>Y</Required>
<ValidationMessage>Weight must be between 1...100</ValidationMessage>
</weight>
<mask type="OptionField">
<Required>Y</Required>
<default>none</default>
<OptionValues>
<none>(none)</none>
<src-ip>source</src-ip>
<dst-ip>destination</dst-ip>
</OptionValues>
</mask>
<buckets type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>bucket size should be between 1...65535</ValidationMessage>
</buckets>
<codel_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<ValidationMessage>CoDel and PIE can not be combined.</ValidationMessage>
<type>SingleSelectConstraint</type>
<addFields>
<pie_enable>pie_enable</pie_enable>
</addFields>
</check001>
</Constraints>
</codel_enable>
<codel_target type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_target>
<codel_interval type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_interval>
<codel_ecn_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
</codel_ecn_enable>
<pie_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<reference>codel_enable.check001</reference>
</check001>
</Constraints>
</pie_enable>
<description type="TextField">
<Required>Y</Required>
<mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){1,255}$/u</mask>
<ValidationMessage>Description should be a string between 1 and 255 characters</ValidationMessage>
</description>
<origin type="TextField">
<Required>N</Required>
<mask>/^([a-z,A-Z,1-9]){0,30}$/</mask>
<ValidationMessage>origin should be regular text of max 30 characters</ValidationMessage>
</origin>
</queue>
</queues>
<rules>
<rule type="ArrayField">
<enabled type="BooleanField">
<default>1</default>
<Required>Y</Required>
</enabled>
<sequence type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>1000000</MaximumValue>
<ValidationMessage>provide a valid sequence for sorting</ValidationMessage>
<Required>Y</Required>
<default>1</default>
</sequence>
<interface type="InterfaceField">
<Required>Y</Required>
<default>wan</default>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
</interface>
<interface2 type="InterfaceField">
<Required>N</Required>
<default></default>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
</interface2>
<proto type="OptionField">
<Required>Y</Required>
<default>ip</default>
<OptionValues>
<ip>ip</ip>
<ip4>ipv4</ip4>
<ip6>ipv6</ip6>
<udp>udp</udp>
<tcp>tcp</tcp>
<tcp_ack>tcp (ACK packets only)</tcp_ack>
<tcp_ack_not>tcp (non-ACK packets)</tcp_ack_not>
<icmp>icmp</icmp>
<igmp>igmp</igmp>
<esp>esp</esp>
<ah>ah</ah>
<gre>gre</gre>
</OptionValues>
</proto>
<source type="NetworkField">
<Required>Y</Required>
<FieldSeparator>,</FieldSeparator>
<default>any</default>
<asList>Y</asList>
</source>
<source_not type="BooleanField">
<default>0</default>
<Required>Y</Required>
</source_not>
<src_port type="PortField">
<Required>Y</Required>
<EnableWellKnown>Y</EnableWellKnown>
<EnableRanges>Y</EnableRanges>
<default>any</default>
</src_port>
<destination type="NetworkField">
<Required>Y</Required>
<FieldSeparator>,</FieldSeparator>
<default>any</default>
<asList>Y</asList>
</destination>
<destination_not type="BooleanField">
<default>0</default>
<Required>Y</Required>
</destination_not>
<dst_port type="PortField">
<Required>Y</Required>
<EnableWellKnown>Y</EnableWellKnown>
<EnableRanges>Y</EnableRanges>
<default>any</default>
</dst_port>
<dscp type="OptionField">
<Required>N</Required>
<Multiple>Y</Multiple>
<OptionValues>
<be>Best Effort</be>
<ef>Expedited Forwarding</ef>
<af11>AF11</af11>
<af12>AF12</af12>
<af13>AF13</af13>
<af21>AF21</af21>
<af22>AF22</af22>
<af23>AF23</af23>
<af31>AF31</af31>
<af32>AF32</af32>
<af33>AF33</af33>
<af41>AF41</af41>
<af42>AF42</af42>
<af43>AF43</af43>
<cs1>CS1</cs1>
<cs2>CS2</cs2>
<cs3>CS3</cs3>
<cs4>CS4</cs4>
<cs5>CS5</cs5>
<cs6>CS6</cs6>
<cs7>CS7</cs7>
</OptionValues>
</dscp>
<direction type="OptionField">
<Required>N</Required>
<default></default>
<OptionValues>
<__empty__>both</__empty__>
<in>in</in>
<out>out</out>
</OptionValues>
</direction>
<target type="ModelRelationField">
<Model>
<pipes>
<source>OPNsense.TrafficShaper.TrafficShaper</source>
<items>pipes.pipe</items>
<display>description</display>
<filters>
<description>/(.){1,255}/</description>
</filters>
</pipes>
<queues>
<source>OPNsense.TrafficShaper.TrafficShaper</source>
<items>queues.queue</items>
<display>description</display>
<filters>
<description>/(.){1,255}/</description>
</filters>
</queues>
</Model>
<ValidationMessage>Related pipe or queue not found</ValidationMessage>
<Required>Y</Required>
</target>
<description type="TextField">
<Required>N</Required>
<mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){0,255}$/u</mask>
</description>
<origin type="TextField">
<Required>N</Required>
<mask>/^([a-z,A-Z,1-9]){0,30}$/</mask>
<ValidationMessage>origin should be regular text of max 30 characters</ValidationMessage>
</origin>
</rule>
</rules>
</items>
</model>