From 5f82e7d92c3d2bf856158067153ccef5e37dc558 Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Sun, 13 Jun 2021 19:55:10 +0200 Subject: wwan: T3622: add support for APN authentication Some APNs require a username/password. Add CLI nodes (matching the PPPoE syntax) for client authentication. One APN would be the IPv4/IPv6 APN from Deutsche Telekom (Germany) APN Name: Telekom Internet IPv6 APN: internet.v6.telekom Benutzername: telekom Passwort: tm (cherry picked from commit c667a45a8fb06cb76c907348c4f1e3ec708b6e03) --- .../include/interface/authentication.xml.i | 27 ++++++++++++++++++++++ interface-definitions/interfaces-pppoe.xml.in | 18 +-------------- interface-definitions/interfaces-wwan.xml.in | 1 + src/conf_mode/interfaces-wwan.py | 11 +++++++-- 4 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 interface-definitions/include/interface/authentication.xml.i diff --git a/interface-definitions/include/interface/authentication.xml.i b/interface-definitions/include/interface/authentication.xml.i new file mode 100644 index 000000000..c097ca9dd --- /dev/null +++ b/interface-definitions/include/interface/authentication.xml.i @@ -0,0 +1,27 @@ + + + + Authentication settings + + + + + User name + + txt + Username used for connection + + + + + + Password + + txt + Password used for connection + + + + + + diff --git a/interface-definitions/interfaces-pppoe.xml.in b/interface-definitions/interfaces-pppoe.xml.in index 8c2b50eba..96479e057 100644 --- a/interface-definitions/interfaces-pppoe.xml.in +++ b/interface-definitions/interfaces-pppoe.xml.in @@ -25,23 +25,7 @@ Access concentrator name must be composed of uppper and lower case letters or numbers only - - - Authentication settings - - - - - User name - - - - - Password - - - - + #include #include diff --git a/interface-definitions/interfaces-wwan.xml.in b/interface-definitions/interfaces-wwan.xml.in index 55ac8eab1..ea3184a11 100644 --- a/interface-definitions/interfaces-wwan.xml.in +++ b/interface-definitions/interfaces-wwan.xml.in @@ -27,6 +27,7 @@ #include #include + #include #include #include #include diff --git a/src/conf_mode/interfaces-wwan.py b/src/conf_mode/interfaces-wwan.py index 02d2c723d..a477163b9 100755 --- a/src/conf_mode/interfaces-wwan.py +++ b/src/conf_mode/interfaces-wwan.py @@ -20,6 +20,7 @@ from sys import exit from vyos.config import Config from vyos.configdict import get_interface_dict +from vyos.configverify import verify_authentication from vyos.configverify import verify_interface_exists from vyos.configverify import verify_vrf from vyos.ifconfig import WWANIf @@ -52,6 +53,7 @@ def verify(wwan): raise ConfigError(f'No APN configured for "{ifname}"!') verify_interface_exists(ifname) + verify_authentication(wwan) verify_vrf(wwan) return None @@ -61,7 +63,7 @@ def generate(wwan): def apply(wwan): # we only need the modem number. wwan0 -> 0, wwan1 -> 1 - modem = wwan['ifname'].replace('wwan','') + modem = wwan['ifname'].lstrip('wwan') base_cmd = f'mmcli --modem {modem}' w = WWANIf(wwan['ifname']) @@ -70,7 +72,12 @@ def apply(wwan): cmd(f'{base_cmd} --simple-disconnect') return None - cmd(f'{base_cmd} --simple-connect=\"apn={wwan["apn"]}\"') + options = 'apn=' + wwan['apn'] + if 'authentication' in wwan: + options += ',user={user},password={password}'.format(**wwan['authentication']) + + command = f'{base_cmd} --simple-connect="{options}"' + cmd(command) w.update(wwan) return None -- cgit v1.2.3