xref: /aosp_15_r20/external/ot-br-posix/etc/docker/docker_entrypoint.sh (revision 4a64e381480ef79f0532b2421e44e6ee336b8e0d)
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