#!/bin/sh
PPP_IPPARAM="$6"
PPP_IPPARAM6="${PPP_IPPARAM}6"
lockfile="/var/run/ppp-up.lock"

#ipv6 switcher for internal-use, close if is 0.
ipv6_show=$(uci get -q ipv6.settings.ipv6_show)
[ "$ipv6_show" = "0" ] && return 0

#here check if IPV6 feature is ON or OFF
ipv6flag=$(uci get -q ipv6.settings.enabled)
ipv6mode=$(uci get -q ipv6.settings.mode)
[ "$ipv6flag" != "1" -o -z "$ipv6mode" ] && return 0

. /lib/netifd/netifd-proto.sh

ppp_lock() {
    trap "lock -u $lockfile; exit 0" SIGHUP SIGINT SIGTERM
    # try for some seconds
    for i in $(seq 1 5); do
        lock -n $lockfile && return 0
        sleep 1
    done
    return 1
}

ppp_unlock() {
    lock -u $lockfile
}

ppp_lock && {
    logger -p9 -t ppp "ppp6-up update interface, $@"
    proto_init_update "$IFNAME" 1 1
    proto_set_keep 1
    [ -n "${PPP_IPPARAM6}" ] && {
        [ -n "$LLLOCAL" ] && proto_add_ipv6_address "$LLLOCAL" 128
    }
    proto_send_update "${PPP_IPPARAM6}"

    ppp_unlock

    return 0
}

logger -p9 -t ppp "ppp6-up NOT update interface for no locker, $@"
