| #!/bin/sh | |
| # Copyright 2018 The ChromiumOS Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| # Set the ARP gateway. | |
| FLAGS_HELP="Usage: | |
| $(basename "$0") | |
| $(basename "$0") [true | false] | |
| Turn on extra network state checking to make sure the default gateway | |
| is reachable. | |
| " | |
| FLIMFLAM=org.chromium.flimflam | |
| IMANAGER=$FLIMFLAM.Manager | |
| usage() { | |
| echo "$*" | |
| echo | |
| echo "${FLAGS_HELP}" | |
| exit 1 | |
| } | |
| dbus () { | |
| local obj=$1 | |
| local meth=$2 | |
| shift 2 | |
| dbus-send --system --print-reply --fixed --dest=$FLIMFLAM "$obj" "$meth" "$@" | |
| } | |
| get_manager () { | |
| dbus / $IMANAGER.GetProperties | sed -n "/$1/s/.* //p" | |
| } | |
| display_arpgw () { | |
| local arpgw | |
| arpgw="$(get_manager ArpGateway)" | |
| if [ -n "${arpgw}" ]; then | |
| echo "Current Gateway ARP setting: ${arpgw}" | |
| exit 0 | |
| fi | |
| echo "This Flimflam instance does not support ArpGateway" | |
| exit 0 | |
| } | |
| if [ $# -lt 1 ]; then | |
| display_arpgw | |
| fi | |
| set_arpgw="$1" | |
| if [ "${set_arpgw}" != false ] && [ "${set_arpgw}" != true ]; then | |
| usage "Argument must be 'true' or 'false'" | |
| fi | |
| dbus / $IMANAGER.SetProperty string:"ArpGateway" variant:boolean:"${set_arpgw}" |