diff --git a/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers b/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers deleted file mode 100755 index 4affaeb5c1..0000000000 --- a/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -interface=$6 -if [ -z "$interface" ]; then - exit -fi - -if ! /usr/bin/systemctl -q is-active vyos-hostsd; then - exit # vyos-hostsd is not running -fi - -hostsd_client="/usr/bin/vyos-hostsd-client" - -$hostsd_client --delete-name-servers --tag "dhcp-$interface" - -if [ "$USEPEERDNS" ] && [ -n "$DNS1" ]; then -$hostsd_client --add-name-servers "$DNS1" --tag "dhcp-$interface" -fi -if [ "$USEPEERDNS" ] && [ -n "$DNS2" ]; then -$hostsd_client --add-name-servers "$DNS2" --tag "dhcp-$interface" -fi - -$hostsd_client --apply diff --git a/src/etc/ppp/ip-up.d/99-vyos-ppp-callback b/src/etc/ppp/ip-up.d/99-vyos-ppp-callback new file mode 100644 index 0000000000..fe3f5087eb --- /dev/null +++ b/src/etc/ppp/ip-up.d/99-vyos-ppp-callback @@ -0,0 +1,45 @@ +#!/bin/bash + +interface=$6 +if [ -z "$interface" ]; then + exit +fi + +# 1. Handle sstpc interface callback +if [[ "$interface" == sstpc* ]]; then + /etc/ppp/ip-up.d/ppp-hook-scripts/96-vyos-sstpc-callback "$@" +fi + +# 2. Configure DNS via vyos-hostsd if active +hostsd_client="/usr/bin/vyos-hostsd-client" +hostsd_active=false + +if /usr/bin/systemctl -q is-active vyos-hostsd; then + hostsd_active=true +fi + +if $hostsd_active; then + $hostsd_client --delete-name-servers --tag "dhcp-$interface" + + if [ "$USEPEERDNS" ] && [ -n "$DNS1" ]; then + $hostsd_client --add-name-servers "$DNS1" --tag "dhcp-$interface" + fi + + if [ "$USEPEERDNS" ] && [ -n "$DNS2" ]; then + $hostsd_client --add-name-servers "$DNS2" --tag "dhcp-$interface" + fi + + $hostsd_client --apply +fi + +# 3. Handle pppoe interface callbacks +if [[ "$interface" == pppoe* ]]; then + /etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-callback "$@" + /etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-qos "$@" +fi + +# 4. Handle WLB callback if wlb daemon is running +WLB_PID_FILE="/run/wlb_daemon.pid" +if [ -f "$WLB_PID_FILE" ]; then + /etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-wlb "$@" +fi diff --git a/src/etc/ppp/ip-up.d/96-vyos-sstpc-callback b/src/etc/ppp/ip-up.d/ppp-hook-scripts/96-vyos-sstpc-callback old mode 100755 new mode 100644 similarity index 100% rename from src/etc/ppp/ip-up.d/96-vyos-sstpc-callback rename to src/etc/ppp/ip-up.d/ppp-hook-scripts/96-vyos-sstpc-callback diff --git a/src/etc/ppp/ip-up.d/99-vyos-pppoe-callback b/src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-callback old mode 100755 new mode 100644 similarity index 100% rename from src/etc/ppp/ip-up.d/99-vyos-pppoe-callback rename to src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-callback diff --git a/src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-qos b/src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-qos new file mode 100644 index 0000000000..4c700d0b1b --- /dev/null +++ b/src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-qos @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +# Dynamic interfaces may lose QoS config on reconnect. +# This script reapplies the QoS policy when the interface comes up. + +from sys import argv +from sys import exit +from vyos.utils.process import call +from vyos.configquery import ConfigTreeQuery + +# When the ppp link comes up, this script is called with the following +# parameters +# $1 the interface name used by pppd (e.g., pppoe0, l2tpc0, sstpc0) +# $2 the tty device name +# $3 the tty device speed +# $4 the local IP address for the interface +# $5 the remote IP address +# $6 the parameter specified by the 'ipparam' option to pppd + +if len(argv) < 7: + exit(1) + +interface = argv[6] + +conf = ConfigTreeQuery() + +try: + # Check if QoS is configured for the interface + qos_path = ['qos', 'interface', interface] + if conf.exists(qos_path): + call('/usr/libexec/vyos/conf_mode/qos.py') +except Exception: + exit(1) diff --git a/src/etc/ppp/ip-up.d/99-vyos-pppoe-wlb b/src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-wlb old mode 100755 new mode 100644 similarity index 100% rename from src/etc/ppp/ip-up.d/99-vyos-pppoe-wlb rename to src/etc/ppp/ip-up.d/ppp-hook-scripts/99-vyos-pppoe-wlb