X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=scripts%2Fnetifd-proto.sh;h=7f08b1d15c725dd45b85b919712b6bb0d6026fa6;hp=6f20de91a7ce464fa4612dae7a2bff83f01b1ba5;hb=3833d8708e387ffa02f5dca972b0119461cb8629;hpb=c8e879595400e3485b5a075797290a1061c0b04f diff --git a/scripts/netifd-proto.sh b/scripts/netifd-proto.sh old mode 100755 new mode 100644 index 6f20de9..7f08b1d --- a/scripts/netifd-proto.sh +++ b/scripts/netifd-proto.sh @@ -1,37 +1,18 @@ -. /usr/share/libubox/jshn.sh - -append() { - local var="$1" - local value="$2" - local sep="${3:- }" - - eval "export -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\"" -} +NETIFD_MAIN_DIR="${NETIFD_MAIN_DIR:-/lib/netifd}" -proto_config_add_generic() { - json_add_array "" - json_add_string "" "$1" - json_add_int "" "$2" - json_close_array -} +. /usr/share/libubox/jshn.sh +. $NETIFD_MAIN_DIR/utils.sh proto_config_add_int() { - proto_config_add_generic "$1" 5 + config_add_int "$@" } proto_config_add_string() { - proto_config_add_generic "$1" 3 + config_add_string "$@" } proto_config_add_boolean() { - proto_config_add_generic "$1" 7 -} - -add_default_handler() { - case "$(type $1 2>/dev/null)" in - *function*) return;; - *) eval "$1() { return; }" - esac + config_add_boolean "$@" } _proto_do_teardown() { @@ -125,8 +106,9 @@ proto_add_ipv6_address() { local preferred="$3" local valid="$4" local offlink="$5" + local class="$6" - append PROTO_IP6ADDR "$address/$mask/$preferred/$valid/$offlink" + append PROTO_IP6ADDR "$address/$mask/$preferred/$valid/$offlink/$class" } proto_add_ipv4_route() { @@ -194,6 +176,8 @@ _proto_push_ipv6_addr() { valid="${str%%/*}" str="${str#*/}" offlink="${str%%/*}" + str="${str#*/}" + class="${str%%/*}" json_add_object "" json_add_string ipaddr "$address" @@ -201,6 +185,7 @@ _proto_push_ipv6_addr() { [ -n "$preferred" ] && json_add_int preferred "$preferred" [ -n "$valid" ] && json_add_int valid "$valid" [ -n "$offlink" ] && json_add_boolean offlink "$offlink" + [ -n "$class" ] && json_add_string class "$class" json_close_object }