wireless: fix channel check
[project/netifd.git] / scripts / netifd-proto.sh
old mode 100755 (executable)
new mode 100644 (file)
index 6f20de9..7f08b1d
@@ -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
 }