29. 実例: MAP 機能の追加
templates/interfaces/map/node.def:
tag:
priority: 380
type: txt
help: MAP interface
val_help: <mapN>; 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-forwar... for $VAR(@)"
... (続く) ...
30. 実例: MAP 機能の追加
templates/interfaces/map/node.def:
... (続き) ...
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(@)
31. 実例: MAP 機能の追加
templates/interfaces/map/node.tag/role/node.def:
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
templates/interfaces/map/node.tag/br-address/node.def:
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(../@)"