X-Git-Url: http://git.openwrt.org/?p=feed%2Frouting.git;a=blobdiff_plain;f=batman-adv%2Ffiles%2Flib%2Fnetifd%2Fproto%2Fbatadv.sh;h=eb8153c8ece6b54d9e1c028df96fae4d452be410;hp=1e0c9d0fe24d44c7f7cc9bddaf8065c60f680862;hb=54af5a209e0a0a75b5eb712c0ca8056e66de02c0;hpb=4e5c403a52af6e3939438cdf6cd5aad8eb2b7779 diff --git a/batman-adv/files/lib/netifd/proto/batadv.sh b/batman-adv/files/lib/netifd/proto/batadv.sh old mode 100644 new mode 100755 index 1e0c9d0..eb8153c --- a/batman-adv/files/lib/netifd/proto/batadv.sh +++ b/batman-adv/files/lib/netifd/proto/batadv.sh @@ -1,34 +1,119 @@ #!/bin/sh -. /lib/functions.sh -. ../netifd-proto.sh -init_proto "$@" +[ -n "$INCLUDE_ONLY" ] || { + . /lib/functions.sh + . ../netifd-proto.sh + init_proto "$@" +} proto_batadv_init_config() { - proto_config_add_string "mesh" - proto_config_add_string "routing_algo" + no_device=1 + available=1 + + proto_config_add_boolean 'aggregated_ogms:bool' + proto_config_add_boolean 'ap_isolation:bool' + proto_config_add_boolean 'bonding:bool' + proto_config_add_boolean 'bridge_loop_avoidance:bool' + proto_config_add_boolean 'distributed_arp_table:bool' + proto_config_add_boolean 'fragmentation:bool' + proto_config_add_string 'gw_bandwidth' + proto_config_add_string 'gw_mode' + proto_config_add_int 'gw_sel_class' + proto_config_add_int 'hop_penalty' + proto_config_add_string 'isolation_mark' + proto_config_add_string 'log_level' + proto_config_add_boolean 'multicast_mode:bool' + proto_config_add_boolean 'network_coding:bool' + proto_config_add_int 'orig_interval' + proto_config_add_string 'routing_algo' } proto_batadv_setup() { local config="$1" - local iface="$2" + local iface="$config" + + local aggregated_ogms + local ap_isolation + local bonding + local bridge_loop_avoidance + local distributed_arp_table + local fragmentation + local gw_bandwidth + local gw_mode + local gw_sel_class + local hop_penalty + local isolation_mark + local log_level + local multicast_mode + local network_coding + local orig_interval + local routing_algo + + json_get_vars aggregated_ogms + json_get_vars ap_isolation + json_get_vars bonding + json_get_vars bridge_loop_avoidance + json_get_vars distributed_arp_table + json_get_vars fragmentation + json_get_vars gw_bandwidth + json_get_vars gw_mode + json_get_vars gw_sel_class + json_get_vars hop_penalty + json_get_vars isolation_mark + json_get_vars log_level + json_get_vars multicast_mode + json_get_vars network_coding + json_get_vars orig_interval + json_get_vars routing_algo + + set_default routing_algo 'BATMAN_IV' + + batctl routing_algo "$routing_algo" + batctl -m "$iface" interface create + + [ -n "$aggregated_ogms" ] && batctl -m "$iface" aggregation "$aggregated_ogms" + [ -n "$ap_isolation" ] && batctl -m "$iface" ap_isolation "$ap_isolation" + [ -n "$bonding" ] && batctl -m "$iface" bonding "$bonding" + [ -n "$bridge_loop_avoidance" ] && batctl -m "$iface" bridge_loop_avoidance "$bridge_loop_avoidance" 2>&- + [ -n "$distributed_arp_table" ] && batctl -m "$iface" distributed_arp_table "$distributed_arp_table" 2>&- + [ -n "$fragmentation" ] && batctl -m "$iface" fragmentation "$fragmentation" - local mesh routing_algo - json_get_vars mesh routing_algo + case "$gw_mode" in + server) + if [ -n "$gw_bandwidth" ]; then + batctl -m "$iface" gw_mode "server" "$gw_bandwidth" + else + batctl -m "$iface" gw_mode "server" + fi + ;; + client) + if [ -n "$gw_sel_class" ]; then + batctl -m "$iface" gw_mode "client" "$gw_sel_class" + else + batctl -m "$iface" gw_mode "client" + fi + ;; + *) + batctl -m "$iface" gw_mode "off" + ;; + esac - [ -n "$routing_algo" ] || routing_algo="BATMAN_IV" - echo "$routing_algo" > "/sys/module/batman_adv/parameters/routing_algo" + [ -n "$hop_penalty" ] && batctl -m "$iface" hop_penalty "$hop_penalty" + [ -n "$isolation_mark" ] && batctl -m "$iface" isolation_mark "$isolation_mark" + [ -n "$multicast_mode" ] && batctl -m "$iface" multicast_mode "$multicast_mode" 2>&- + [ -n "$network_coding" ] && batctl -m "$iface" network_coding "$network_coding" 2>&- + [ -n "$log_level" ] && batctl -m "$iface" loglevel "$log_level" 2>&- + [ -n "$orig_interval" ] && batctl -m "$iface" orig_interval "$orig_interval" - echo "$mesh" > "/sys/class/net/$iface/batman_adv/mesh_iface" proto_init_update "$iface" 1 proto_send_update "$config" } proto_batadv_teardown() { local config="$1" - local iface="$2" + local iface="$config" - echo "none" > "/sys/class/net/$iface/batman_adv/mesh_iface" || true + batctl -m "$iface" interface destroy } add_protocol batadv