TrafficShaper.xml 9.56 KB
Newer Older
1 2 3 4 5 6
<model>
    <mount>//OPNsense/TrafficShaper</mount>
    <description>
        OPNsense traffic shaper
    </description>
    <items>
7 8 9 10 11
        <pipes>
            <pipe type="ArrayField">
                <number type="IntegerField">
                    <MinimumValue>1</MinimumValue>
                    <MaximumValue>65535</MaximumValue>
12
                    <ValidationMessage>Pipe number must be between 1...65535</ValidationMessage>
13 14
                    <Required>Y</Required>
                </number>
15 16 17 18
                <enabled type="BooleanField">
                    <default>1</default>
                    <Required>Y</Required>
                </enabled>
19 20
                <bandwidth type="IntegerField">
                    <Required>Y</Required>
21 22
                    <MinimumValue>1</MinimumValue>
                    <MaximumValue>899795</MaximumValue>
23
                    <ValidationMessage>Bandwidth out of range</ValidationMessage>
24 25 26 27 28 29 30 31 32 33 34
                </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 one of bit,Kbit,Mbit</ValidationMessage>
                </bandwidthMetric>
35 36 37 38
                <burst type="IntegerField">
                    <Required>N</Required>
                    <ValidationMessage>The burst value is an integer and represent a number of bytes.</ValidationMessage>
                </burst>
39 40
                <queue type="IntegerField">
                    <Required>N</Required>
41 42 43
                    <MinimumValue>2</MinimumValue>
                    <MaximumValue>100</MaximumValue>
                    <ValidationMessage>queue size should be between 2...100</ValidationMessage>
44
                </queue>
45 46 47
                <mask type="OptionField">
                    <Required>Y</Required>
                    <default>none</default>
48
                    <OptionValues>
49
                        <none></none>
50 51
                        <src-ip>source</src-ip>
                        <dst-ip>destination</dst-ip>
52
                    </OptionValues>
53
                </mask>
54 55
                <origin type="TextField">
                    <Required>N</Required>
56
                    <mask>/^([a-z,A-Z,1-9]){0,30}$/</mask>
57
                    <ValidationMessage>Origin should be regular text of max 30 characters</ValidationMessage>
58
                </origin>
59
                <description type="TextField">
60
                    <Required>Y</Required>
61
                    <mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){1,255}$/u</mask>
62
                    <ValidationMessage>Description should be a string between 1 and 255 characters</ValidationMessage>
63 64 65
                </description>
            </pipe>
        </pipes>
66 67 68 69 70 71 72 73
        <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>
74 75 76 77
                <enabled type="BooleanField">
                    <default>1</default>
                    <Required>Y</Required>
                </enabled>
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
                <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>
                        <src-ip>source</src-ip>
                        <dst-ip>destination</dst-ip>
                    </OptionValues>
                </mask>
                <description type="TextField">
                    <Required>Y</Required>
107
                    <mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){1,255}$/u</mask>
108 109 110 111 112 113 114 115 116
                    <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>
117
        <rules>
118
            <rule type="ArrayField">
119 120 121 122 123 124 125
                <sequence type="IntegerField">
                    <MinimumValue>1</MinimumValue>
                    <MaximumValue>1000000</MaximumValue>
                    <ValidationMessage>provide a valid sequence for sorting</ValidationMessage>
                    <Required>Y</Required>
                    <default>1</default>
                </sequence>
126
                <interface type="InterfaceField">
127
                    <Required>Y</Required>
128
                    <default>wan</default>
129
                    <filters>
130
                        <enable>/^(?!0).*$/</enable>
131
                    </filters>
132
                </interface>
133 134 135 136 137 138 139
                <interface2 type="InterfaceField">
                    <Required>N</Required>
                    <default></default>
                    <filters>
                        <enable>/^(?!0).*$/</enable>
                    </filters>
                </interface2>
140 141 142 143 144
                <proto type="OptionField">
                    <Required>Y</Required>
                    <default>ip</default>
                    <OptionValues>
                        <ip>ip</ip>
145
                        <ip4>ipv4</ip4>
Jos Schellevis's avatar
Jos Schellevis committed
146
                        <ip6>ipv6</ip6>
147 148
                        <udp>udp</udp>
                        <tcp>tcp</tcp>
149
                        <tcp_ack>tcp (ACK packets only)</tcp_ack>
150
                        <tcp_ack_not>tcp (non-ACK packets)</tcp_ack_not>
151 152 153 154 155
                        <icmp>icmp</icmp>
                        <igmp>igmp</igmp>
                        <esp>esp</esp>
                        <ah>ah</ah>
                        <gre>gre</gre>
156 157
                    </OptionValues>
                </proto>
158
                <source type="NetworkField">
159
                    <Required>Y</Required>
160 161
                    <default>any</default>
                </source>
162
                <src_port type="PortField">
163 164 165
                    <Required>Y</Required>
                    <default>any</default>
                </src_port>
166
                <destination type="NetworkField">
167 168 169
                    <Required>Y</Required>
                    <default>any</default>
                </destination>
170
                <dst_port type="PortField">
171 172 173 174
                    <Required>Y</Required>
                    <default>any</default>
                </dst_port>
                <direction type="OptionField">
175
                    <Required>N</Required>
176 177
                    <default></default>
                    <OptionValues>
178
                        <__empty__>both</__empty__>
179 180 181 182
                        <in>in</in>
                        <out>out</out>
                    </OptionValues>
                </direction>
183 184 185 186 187 188
                <target type="ModelRelationField">
                    <Model>
                        <pipes>
                            <source>OPNsense.TrafficShaper.TrafficShaper</source>
                            <items>pipes.pipe</items>
                            <display>description</display>
189 190 191
                            <filters>
                                <description>/(.){1,255}/</description>
                            </filters>
192 193 194
                        </pipes>
                        <queues>
                            <source>OPNsense.TrafficShaper.TrafficShaper</source>
195
                            <items>queues.queue</items>
196
                            <display>description</display>
197 198 199
                            <filters>
                                <description>/(.){1,255}/</description>
                            </filters>
200 201 202
                        </queues>
                    </Model>
                    <ValidationMessage>Related pipe or queue not found</ValidationMessage>
203 204
                    <Required>Y</Required>
                </target>
205 206
                <description type="TextField">
                    <Required>N</Required>
207
                    <mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){0,255}$/u</mask>
208
                </description>
209 210 211 212 213
                <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>
214 215
            </rule>
        </rules>
216
    </items>
217
</model>