esac
}
+_proto_do_teardown() {
+ json_load "$data"
+ eval "$1_teardown \"$interface\" \"$ifname\""
+}
+
+_proto_do_setup() {
+ json_load "$data"
+ eval "$1_setup \"$interface\" \"$ifname\""
+}
+
proto="$1"; shift
cmd="$1"; shift
-interface="$1"; shift
-data="$1"; shift
-ifname="$1"; shift
case "$cmd" in
dump)
json_dump
}
;;
- *)
+ setup|teardown)
+ interface="$1"; shift
+ data="$1"; shift
+ ifname="$1"; shift
+
add_protocol() {
[[ "$proto" == "$1" ]] || return 0
case "$cmd" in
- setup) eval "$1_setup \"\$interface\" \"\$data\" \"\$ifname\"" ;;
- teardown) eval "$1_teardown \"\$interface\" \"\$data\" \"\$ifname\"" ;;
+ setup) _proto_do_setup "$1";;
+ teardown) _proto_do_teardown "$1" ;;
*) return 1 ;;
esac
}