diff --git a/templates/interfaces/map/node.def b/templates/interfaces/map/node.def index e69de29..9003232 100644 --- a/templates/interfaces/map/node.def +++ b/templates/interfaces/map/node.def @@ -0,0 +1,34 @@ +tag: +priority: 380 +type: txt +help: MAP interface +val_help: ; MAP interface name +syntax:expression: pattern $VAR(@) "^map[0-9]+$" \ + ; "MAP interface must be (map0-map999)" + +commit:expression: $VAR(./role/) != "" ; \ + "Must configure the tunnel role for $VAR(@)" +commit:expression: $VAR(./tunnel-source/) != "" || $VAR(./role/@) == "br"; \ + "Must configure the tunnel tunnel-source for $VAR(@)" +commit:expression: $VAR(./br-address/) != "" ; \ + "Must configure the tunnel br-address for $VAR(@)" +commit:expression: $VAR(./default-forwarding-mode/) != "" ; \ + "Must configure the tunnel default-forwarding-mode for $VAR(@)" + +create: + if [ -n "$VAR(./tunnel-source/@)" ] ; then + TS="tunnel-source $VAR(./tunnel-source/@)" + fi + if [ -n "$VAR(./default-forwarding-rule/@)" ] ; then + DFR="default-forwarding-rule $VAR(./default-forwarding-rule/@)" + fi + if [ -n "$VAR(./always-napt/@)" ] ; then + AN="always-napt $VAR(./always-napt/@)" + fi + ip map add $VAR(@) role $VAR(./role/@) $TS br-address $VAR(./br-address/@) default-forwarding-mode $VAR(./default-forwarding-mode/@) $DFR $AN + ip link set $VAR(@) up || + echo "interfaces MAP $VAR(@): error setting MAP interface active" + +delete: + ip link set $VAR(@) down + ip map del $VAR(@) diff --git a/templates/interfaces/map/node.tag/br-address/node.def b/templates/interfaces/map/node.tag/br-address/node.def index e69de29..91ab807 100644 --- a/templates/interfaces/map/node.tag/br-address/node.def +++ b/templates/interfaces/map/node.tag/br-address/node.def @@ -0,0 +1,6 @@ +type: ipv6net +val_help: ipv6net; IPv6 address and prefix length +help: BR IP address/prefix [REQUIRED] +syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" +create:expression: "true" +update:expression: "false" ; "BR IP address/prefix can only be set at MAP creation for $VAR(../@)" diff --git a/templates/interfaces/map/node.tag/default-forwarding-mode/node.def b/templates/interfaces/map/node.tag/default-forwarding-mode/node.def index e69de29..5bbc3b5 100644 --- a/templates/interfaces/map/node.tag/default-forwarding-mode/node.def +++ b/templates/interfaces/map/node.tag/default-forwarding-mode/node.def @@ -0,0 +1,8 @@ +type: txt +help: Default forwarding mode of this MAP interface [REQUIRED] +syntax:expression: $VAR(@) in "translation", "encapsulation"; "Must be (translation, encapsulation)" +allowed: echo translation encapsulation +create:expression: "true" +update:expression: "false" ; "Default forwarding mode can only be set at MAP creation for $VAR(../@)" +val_help: translation; Translation mode +val_help: encapsulation; Encapsulation mode diff --git a/templates/interfaces/map/node.tag/default-forwarding-rule/node.def b/templates/interfaces/map/node.tag/default-forwarding-rule/node.def index e69de29..2532afc 100644 --- a/templates/interfaces/map/node.tag/default-forwarding-rule/node.def +++ b/templates/interfaces/map/node.tag/default-forwarding-rule/node.def @@ -0,0 +1,6 @@ +type: bool +help: Default value for forwarding rule +create:expression: "true" +update:expression: "false" ; "Default forwarding rule can only be set at MAP creation for $VAR(../@)" +val_help: true; Default as forwarding rule +val_help: false; Default as not forwarding rule diff --git a/templates/interfaces/map/node.tag/role/node.def b/templates/interfaces/map/node.tag/role/node.def index e69de29..df9cda8 100644 --- a/templates/interfaces/map/node.tag/role/node.def +++ b/templates/interfaces/map/node.tag/role/node.def @@ -0,0 +1,8 @@ +type: txt +help: Role of this MAP interface [REQUIRED] +syntax:expression: $VAR(@) in "br", "ce"; "Must be (br, ce)" +allowed: echo br ce +create:expression: "true" +update:expression: "false" ; "Role can only be set at MAP creation for $VAR(../@)" +val_help: br; Role as BR +val_help: ce; Role as CE diff --git a/templates/interfaces/map/node.tag/rule/node.def b/templates/interfaces/map/node.tag/rule/node.def index e69de29..2782dbf 100644 --- a/templates/interfaces/map/node.tag/rule/node.def +++ b/templates/interfaces/map/node.tag/rule/node.def @@ -0,0 +1,31 @@ +tag: + +type: u32 + +help: Rule number (1-9999) + +syntax:expression: $VAR(@) > 0 && $VAR(@) <= 9999; "MAP rule number must be between 1 and 9999" + +val_help: u32:1-9999; Rule number + +commit:expression: $VAR(./ipv6-prefix/) != "" ; \ + "Must configure the IPv6 rule prefix for rule $VAR(@)" +commit:expression: $VAR(./ipv4-prefix/) != "" ; \ + "Must configure the IPv4 rule prefix for rule $VAR(@)" +commit:expression: $VAR(./ea-length/) != "" ; \ + "Must configure the EA-bits length for rule $VAR(@)" + +create: + if [ -n "$VAR(./forwarding-mode/@)" ] ; then + FM="forwarding-mode $VAR(./forwarding-mode/@)" + fi + if [ -n "$VAR(./forwarding-rule/@)" ] ; then + FR="forwarding-rule $VAR(./forwarding-rule/@)" + fi + if [ -n "$VAR(./psid-offset/@)" ] ; then + PO="psid-offset $VAR(./psid-offset/@)" + fi + ip map add-rule ipv6-prefix $VAR(./ipv6-prefix/@) ipv4-prefix $VAR(./ipv4-prefix/@) ea-length $VAR(./ea-length/@) $FM $FR $PO dev $VAR(../@) + +delete: + ip map del-rule ipv6-prefix $VAR(./ipv6-prefix/@) ipv4-prefix $VAR(./ipv4-prefix/@) ea-length $VAR(./ea-length/@) dev $VAR(../@) diff --git a/templates/interfaces/map/node.tag/rule/node.tag/ea-length/node.def b/templates/interfaces/map/node.tag/rule/node.tag/ea-length/node.def index e69de29..d10b8a0 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/ea-length/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/ea-length/node.def @@ -0,0 +1,6 @@ +type: u32 +help: EA-bits length [REQUIRED] +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 48; "EA-bits length must be between 0 and 48" +create:expression: "true" +update:expression: "false" ; "EA-bits length can only be set at MAP rule creation for $VAR(../@)" +val_help: u32:0-48; EA-bits length diff --git a/templates/interfaces/map/node.tag/rule/node.tag/forwarding-mode/node.def b/templates/interfaces/map/node.tag/rule/node.tag/forwarding-mode/node.def index e69de29..d6ca01b 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/forwarding-mode/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/forwarding-mode/node.def @@ -0,0 +1,8 @@ +type: txt +help: Forwarding mode of this rule +syntax:expression: $VAR(@) in "translation", "encapsulation"; "Must be (translation, encapsulation)" +allowed: echo translation encapsulation +create:expression: "true" +update:expression: "false" ; "Forwarding mode can only be set at MAP rule creation for $VAR(../@)" +val_help: translation; Translation mode +val_help: encapsulation; Encapsulation mode diff --git a/templates/interfaces/map/node.tag/rule/node.tag/forwarding-rule/node.def b/templates/interfaces/map/node.tag/rule/node.tag/forwarding-rule/node.def index e69de29..1b03977 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/forwarding-rule/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/forwarding-rule/node.def @@ -0,0 +1,6 @@ +type: bool +help: Use or not this rule as forwarding rule +create:expression: "true" +update:expression: "false" ; "Forwarding rule can only be set at MAP rule creation for $VAR(../@)" +val_help: true; Use this rule as forwarding rule +val_help: false; Don't use this rule as forwarding rule diff --git a/templates/interfaces/map/node.tag/rule/node.tag/ipv4-prefix/node.def b/templates/interfaces/map/node.tag/rule/node.tag/ipv4-prefix/node.def index e69de29..7bc9d68 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/ipv4-prefix/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/ipv4-prefix/node.def @@ -0,0 +1,5 @@ +type: ipv4net +help: IPv4 rule prefix [REQUIRED] +syntax:expression: exec "${vyatta_sbindir}/check_prefix_boundary $VAR(@)" +create:expression: "true" +update:expression: "false" ; "IPv4 rule prefix can only be set at MAP rule creation for $VAR(../@)" diff --git a/templates/interfaces/map/node.tag/rule/node.tag/ipv6-prefix/node.def b/templates/interfaces/map/node.tag/rule/node.tag/ipv6-prefix/node.def index e69de29..f8a0115 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/ipv6-prefix/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/ipv6-prefix/node.def @@ -0,0 +1,5 @@ +type: ipv6net +help: IPv6 rule prefix [REQUIRED] +syntax:expression: exec "${vyatta_sbindir}/check_prefix_boundary $VAR(@)" +create:expression: "true" +update:expression: "false" ; "IPv6 rule prefix can only be set at MAP rule creation for $VAR(../@)" diff --git a/templates/interfaces/map/node.tag/rule/node.tag/psid-offset/node.def b/templates/interfaces/map/node.tag/rule/node.tag/psid-offset/node.def index e69de29..a1d66a6 100644 --- a/templates/interfaces/map/node.tag/rule/node.tag/psid-offset/node.def +++ b/templates/interfaces/map/node.tag/rule/node.tag/psid-offset/node.def @@ -0,0 +1,6 @@ +type: u32 +help: PSID offset +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 16; "PSID offset must be between 0 and 16" +create:expression: "true" +update:expression: "false" ; "PSID offset can only be set at MAP rule creation for $VAR(../@)" +val_help: u32:0-16; PSID offset diff --git a/templates/interfaces/map/node.tag/tunnel-source/node.def b/templates/interfaces/map/node.tag/tunnel-source/node.def index e69de29..d5f37be 100644 --- a/templates/interfaces/map/node.tag/tunnel-source/node.def +++ b/templates/interfaces/map/node.tag/tunnel-source/node.def @@ -0,0 +1,13 @@ +type: txt +help: Ethernet interface name [REQUIRED if role == ce] +allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet +syntax:expression: pattern $VAR(@) "^eth[0-9]+$" \ + ; "interface ethernet $VAR(@): not a valid name" +syntax:expression: exec \ + "if [ ! -d /sys/class/net/$VAR(@) ]; then \ + echo \"interface ethernet $VAR(@): does not exist\"; + exit 1; \ + fi" +create:expression: "true" +update:expression: "false" ; "Tunnel source can only be set at MAP creation for $VAR(../@)" +val_help: ; Ethernet interface name