From 70c971ce79774b4c043bf9d9f7e790055e04ebb5 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Sun, 6 Sep 2015 14:34:44 +0000 Subject: [PATCH] pppoe-server: Allow passing DNS servers to the client Signed-off-by: Stefan Schantl Signed-off-by: Michael Tremer --- src/functions/functions.pppoe-server | 4 ++-- src/hooks/configs/pppoe-server | 20 +++++++++++++++++++- src/ppp/pppoe-server | 3 ++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/functions/functions.pppoe-server b/src/functions/functions.pppoe-server index 02e4b9a0..2db74331 100644 --- a/src/functions/functions.pppoe-server +++ b/src/functions/functions.pppoe-server @@ -78,8 +78,8 @@ pppoe_server_options() { --disable-ipv6) ipv6="false" ;; - --dns-server=*) - dns_servers="${dns_servers} $(cli_get_val ${1})" + --dns-servers=*) + dns_servers="$(cli_get_val ${1})" ;; --lcp-echo-failure=*) lcp_echo_failure=$(cli_get_val ${1}) diff --git a/src/hooks/configs/pppoe-server b/src/hooks/configs/pppoe-server index d952ecc2..1ef3ba9c 100644 --- a/src/hooks/configs/pppoe-server +++ b/src/hooks/configs/pppoe-server @@ -21,7 +21,7 @@ . /usr/lib/network/header-config -HOOK_CONFIG_SETTINGS="HOOK MTU SERVICE_NAME SUBNET MAX_SESSIONS" +HOOK_CONFIG_SETTINGS="HOOK DNS_SERVERS MTU SERVICE_NAME SUBNET MAX_SESSIONS" # Maximum Transmission Unit. MTU=1492 @@ -41,6 +41,11 @@ hook_check_config_settings() { assert isset MTU assert isset SUBNET assert isset MAX_SESSIONS + + local server + for server in ${DNS_SERVERS}; do + assert ipv4_is_valid "${server}" + done } hook_new() { @@ -49,6 +54,19 @@ hook_new() { while [ $# -gt 0 ]; do case "${1}" in + --dns-server=*) + local dns_servers="$(cli_get_val "${1}")" + + local dns_server + for dns_server in ${dns_servers}; do + if ! ipv4_is_valid "${dns_server}"; then + warning "Invalid IPv4 address: ${dns_server}. Skipped." + continue + fi + + list_append DNS_SERVERS "${dns_server}" + done + ;; --max-sessions=*) MAX_SESSIONS=$(cli_get_val ${1}) ;; diff --git a/src/ppp/pppoe-server b/src/ppp/pppoe-server index 75dac188..96814653 100644 --- a/src/ppp/pppoe-server +++ b/src/ppp/pppoe-server @@ -75,7 +75,8 @@ case "${action}" in fi # Create the pppoe-server-options file. - pppoe_server_options ${pppd_options} ${zone} + pppoe_server_options ${pppd_options} ${zone} \ + --dns-servers="${DNS_SERVERS}" pppoe_cmdline="${pppoe_cmdline} -O ${pppd_options}" # Configure the IP addresses. -- 2.39.2