net/frr: model style and new indent

This commit is contained in:
Franco Fichtner
2025-08-29 09:46:53 +02:00
parent 034e337747
commit 0d30db0a8d
7 changed files with 905 additions and 1077 deletions
@@ -13,12 +13,8 @@
<Default>1</Default>
<Required>Y</Required>
</enabled>
<description type="TextField">
<Default></Default>
<Required>N</Required>
</description>
<description type="TextField"/>
<address type="NetworkField">
<Default></Default>
<Required>Y</Required>
</address>
<multihop type="BooleanField">
File diff suppressed because it is too large Load Diff
@@ -9,7 +9,6 @@
</enabled>
<profile type="OptionField">
<Required>Y</Required>
<Multiple>N</Multiple>
<Default>traditional</Default>
<OptionValues>
<traditional>Traditional</traditional>
@@ -30,7 +29,6 @@
</enablesnmp>
<sysloglevel type="OptionField">
<Required>Y</Required>
<Multiple>N</Multiple>
<Default>notifications</Default>
<OptionValues>
<critical>Critical</critical>
File diff suppressed because it is too large Load Diff
@@ -12,7 +12,7 @@
<Required>Y</Required>
</carp_demote>
<routerid type="TextField">
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
</routerid>
<originate type="BooleanField">
<Default>0</Default>
@@ -28,213 +28,213 @@
<ValidationMessage>Must be a number between 0 and 16777214.</ValidationMessage>
</originatemetric>
<networks>
<network type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<!-- XXX: it would make sense to merge both into a single field "network" -->
<ipaddr type="NetworkField">
<Required>Y</Required>
<NetMaskAllowed>N</NetMaskAllowed>
<WildcardEnabled>N</WildcardEnabled>
<AddressFamily>ipv6</AddressFamily>
</ipaddr>
<netmask type="IntegerField">
<Default>64</Default>
<MinimumValue>0</MinimumValue>
<Required>Y</Required>
<MaximumValue>128</MaximumValue>
<ValidationMessage>Network mask must be between 0 and 128.</ValidationMessage>
</netmask>
<area type="TextField">
<Required>Y</Required>
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
</area>
<arearange type="TextField"/>
<linkedPrefixlistIn type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Prefix-List item not found</ValidationMessage>
</linkedPrefixlistIn>
<linkedPrefixlistOut type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Prefix-List item not found</ValidationMessage>
</linkedPrefixlistOut>
</network>
<network type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<!-- XXX: it would make sense to merge both into a single field "network" -->
<ipaddr type="NetworkField">
<Required>Y</Required>
<NetMaskAllowed>N</NetMaskAllowed>
<WildcardEnabled>N</WildcardEnabled>
<AddressFamily>ipv6</AddressFamily>
</ipaddr>
<netmask type="IntegerField">
<Default>64</Default>
<MinimumValue>0</MinimumValue>
<Required>Y</Required>
<MaximumValue>128</MaximumValue>
<ValidationMessage>Network mask must be between 0 and 128.</ValidationMessage>
</netmask>
<area type="TextField">
<Required>Y</Required>
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
</area>
<arearange type="TextField"/>
<linkedPrefixlistIn type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Prefix-List item not found.</ValidationMessage>
</linkedPrefixlistIn>
<linkedPrefixlistOut type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Prefix-List item not found.</ValidationMessage>
</linkedPrefixlistOut>
</network>
</networks>
<interfaces>
<interface type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<interfacename type="InterfaceField">
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
</interfacename>
<area type="TextField">
<Required>Y</Required>
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
</area>
<passive type="BooleanField">
<Default>0</Default>
<Required>Y</Required>
</passive>
<cost type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Cost must be between 0 and 4294967295.</ValidationMessage>
</cost>
<cost_demoted type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>Cost must be between 1 and 65535.</ValidationMessage>
</cost_demoted>
<carp_depend_on type="VirtualIPField">
<type>carp</type>
</carp_depend_on>
<hellointerval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Hello interval must be between 0 and 4294967295.</ValidationMessage>
</hellointerval>
<deadinterval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Dead interval must be between 0 and 4294967295.</ValidationMessage>
</deadinterval>
<retransmitinterval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Retransmit interval must be between 0 and 4294967295.</ValidationMessage>
</retransmitinterval>
<transmitdelay type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Transmit delay must be between 0 and 4294967295.</ValidationMessage>
</transmitdelay>
<priority type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Priority must be between 0 and 4294967295.</ValidationMessage>
</priority>
<bfd type="BooleanField"/>
<networktype type="OptionField">
<OptionValues>
<broadcast>Broadcast multi-access network</broadcast>
<point-to-point>Point-to-point network</point-to-point>
</OptionValues>
</networktype>
</interface>
<interface type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<interfacename type="InterfaceField">
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
</interfacename>
<area type="TextField">
<Required>Y</Required>
<Mask>/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</Mask>
</area>
<passive type="BooleanField">
<Default>0</Default>
<Required>Y</Required>
</passive>
<cost type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Cost must be between 0 and 4294967295.</ValidationMessage>
</cost>
<cost_demoted type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<ValidationMessage>Cost must be between 1 and 65535.</ValidationMessage>
</cost_demoted>
<carp_depend_on type="VirtualIPField">
<type>carp</type>
</carp_depend_on>
<hellointerval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Hello interval must be between 0 and 4294967295.</ValidationMessage>
</hellointerval>
<deadinterval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Dead interval must be between 0 and 4294967295.</ValidationMessage>
</deadinterval>
<retransmitinterval type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Retransmit interval must be between 0 and 4294967295.</ValidationMessage>
</retransmitinterval>
<transmitdelay type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Transmit delay must be between 0 and 4294967295.</ValidationMessage>
</transmitdelay>
<priority type="IntegerField">
<MinimumValue>0</MinimumValue>
<MaximumValue>4294967295</MaximumValue>
<ValidationMessage>Priority must be between 0 and 4294967295.</ValidationMessage>
</priority>
<bfd type="BooleanField"/>
<networktype type="OptionField">
<OptionValues>
<broadcast>Broadcast multi-access network</broadcast>
<point-to-point>Point-to-point network</point-to-point>
</OptionValues>
</networktype>
</interface>
</interfaces>
<prefixlists>
<prefixlist type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<name type="TextField">
<Required>Y</Required>
<Mask>/^([0-9a-zA-Z\._\-]){1,64}$/u</Mask>
<ValidationMessage>The name should only contain alphanumeric characters, dashes, underscores or a dot.</ValidationMessage>
</name>
<seqnumber type="IntegerField">
<Required>Y</Required>
<MinimumValue>10</MinimumValue>
<MaximumValue>99</MaximumValue>
</seqnumber>
<action type="OptionField">
<Required>Y</Required>
<OptionValues>
<permit>Permit</permit>
<deny>Deny</deny>
</OptionValues>
</action>
<network type="TextField">
<Required>Y</Required>
</network>
</prefixlist>
<prefixlist type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<name type="TextField">
<Required>Y</Required>
<Mask>/^([0-9a-zA-Z\._\-]){1,64}$/u</Mask>
<ValidationMessage>The name should only contain alphanumeric characters, dashes, underscores or a dot.</ValidationMessage>
</name>
<seqnumber type="IntegerField">
<Required>Y</Required>
<MinimumValue>10</MinimumValue>
<MaximumValue>99</MaximumValue>
</seqnumber>
<action type="OptionField">
<Required>Y</Required>
<OptionValues>
<permit>Permit</permit>
<deny>Deny</deny>
</OptionValues>
</action>
<network type="TextField">
<Required>Y</Required>
</network>
</prefixlist>
</prefixlists>
<routemaps>
<routemap type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<name type="TextField">
<Required>Y</Required>
</name>
<action type="OptionField">
<Required>Y</Required>
<OptionValues>
<permit>Permit</permit>
<deny>Deny</deny>
</OptionValues>
</action>
<id type="IntegerField">
<Required>Y</Required>
<MinimumValue>10</MinimumValue>
<MaximumValue>99</MaximumValue>
</id>
<match2 type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
</template>
</Model>
<ValidationMessage>Related item not found</ValidationMessage>
</match2>
<set type="TextField"/>
</routemap>
<routemap type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<name type="TextField">
<Required>Y</Required>
</name>
<action type="OptionField">
<Required>Y</Required>
<OptionValues>
<permit>Permit</permit>
<deny>Deny</deny>
</OptionValues>
</action>
<id type="IntegerField">
<Required>Y</Required>
<MinimumValue>10</MinimumValue>
<MaximumValue>99</MaximumValue>
</id>
<match2 type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>prefixlists.prefixlist</items>
<display>name</display>
</template>
</Model>
<ValidationMessage>Related item not found.</ValidationMessage>
</match2>
<set type="TextField"/>
</routemap>
</routemaps>
<redistributions>
<redistribution type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<description type="DescriptionField"/>
<redistribute type="OptionField">
<Required>Y</Required>
<Default>connected</Default>
<OptionValues>
<bgp>Border Gateway Protocol (BGP)</bgp>
<connected>Connected routes (directly attached subnet or host)</connected>
<kernel>Kernel routes (not installed via the zebra RIB)</kernel>
<rip>Routing Information Protocol (RIP)</rip>
<static>Statically configured routes</static>
</OptionValues>
</redistribute>
<linkedRoutemap type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>routemaps.routemap</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Route-Map item not found</ValidationMessage>
</linkedRoutemap>
</redistribution>
<redistribution type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<description type="DescriptionField"/>
<redistribute type="OptionField">
<Required>Y</Required>
<Default>connected</Default>
<OptionValues>
<bgp>Border Gateway Protocol (BGP)</bgp>
<connected>Connected routes (directly attached subnet or host)</connected>
<kernel>Kernel routes (not installed via the zebra RIB)</kernel>
<rip>Routing Information Protocol (RIP)</rip>
<static>Statically configured routes</static>
</OptionValues>
</redistribute>
<linkedRoutemap type="ModelRelationField">
<Model>
<template>
<source>OPNsense.quagga.ospf6</source>
<items>routemaps.routemap</items>
<display>name</display>
<group>name</group>
</template>
</Model>
<ValidationMessage>Related Route-Map item not found.</ValidationMessage>
</linkedRoutemap>
</redistribution>
</redistributions>
</items>
</model>
@@ -14,34 +14,28 @@
<Required>Y</Required>
</version>
<networks type="CSVListField">
<Required>N</Required>
<Mask>/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2},)*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})$/</Mask>
</networks>
<passiveinterfaces type="InterfaceField">
<Required>N</Required>
<Multiple>Y</Multiple>
<Default></Default>
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
<Multiple>Y</Multiple>
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
</filters>
</passiveinterfaces>
<redistribute type="OptionField">
<Required>N</Required>
<Multiple>Y</Multiple>
<Default></Default>
<OptionValues>
<bgp>Border Gateway Protocol (BGP)</bgp>
<connected>Connected routes (directly attached subnet or host)</connected>
<kernel>Kernel routes (not installed via the zebra RIB)</kernel>
<ospf>Open Shortest Path First (OSPF)</ospf>
<static>Statically configured routes</static>
</OptionValues>
<Multiple>Y</Multiple>
<OptionValues>
<bgp>Border Gateway Protocol (BGP)</bgp>
<connected>Connected routes (directly attached subnet or host)</connected>
<kernel>Kernel routes (not installed via the zebra RIB)</kernel>
<ospf>Open Shortest Path First (OSPF)</ospf>
<static>Statically configured routes</static>
</OptionValues>
</redistribute>
<defaultmetric type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>16</MaximumValue>
<Required>N</Required>
</defaultmetric>
</items>
</model>
@@ -3,34 +3,32 @@
<description>Staticd Routing configuration</description>
<version>1.0.0</version>
<items>
<enabled type="BooleanField">
<Default>0</Default>
<Required>Y</Required>
</enabled>
<routes>
<route type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<network type="NetworkField">
<NetMaskRequired>Y</NetMaskRequired>
<Required>Y</Required>
<ValidationMessage>Specify a valid network matching the gateways ip protocol.</ValidationMessage>
</network>
<gateway type="NetworkField">
<NetMaskAllowed>N</NetMaskAllowed>
<Required>N</Required>
</gateway>
<interfacename type="InterfaceField">
<Multiple>N</Multiple>
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
<type>/^(?!group).*$/</type>
</filters>
</interfacename>
</route>
</routes>
<enabled type="BooleanField">
<Default>0</Default>
<Required>Y</Required>
</enabled>
<routes>
<route type="ArrayField">
<enabled type="BooleanField">
<Default>1</Default>
<Required>Y</Required>
</enabled>
<network type="NetworkField">
<NetMaskRequired>Y</NetMaskRequired>
<Required>Y</Required>
<ValidationMessage>Specify a valid network matching the gateway IP protocol.</ValidationMessage>
</network>
<gateway type="NetworkField">
<NetMaskAllowed>N</NetMaskAllowed>
</gateway>
<interfacename type="InterfaceField">
<AllowDynamic>Y</AllowDynamic>
<filters>
<enable>/^(?!0).*$/</enable>
<type>/^(?!group).*$/</type>
</filters>
</interfacename>
</route>
</routes>
</items>
</model>