1#!/bin/bash 2# 3# Copyright (c) 2017, The OpenThread Authors. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 3. Neither the name of the copyright holder nor the 14# names of its contributors may be used to endorse or promote products 15# derived from this software without specific prior written permission. 16# 17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27# POSSIBILITY OF SUCH DAMAGE. 28# 29# Description: 30# This script starts all border router services. 31# 32 33# shellcheck source=script/_initrc 34. "$(dirname "$0")"/_initrc 35. script/_nat64 36. script/_dns64 37. script/_firewall 38 39OTBR_MDNS="${OTBR_MDNS:-mDNSResponder}" 40OT_BACKBONE_CI="${OT_BACKBONE_CI:-0}" 41REFERENCE_DEVICE="${REFERENCE_DEVICE:-0}" 42 43startup() 44{ 45 # shellcheck source=/dev/null 46 . "$BEFORE_HOOK" 47 sudo sysctl --system 48 nat64_start || die 'Failed to start NAT64!' 49 dns64_start || die 'Failed to start DNS64!' 50 firewall_start || die 'Failed to start firewall' 51 52 start_service rsyslog 53 start_service dbus 54 # Thread Certification tests require Avahi to publish records for tests. Since the 55 # same image is used for all tests Avahi needs to be started here and if 56 # building a reference device. 57 if [[ ${OTBR_MDNS} == "avahi" || ${OT_BACKBONE_CI} == 1 || ${REFERENCE_DEVICE} == 1 ]]; then 58 start_service avahi-daemon 59 fi 60 if have service; then 61 sudo service mdns status || sudo service mdns start || echo "service mdns is not available!" 62 fi 63 without WEB_GUI || start_service otbr-web 64 start_service otbr-agent 65 66 # shellcheck source=/dev/null 67 . "$AFTER_HOOK" 68} 69 70shutdown() 71{ 72 nat64_stop || echo 'Failed to stop NAT64!' 73 dns64_stop || echo 'Failed to stop DNS64!' 74 firewall_stop || echo 'Failed to stop firewall' 75 76 stop_service rsyslog 77 stop_service dbus 78 if [[ ${OTBR_MDNS} == "avahi" || ${OT_BACKBONE_CI} == 1 || ${REFERENCE_DEVICE} == 1 ]]; then 79 systemctl is-active avahi-daemon && sudo systemctl stop avahi-daemon || echo 'Failed to stop avahi!' 80 fi 81 if have service; then 82 stop_service mdns 83 fi 84 without WEB_GUI || stop_service otbr-web 85 stop_service otbr-agent 86} 87 88main() 89{ 90 if [[ ${1-} == "shutdown" ]]; then 91 shift 92 shutdown "$@" 93 else 94 startup "$@" 95 fi 96} 97 98main "$@" 99