eval "proto_$1_teardown \"$interface\" \"$ifname\""
}
+_proto_do_renew() {
+ json_load "$data"
+ eval "proto_$1_renew \"$interface\" \"$ifname\""
+}
+
_proto_do_setup() {
json_load "$data"
_EXPORT_VAR=0
local target="$1"
local mask="$2"
local gw="$3"
+ local source="$4"
- append PROTO_ROUTE "$target/$mask/$gw//"
+ append PROTO_ROUTE "$target/$mask/$gw////$source"
}
proto_add_ipv6_route() {
local metric="$4"
local valid="$5"
local source="$6"
+ local table="$7"
- append PROTO_ROUTE6 "$target/$mask/$gw/$metric/$valid/$source"
+ append PROTO_ROUTE6 "$target/$mask/$gw/$metric/$valid/$table/$source"
}
proto_add_ipv6_prefix() {
str="${str#*/}"
local valid="${str%%/*}"
str="${str#*/}"
+ local table="${str%%/*}"
+ str="${str#*/}"
local source="${str}"
json_add_object ""
[ -n "$metric" ] && json_add_int metric "$metric"
[ -n "$valid" ] && json_add_int valid "$valid"
[ -n "$source" ] && json_add_string source "$source"
+ [ -n "$table" ] && json_add_string table "$table"
json_close_object
}
add_protocol() {
no_device=0
available=0
+ renew_handler=0
add_default_handler "proto_$1_init_config"
json_close_array
json_add_boolean no-device "$no_device"
json_add_boolean available "$available"
+ json_add_boolean renew-handler "$renew_handler"
json_dump
}
;;
- setup|teardown)
+ setup|teardown|renew)
interface="$1"; shift
data="$1"; shift
ifname="$1"; shift
case "$cmd" in
setup) _proto_do_setup "$1";;
teardown) _proto_do_teardown "$1" ;;
+ renew) _proto_do_renew "$1" ;;
*) return 1 ;;
esac
}