1*4a64e381SAndroid Build Coastguard Worker#!/bin/bash 2*4a64e381SAndroid Build Coastguard Worker# 3*4a64e381SAndroid Build Coastguard Worker# Copyright (c) 2018, The OpenThread Authors. 4*4a64e381SAndroid Build Coastguard Worker# All rights reserved. 5*4a64e381SAndroid Build Coastguard Worker# 6*4a64e381SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 7*4a64e381SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 8*4a64e381SAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 9*4a64e381SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 10*4a64e381SAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 11*4a64e381SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 12*4a64e381SAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 13*4a64e381SAndroid Build Coastguard Worker# 3. Neither the name of the copyright holder nor the 14*4a64e381SAndroid Build Coastguard Worker# names of its contributors may be used to endorse or promote products 15*4a64e381SAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 16*4a64e381SAndroid Build Coastguard Worker# 17*4a64e381SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18*4a64e381SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*4a64e381SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*4a64e381SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21*4a64e381SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*4a64e381SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*4a64e381SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*4a64e381SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25*4a64e381SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26*4a64e381SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27*4a64e381SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 28*4a64e381SAndroid Build Coastguard Worker# 29*4a64e381SAndroid Build Coastguard Worker 30*4a64e381SAndroid Build Coastguard Workerexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 31*4a64e381SAndroid Build Coastguard Worker 32*4a64e381SAndroid Build Coastguard Workerfunction parse_args() 33*4a64e381SAndroid Build Coastguard Worker{ 34*4a64e381SAndroid Build Coastguard Worker while [ $# -gt 0 ]; do 35*4a64e381SAndroid Build Coastguard Worker case $1 in 36*4a64e381SAndroid Build Coastguard Worker --radio-url) 37*4a64e381SAndroid Build Coastguard Worker RADIO_URL="$2" 38*4a64e381SAndroid Build Coastguard Worker shift 39*4a64e381SAndroid Build Coastguard Worker shift 40*4a64e381SAndroid Build Coastguard Worker ;; 41*4a64e381SAndroid Build Coastguard Worker --trel-url) 42*4a64e381SAndroid Build Coastguard Worker TREL_URL="$2" 43*4a64e381SAndroid Build Coastguard Worker shift 44*4a64e381SAndroid Build Coastguard Worker shift 45*4a64e381SAndroid Build Coastguard Worker ;; 46*4a64e381SAndroid Build Coastguard Worker --interface | -I) 47*4a64e381SAndroid Build Coastguard Worker TUN_INTERFACE_NAME=$2 48*4a64e381SAndroid Build Coastguard Worker shift 49*4a64e381SAndroid Build Coastguard Worker shift 50*4a64e381SAndroid Build Coastguard Worker ;; 51*4a64e381SAndroid Build Coastguard Worker --backbone-interface | -B) 52*4a64e381SAndroid Build Coastguard Worker BACKBONE_INTERFACE=$2 53*4a64e381SAndroid Build Coastguard Worker shift 54*4a64e381SAndroid Build Coastguard Worker shift 55*4a64e381SAndroid Build Coastguard Worker ;; 56*4a64e381SAndroid Build Coastguard Worker --nat64-prefix) 57*4a64e381SAndroid Build Coastguard Worker NAT64_PREFIX=$2 58*4a64e381SAndroid Build Coastguard Worker shift 59*4a64e381SAndroid Build Coastguard Worker shift 60*4a64e381SAndroid Build Coastguard Worker ;; 61*4a64e381SAndroid Build Coastguard Worker --debug-level) 62*4a64e381SAndroid Build Coastguard Worker DEBUG_LEVEL=$2 63*4a64e381SAndroid Build Coastguard Worker shift 64*4a64e381SAndroid Build Coastguard Worker shift 65*4a64e381SAndroid Build Coastguard Worker ;; 66*4a64e381SAndroid Build Coastguard Worker *) 67*4a64e381SAndroid Build Coastguard Worker shift 68*4a64e381SAndroid Build Coastguard Worker ;; 69*4a64e381SAndroid Build Coastguard Worker esac 70*4a64e381SAndroid Build Coastguard Worker done 71*4a64e381SAndroid Build Coastguard Worker} 72*4a64e381SAndroid Build Coastguard Worker 73*4a64e381SAndroid Build Coastguard Workerfunction shutdown() 74*4a64e381SAndroid Build Coastguard Worker{ 75*4a64e381SAndroid Build Coastguard Worker echo "Shutting down" 76*4a64e381SAndroid Build Coastguard Worker /app/script/server shutdown 77*4a64e381SAndroid Build Coastguard Worker exit 0 78*4a64e381SAndroid Build Coastguard Worker} 79*4a64e381SAndroid Build Coastguard Worker 80*4a64e381SAndroid Build Coastguard Workertrap shutdown TERM INT 81*4a64e381SAndroid Build Coastguard Worker 82*4a64e381SAndroid Build Coastguard Workerparse_args "$@" 83*4a64e381SAndroid Build Coastguard Worker 84*4a64e381SAndroid Build Coastguard Worker[ -n "$RADIO_URL" ] || RADIO_URL="spinel+hdlc+uart:///dev/ttyUSB0" 85*4a64e381SAndroid Build Coastguard Worker[ -n "$TREL_URL" ] || TREL_URL="" 86*4a64e381SAndroid Build Coastguard Worker[ -n "$TUN_INTERFACE_NAME" ] || TUN_INTERFACE_NAME="wpan0" 87*4a64e381SAndroid Build Coastguard Worker[ -n "$BACKBONE_INTERFACE" ] || BACKBONE_INTERFACE="eth0" 88*4a64e381SAndroid Build Coastguard Worker[ -n "$NAT64_PREFIX" ] || NAT64_PREFIX="64:ff9b::/96" 89*4a64e381SAndroid Build Coastguard Worker[ -n "$DEBUG_LEVEL" ] || DEBUG_LEVEL="7" 90*4a64e381SAndroid Build Coastguard Worker 91*4a64e381SAndroid Build Coastguard Workerecho "RADIO_URL:" $RADIO_URL 92*4a64e381SAndroid Build Coastguard Workerecho "TREL_URL:" "$TREL_URL" 93*4a64e381SAndroid Build Coastguard Workerecho "TUN_INTERFACE_NAME:" $TUN_INTERFACE_NAME 94*4a64e381SAndroid Build Coastguard Workerecho "BACKBONE_INTERFACE: $BACKBONE_INTERFACE" 95*4a64e381SAndroid Build Coastguard Workerecho "NAT64_PREFIX:" $NAT64_PREFIX 96*4a64e381SAndroid Build Coastguard Workerecho "DEBUG_LEVEL:" $DEBUG_LEVEL 97*4a64e381SAndroid Build Coastguard Worker 98*4a64e381SAndroid Build Coastguard WorkerNAT64_PREFIX=${NAT64_PREFIX/\//\\\/} 99*4a64e381SAndroid Build Coastguard WorkerTAYGA_CONF=/etc/tayga.conf 100*4a64e381SAndroid Build Coastguard WorkerBIND_CONF_OPTIONS=/etc/bind/named.conf.options 101*4a64e381SAndroid Build Coastguard Worker 102*4a64e381SAndroid Build Coastguard Worker! test -f $TAYGA_CONF || sed -i "s/^prefix.*$/prefix $NAT64_PREFIX/" $TAYGA_CONF 103*4a64e381SAndroid Build Coastguard Worker! test -f $BIND_CONF_OPTIONS || sed -i "s/dns64.*$/dns64 $NAT64_PREFIX {};/" $BIND_CONF_OPTIONS 104*4a64e381SAndroid Build Coastguard Workersed -i "s/$INFRA_IF_NAME/$BACKBONE_INTERFACE/" /etc/sysctl.d/60-otbr-accept-ra.conf 105*4a64e381SAndroid Build Coastguard Worker 106*4a64e381SAndroid Build Coastguard Workerecho "OTBR_AGENT_OPTS=\"-I $TUN_INTERFACE_NAME -B $BACKBONE_INTERFACE -d${DEBUG_LEVEL} $RADIO_URL $TREL_URL\"" >/etc/default/otbr-agent 107*4a64e381SAndroid Build Coastguard Workerecho "OTBR_WEB_OPTS=\"-I $TUN_INTERFACE_NAME -d${DEBUG_LEVEL} -p 80\"" >/etc/default/otbr-web 108*4a64e381SAndroid Build Coastguard Worker 109*4a64e381SAndroid Build Coastguard Worker/app/script/server 110*4a64e381SAndroid Build Coastguard Worker 111*4a64e381SAndroid Build Coastguard Workerwhile [[ ! -f /var/log/syslog ]]; do 112*4a64e381SAndroid Build Coastguard Worker sleep 1 113*4a64e381SAndroid Build Coastguard Workerdone 114*4a64e381SAndroid Build Coastguard Worker 115*4a64e381SAndroid Build Coastguard Workertail -f /var/log/syslog & 116*4a64e381SAndroid Build Coastguard Workerwait $! 117