X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=scripts%2Fnetifd-proto.sh;h=cc7031a304de064aa72b825442ef348ad0b7ecc8;hp=b5ef3d14e34505a6bdc7411daaa0365194532be3;hb=d397e8ca5dd492a1fac2e186e2a8b91ac8e463df;hpb=19c53807d9dc62782d03c5564630ed1bcb953cd8 diff --git a/scripts/netifd-proto.sh b/scripts/netifd-proto.sh index b5ef3d1..cc7031a 100644 --- a/scripts/netifd-proto.sh +++ b/scripts/netifd-proto.sh @@ -1,4 +1,5 @@ NETIFD_MAIN_DIR="${NETIFD_MAIN_DIR:-/lib/netifd}" +PROTO_DEFAULT_OPTIONS="defaultroute peerdns metric" . /usr/share/libubox/jshn.sh . $NETIFD_MAIN_DIR/utils.sh @@ -15,6 +16,18 @@ proto_config_add_boolean() { config_add_boolean "$@" } +proto_config_add_defaults() { + proto_config_add_boolean "defaultroute" + proto_config_add_boolean "peerdns" + proto_config_add_int "metric" +} + +proto_add_dynamic_defaults() { + [ -n "$defaultroute" ] && json_add_boolean defaultroute "$defaultroute" + [ -n "$peerdns" ] && json_add_boolean peerdns "$peerdns" + [ -n "$metric" ] && json_add_int metric "$metric" +} + _proto_do_teardown() { json_load "$data" eval "proto_$1_teardown \"$interface\" \"$ifname\"" @@ -121,8 +134,9 @@ proto_add_ipv4_route() { local mask="$2" local gw="$3" local source="$4" + local metric="$5" - append PROTO_ROUTE "$target/$mask/$gw///$source" + append PROTO_ROUTE "$target/$mask/$gw/$metric///$source" } proto_add_ipv6_route() { @@ -132,8 +146,9 @@ 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() { @@ -211,6 +226,8 @@ _proto_push_route() { str="${str#*/}" local valid="${str%%/*}" str="${str#*/}" + local table="${str%%/*}" + str="${str#*/}" local source="${str}" json_add_object "" @@ -220,6 +237,7 @@ _proto_push_route() { [ -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 } @@ -357,8 +375,10 @@ init_proto() { dump) add_protocol() { no_device=0 + no_proto_task=0 available=0 renew_handler=0 + teardown_on_l3_link_down=0 add_default_handler "proto_$1_init_config" @@ -368,8 +388,11 @@ init_proto() { eval "proto_$1_init_config" json_close_array json_add_boolean no-device "$no_device" + json_add_boolean no-proto-task "$no_proto_task" json_add_boolean available "$available" json_add_boolean renew-handler "$renew_handler" + json_add_boolean lasterror "$lasterror" + json_add_boolean teardown-on-l3-link-down "$teardown_on_l3_link_down" json_dump } ;;