[PATCH] services: connman: Add 'connman-general-configuration'.

  • Done
  • quality assurance status badge
Details
3 participants
  • muradm
  • Maxim Cournoyer
  • Bruno Victal
Owner
unassigned
Submitted by
muradm
Severity
normal
M
M
muradm wrote on 6 Dec 2023 11:19
(address . guix-patches@gnu.org)
11f2fc968e9101842886f398465cf3b808730d7d.1701857973.git.mail@muradm.net
For me connman in default configuration causes conflict with docker
generated virtual veth* interfaces. Currently connman has no
main.conf as specified in man 5 connman.conf which would allow
setting NetworkInterfaceBalcklist and other useful options.

This patch adds connman-general-configuration, serializes it and
passes to connmad with --config= flag.

All configuration fields are 'maybe-*' deliberately. This will not
disturb current users. This will not require supporting configuration
changes for connmand.

* gnu/services/networking.scm:
(<connman-general-configuration>): New configuration record
to represent main.conf for connmand.
(<connman-configuration>)[general-configuration]: New field.
(connman-shepherd-service): Honor it.
*doc/guix.texi (Networking Services): Add generated configuration.

Change-Id: I2a3f808a101548aa35aa833cb91d43d746a18533
---
doc/guix.texi | 201 ++++++++++++++++++++++++++++
gnu/services/networking.scm | 252 +++++++++++++++++++++++++++++++++++-
2 files changed, 450 insertions(+), 3 deletions(-)

Toggle diff (379 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 7dde9b727b..cb1613955b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20784,7 +20784,208 @@ Networking Setup
@item @code{disable-vpn?} (default: @code{#f})
When true, disable connman's vpn plugin.
+@item @code{general-configuration} (default: @code{(connman-general-configuration)})
+Configuration serialized to @file{main.conf} and passed as @option{--config}
+to @command{connmand}.
+
+@end table
+@end deftp
+
+@deftp {Data Type} connman-general-configuration
+Available @code{connman-general-configuration} fields are:
+
+@table @asis
+@item @code{input-request-timeout} (type: maybe-number)
+Set input request timeout. Default is 120 seconds. The request for
+inputs like passphrase will timeout after certain amount of time. Use
+this setting to increase the value in case of different user interface
+designs.
+
+@item @code{browser-launch-timeout} (type: maybe-number)
+Set browser launch timeout. Default is 300 seconds. The request for
+launching a browser for portal pages will timeout after certain amount
+of time. Use this setting to increase the value in case of different
+user interface designs.
+
+@item @code{background-scanning?} (type: maybe-boolean)
+Enable background scanning. Default is true. If wifi is disconnected,
+the background scanning will follow a simple backoff mechanism from 3s
+up to 5 minutes. Then, it will stay in 5 minutes unless user
+specifically asks for scanning through a D-Bus call. If so, the
+mechanism will start again from 3s. This feature activates also the
+background scanning while being connected, which is required for roaming
+on wifi. When background-scanning? is false, ConnMan will not perform
+any scan regardless of wifi is connected or not, unless it is requested
+by the user through a D-Bus call.
+
+@item @code{use-gateways-as-timeservers?} (type: maybe-boolean)
+Assume that service gateways also function as timeservers. Default is
+false.
+
+@item @code{fallback-timeservers} (type: maybe-list)
+List of Fallback timeservers. These timeservers are used for NTP sync
+when there are no timeservers set by the user or by the service, and
+when use-gateways-as-timeservers? is @code{#f}. These can contain a
+mixed combination of fully qualified domain names, IPv4 and IPv6
+addresses.
+
+@item @code{fallback-nameservers} (type: maybe-list)
+List of fallback nameservers appended to the list of nameservers given
+by the service. The nameserver entries must be in numeric format, host
+names are ignored.
+
+@item @code{default-auto-connect-technologies} (type: maybe-list)
+List of technologies that are marked autoconnectable by default. The
+default value for this entry when empty is ethernet,wifi,cellular.
+Services that are automatically connected must have been set up and
+saved to storage beforehand.
+
+@item @code{default-favourite-technologies} (type: maybe-list)
+List of technologies that are marked favorite by default. The default
+value for this entry when empty is ethernet. Connects to services from
+this technology even if not setup and saved to storage.
+
+@item @code{always-connected-technologies} (type: maybe-list)
+List of technoolgies which are always connected regardless of
+preferred-technologies setting (auto-connect? @code{#t}). The default
+value is empty and this feature is disabled unless explicitly enabled.
+
+@item @code{preferred-technologies} (type: maybe-list)
+List of preferred technologies from the most preferred one to the least
+preferred one. Services of the listed technology type will be tried one
+by one in the order given, until one of them gets connected or they are
+all tried. A service of a preferred technology type in state 'ready'
+will get the default route when compared to another preferred type
+further down the list with state 'ready' or with a non-preferred type; a
+service of a preferred technology type in state 'online' will get the
+default route when compared to either a non-preferred type or a
+preferred type further down in the list.
+
+@item @code{network-interface-blacklist} (type: maybe-list)
+List of blacklisted network interfaces. Found interfaces will be
+compared to the list and will not be handled by ConnMan, if their first
+characters match any of the list entries. Default value is
+vmnet,vboxnet,virbr,ifb,veth.
+
+@item @code{allow-hostname-updates?} (type: maybe-boolean)
+Allow ConnMan to change the system hostname. This can happen for
+example if we receive DHCP hostname option. Default value is @code{#t}.
+
+@item @code{allow-domainname-updates?} (type: maybe-boolean)
+Allow connman to change the system domainname. This can happen for
+example if we receive DHCP domainname option. Default value is
+@code{#t}.
+
+@item @code{single-connected-technology?} (type: maybe-boolean)
+Keep only a single connected technology at any time. When a new service
+is connected by the user or a better one is found according to
+preferred-technologies, the new service is kept connected and all the
+other previously connected services are disconnected. With this setting
+it does not matter whether the previously connected services are in
+'online' or 'ready' states, the newly connected service is the only one
+that will be kept connected. A service connected by the user will be
+used until going out of network coverage. With this setting enabled
+applications will notice more network breaks than normal. Note this
+options can't be used with VPNs. Default value is @code{#f}.
+
+@item @code{tethering-technologies} (type: maybe-list)
+List of technologies that are allowed to enable tethering. The default
+value is wifi,bluetooth,gadget. Only those technologies listed here are
+used for tethering. If one wants to tether ethernet, then add
+"ethernet" in the list. NOTE that if ethernet tethering is enabled,
+then a DHCP server is started on all ethernet interfaces. Tethered
+ethernet should never be connected to corporate or home network as it
+will disrupt normal operation of these networks. Due to this ethernet
+is not tethered by default. Do not activate ethernet tethering unless
+you really know what you are doing.
+
+@item @code{persistent-tethering-mode?} (type: maybe-boolean)
+Restore earlier tethering status when returning from offline mode,
+re-enabling a technology, and after restarts and reboots. Default value
+is @code{#f}.
+
+@item @code{enable-6to4?} (type: maybe-boolean)
+Automatically enable anycast 6to4 if possible. This is not recommended,
+as the use of 6to4 will generally lead to a severe degradation of
+connection quality. See RFC6343. Default value is @code{#f} (as
+recommended by RFC6343 section 4.1).
+
+@item @code{vendor-class-id} (type: maybe-string)
+Set DHCP option 60 (Vendor Class ID) to the given string. This option
+can be used by DHCP servers to identify specific clients without having
+to rely on MAC address ranges, etc.
+
+@item @code{enable-online-check?} (type: maybe-boolean)
+Enable or disable use of HTTP GET as an online status check. When a
+service is in a READY state, and is selected as default, ConnMan will
+issue an HTTP GET request to verify that end-to-end connectivity is
+successful. Only then the service will be transitioned to ONLINE state.
+If this setting is false, the default service will remain in READY
+state. Default value is @code{#t}.
+
+@item @code{online-check-ipv4-url} (type: maybe-string)
+IPv4 URL used during the online status check. Please refer to the
+README for more detailed information. Default value is
+http://ipv4.connman.net/online/status.html.
+
+@item @code{online-check-ipv6-url} (type: maybe-string)
+IPv6 URL used during the online status check. Please refer to the
+README for more detailed information. Default value is
+http://ipv6.connman.net/online/status.html.
+
+@item @code{online-check-initial-interval} (type: maybe-number)
+Range of intervals between two online check requests. Please refer to
+the README for more detailed information. Default values is 1.
+
+@item @code{online-check-max-interval} (type: maybe-number)
+Range of intervals between two online check requests. Please refer to
+the README for more detailed information. Default values is 1.
+
+@item @code{enable-online-to-ready-transition?} (type: maybe-boolean)
+WARNING: Experimental feature!!! In addition to enable-online-check
+setting, enable or disable use of HTTP GET to detect the loss of
+end-to-end connectivity. If this setting is @code{#f}, when the default
+service transitions to ONLINE state, the HTTP GET request is no more
+called until next cycle, initiated by a transition of the default
+service to DISCONNECT state. If this setting is @code{#t}, the HTTP GET
+request keeps beeing called to guarantee that end-to-end connectivity is
+still successful. If not, the default service will transition to READY
+state, enabling another service to become the default one, in
+replacement. Default value is @code{#f}.
+
+@item @code{auto-connect-roaming-services?} (type: maybe-boolean)
+Automatically connect roaming services. This is not recommended unless
+you know you won't have any billing problem. Default value is
+@code{#f}.
+
+@item @code{address-conflict-detection?} (type: maybe-boolean)
+Enable or disable the implementation of IPv4 address conflict detection
+according to RFC5227. ConnMan will send probe ARP packets to see if an
+IPv4 address is already in use before assigning the address to an
+interface. If an address conflict occurs for a statically configured
+address, an IPv4LL address will be chosen instead (according to
+RFC3927). If an address conflict occurs for an address offered via
+DHCP, ConnMan send a DHCP DECLINE once and for the second conflict
+resort to finding an IPv4LL address. Default value is @code{#f}.
+
+@item @code{localtime} (type: maybe-string)
+Path to localtime file. Defaults to /etc/localtime.
+
+@item @code{regdom-follows-timezone?} (type: maybe-boolean)
+Enable regdomain to be changed along timezone changes. With this option
+set to true each time the timezone changes the first present ISO3166
+country code is being read from /usr/share/zoneinfo/zone1970.tab and set
+as regdom value. Default value is @code{#f}.
+
+@item @code{resolv-conf} (type: maybe-string)
+Path to resolv.conf file. If the file does not exist, but intermediate
+directories exist, it will be created. If this option is not set, it
+tries to write into /var/run/connman/resolv.conf if it fails
+(/var/run/connman does not exist or is not writeable). If you do not
+want to update resolv.conf, you can set /dev/null.
+
@end table
+
@end deftp
@cindex WPA Supplicant
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 0508a4282c..13c03cbd4f 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2022, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2023 Declan Tsien <declantsien@riseup.net>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
+;;; Copyright © 2023 muradm <mail@muradm.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -78,6 +79,7 @@ (define-module (gnu services networking)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-43)
#:use-module (ice-9 match)
+ #:use-module (ice-9 string-fun)
#:use-module (json)
#:re-export (static-networking-service
static-networking-service-type)
@@ -171,6 +173,8 @@ (define-module (gnu services networking)
network-manager-configuration-vpn-plugins
network-manager-service-type
+ connman-general-configuration
+ connman-general-configuration?
connman-configuration
connman-configuration?
connman-configuration-connman
@@ -1326,6 +1330,238 @@ (define network-manager-service-type
;;; Connman
;;;
+(define (connman-general-configuration-field-name field-name)
+ (let* ((str->camel (lambda (s)
+ (string-concatenate
+ (map string-capitalize (string-split s #\-)))))
+ (str (if (symbol? field-name)
+ (str->camel (symbol->string field-name))
+ field-name)))
+ (cond
+ ((string-suffix? "?" str) (connman-general-configuration-field-name
+ (string-drop-right str 1)))
+ ((string-contains str "Url") (connman-general-configuration-field-name
+ (string-replace-substring str "Url" "URL")))
+ ((string-contains str "Ip") (connman-general-configuration-field-name
+ (string-replace-substring str "Ip" "IP")))
+ ((string-contains str "6To4") (connman-general-configuration-field-name
+ (string-replace-substring str "6To4" "6to4")))
+ (#t str))))
+
+(define (connman-general-configuration-serialize-string field-name value)
+ (let ((param (connman-general-configuration-field-name field-name)))
+ #~(string-append #$param " = " #$value "\n")))
+
+(define (connman-general-configuration-serialize-number field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (number->string value)))
+
+(define (connman-general-configuration-serialize-list field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (string-join value ",")))
+
+(define (connman-general-configuration-serialize-boolean field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (if value "true" "false")))
+
+(define-maybe boolean (prefix connman-general-configuration-))
+(define-maybe number (prefix connman-general-configuration-))
+(define-maybe string (prefix connman-general-configuration-))
+(define-maybe list (prefix connman-general-configuration-))
+
+(define-configuration connman-general-configuration
+ (input-request-timeout
+ maybe-number
+ "Set input request timeout. Default is 120 seconds. The request for inputs
+like passphrase will timeout after certain amount of time. Use this setting to
+increase the value in case of different user interface designs.")
+ (browser-launch-timeout
+ maybe-number
+ "Set browser launch timeout. Default is 300 seconds. The request for
+launching a browser for portal pages will timeout after certain amount of
+time. Use this setting to increase the value in case of different user
+interface designs.")
+ (background-scanning?
+ maybe-boolean
+ "Enable background scanning. Default is true. If wifi is disconnected, the
+background scanning will follow a simple backoff mechanism from 3s up to 5
+minutes. Then, it will stay in 5 minutes unless user specifically asks for
+scanning through a D-Bus call. If so, the mechanism will start again from
+3s. This feature activates also the background scanning while being connected,
+which is required for roaming on wifi. When background-scanning? is false,
+ConnMan will not perform any scan regardless of wifi is connected or not,
+unless it is requested by the user through a D-Bus call.")
+ (use-gateways-as-timeservers?
+ maybe-boolean
+ "Assume that service gateways also function as timeservers. Default is false.")
+ (fallback-timeservers
+ maybe-list
+ "List of Fallback timeservers. These timeservers are used for NTP sync
+when there are no timeservers set by the user or by the service, and when
+use-gateways-as-timeservers? is @code{#f}. These can contain a mixed
+combination of fully qualified domain names, IPv4 and IPv6 addresses.")
+ (fallback-nameservers
+ maybe-list
+ "List of fallback nameservers appended to the list of nameservers given
+by the service. The nameserver entries must be in numeric format,
+host names are ignored.")
+ (default-auto-connect-technologies
+ maybe-list
+ "List of technologies that are marked autoconnectable by default. The
+default value for this entry when empty is ethernet,wifi,cellular. Services
+that are automatically connected must have been set up and saved to
+storage beforehand.")
+ (default-favourite-technologies
+ maybe-list
+ "List of technologies that are marked favorite by default. The default
+value for this entry when empty is ethernet. Connects to services from
+this technology even if not setup and saved to storage.")
+ (always-connected-technologies
+ maybe-list
+ "List of technoolgies which are always connected regardless of
+preferred-technologies setting (auto-connect? @code{#t}). The default value
+is empty and this feature is disabled unless explicitly enabled.")
+ (preferred-technologies
+ maybe-list
+ "List of preferred technologies from the most preferred one to the least
+preferred one. Services of the listed technology type will be tried one by
+one in the order given, until one of them gets connected or they are all
+tried. A service of a preferred technology type in state 'ready' will get
+the default route when compared to another preferred type further down the
+list with state 'ready' or with a non-preferred type; a service of a
+preferred technology type in state 'online' will get the default route when
+compared to either a non-preferred type or a preferred type further down
+in the list.")
+ (network-interface-blacklist
+ maybe-list
+ "List of blacklisted network interfaces. Found interfaces will be
+compared to the list and will not be handled by ConnMan, if their first
+characters match any of the list entries. Default value is
+vmnet,vboxnet,virbr,ifb,veth.")
+ (allow-hostname-updates?
+ maybe-boolean
+ "Allow ConnMan to change the system hostname. This can happen for
+example if we receive DHCP hostname option. Default value is @code{#t}.")
+ (allow-domainname-updates?
+ maybe-boolean
+ "Allow connman to change the system domainname. This can happen for
+example if we receive DHCP domainname option. Default value is @code{#t}.")
+ (single-connected-technology?
+ maybe-boolean
+ "Keep only a single connected technology at any time. When a new
+service is connected by the user or a better one is found according to
+preferred-technologies, the new service is kept connected and all the
+other previously connected services are disconnected. With this setting
+it does not matter whether the previously connected services are
+in 'online' or 'ready' states, the newly connected service is the only
+one that will be kept connected. A service connected by the user will
+be used until going out of network coverage. With this setting enabled
+applications will notice more network breaks than normal. Note this
+options can't be used with VPNs. Default value is @code{#f}.")
+ (tethering-technologies
+ maybe-list
+ "List of technologies that are allowed to enable tethering. The
+default value is wifi,bluetooth,gadget. Only those technologies listed
+here are used for tethering. If one wants to t
This message was truncated. Download the full message here.
B
B
Bruno Victal wrote on 16 Dec 2023 23:25
(name . muradm)(address . mail@muradm.net)(address . 67657@debbugs.gnu.org)
48bacc5b-0daa-4a64-8d9e-eca6b6ed5e2b@makinata.eu
Hi muradm,

On 2023-12-06 10:19, muradm wrote:
Toggle quote (3 lines)
> + "Enable background scanning. Default is true. If wifi is disconnected, the
> +background scanning will follow a simple backoff mechanism from 3s up to 5

'back off'

Toggle quote (4 lines)
> + "List of Fallback timeservers. These timeservers are used for NTP sync
> +when there are no timeservers set by the user or by the service, and when
> +use-gateways-as-timeservers? is @code{#f}. These can contain a mixed

@code{use-gateways-as-timeservers?}

Toggle quote (5 lines)
> + (default-auto-connect-technologies
> + maybe-list
> + "List of technologies that are marked autoconnectable by default. The
> +default value for this entry when empty is ethernet,wifi,cellular. Services

Perhaps @code{ethernet}, @code{wifi} and @code{cellular}? Or put this in
lisp list syntax. (*)

Toggle quote (7 lines)
> +that are automatically connected must have been set up and saved to
> +storage beforehand.")
> + (default-favourite-technologies
> + maybe-list
> + "List of technologies that are marked favorite by default. The default
> +value for this entry when empty is ethernet. Connects to services from

See (*).

Toggle quote (6 lines)
> +this technology even if not setup and saved to storage.")
> + (always-connected-technologies
> + maybe-list
> + "List of technoolgies which are always connected regardless of
> +preferred-technologies setting (auto-connect? @code{#t}). The default value

@code{(auto-connect? #t)}.

Toggle quote (7 lines)
> + (network-interface-blacklist
> + maybe-list
> + "List of blacklisted network interfaces. Found interfaces will be
> +compared to the list and will not be handled by ConnMan, if their first
> +characters match any of the list entries. Default value is
> +vmnet,vboxnet,virbr,ifb,veth.")

See (*).

Toggle quote (5 lines)
> + (tethering-technologies
> + maybe-list
> + "List of technologies that are allowed to enable tethering. The
> +default value is wifi,bluetooth,gadget.

See (*).

Toggle quote (3 lines)
> +here are used for tethering. If one wants to tether ethernet, then add
> +\"ethernet\" in the list. NOTE that if ethernet tethering is enabled,

… @samp{\"ethernet\"} to the list.

Toggle quote (7 lines)
> +in READY state. Default value is @code{#t}.")
> + (online-check-ipv4-url
> + maybe-string
> + "IPv4 URL used during the online status check. Please refer to
> +the README for more detailed information. Default value is
> +http://ipv4.connman.net/online/status.html.")

Toggle quote (6 lines)
> + (online-check-ipv6-url
> + maybe-string
> + "IPv6 URL used during the online status check. Please refer to
> +the README for more detailed information. Default value is
> +http://ipv6.connman.net/online/status.html.")

See (**).

Toggle quote (5 lines)
> + (online-check-initial-interval
> + maybe-number
> + "Range of intervals between two online check requests. Please
> +refer to the README for more detailed information. Default values is 1.")

[…]

Toggle quote (5 lines)
> + (online-check-max-interval
> + maybe-number
> + "Range of intervals between two online check requests. Please
> +refer to the README for more detailed information. Default values is 1.")

Default values is @samp{1}.

Toggle quote (4 lines)
> + (enable-online-to-ready-transition?
> + maybe-boolean
> + "WARNING: Experimental feature!!! In addition to enable-online-check

@code{enable-online-check}

Toggle quote (3 lines)
> +service to DISCONNECT state. If this setting is @code{#t}, the HTTP GET
> +request keeps beeing called to guarantee that end-to-end connectivity

'being'.

Toggle quote (4 lines)
> + (localtime
> + maybe-string
> + "Path to localtime file. Defaults to /etc/localtime.")

@file{/etc/localtime}

Toggle quote (8 lines)
> + (regdom-follows-timezone?
> + maybe-boolean
> + "Enable regdomain to be changed along timezone changes. With
> +this option set to true each time the timezone changes the first
> +present ISO3166 country code is being read from
> +/usr/share/zoneinfo/zone1970.tab and set as regdom value. Default
> +value is @code{#f}.")

@file{/usr/share/zoneinfo/zone1970.tab}.

Perhaps expand 'regdom' as 'regulatory domain'? Likewise for the field
name. (i.e. regulatory-domain-follows-timezone?)
You can perform the field name readjustment by using a custom serializer:

Toggle snippet (12 lines)
(regulatory-domain-follows-timezone?
maybe-boolean
"Allow the regulatory domain to be changed along timezone changes. With
this option set to true each time the timezone changes the first
present ISO3166 country code is being read from
@file{/usr/share/zoneinfo/zone1970.tab} and set as the regulatory domain value.
Default value is @code{#f}."
(serializer
(lambda (_ value)
(connman-general-configuration-serialize-boolean "regdom-follows-timezone" value))))

Toggle quote (8 lines)
> + (resolv-conf
> + maybe-string
> + "Path to resolv.conf file. If the file does not exist, but
> +intermediate directories exist, it will be created. If this option
> +is not set, it tries to write into /var/run/connman/resolv.conf if
> +it fails (/var/run/connman does not exist or is not writeable). If
> +you do not want to update resolv.conf, you can set /dev/null.")

Wrap the paths with @file{…}.

Toggle quote (5 lines)
> +
> +;; ,in (gnu services networking) (connman-general-configuration-generate-doc)
> +(define (connman-general-configuration-generate-doc)
> + (configuration->documentation 'connman-general-configuration))

This isn't needed.

--
Furthermore, I consider that nonfree software must be eradicated.

Cheers,
Bruno.
M
M
muradm wrote on 17 Dec 2023 13:49
[PATCH v2] services: connman: Add 'connman-general-configuration'.
(name . Bruno Victal)(address . mirai@makinata.eu)(address . 67657@debbugs.gnu.org)
dc86d22dee0f30f307c23c12fd8ba5d60cef4e48.1702817361.git.mail@muradm.net
For me connman in default configuration causes conflict with docker
generated virtual veth* interfaces. Currently connman has no
main.conf as specified in man 5 connman.conf which would allow
setting NetworkInterfaceBalcklist and other useful options.

This patch adds connman-general-configuration, serializes it and
passes to connmad with --config= flag.

All configuration fields are 'maybe-*' deliberately. This will not
disturb current users. This will not require supporting configuration
changes for connmand.

* gnu/services/networking.scm:
(<connman-general-configuration>): New configuration record
to represent main.conf for connmand.
(<connman-configuration>)[general-configuration]: New field.
(connman-shepherd-service): Honor it.
*doc/guix.texi (Networking Services): Add generated configuration.

Change-Id: I5d78f49e8b2d5e0b3cbd7b8b604e8a254b6397e8
---
doc/guix.texi | 205 +++++++++++++++++++++++++++++
gnu/services/networking.scm | 255 +++++++++++++++++++++++++++++++++++-
2 files changed, 457 insertions(+), 3 deletions(-)

Toggle diff (376 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index e61a893af9..d2cfe0f356 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20810,9 +20810,214 @@ Networking Setup
@item @code{disable-vpn?} (default: @code{#f})
When true, disable connman's vpn plugin.
+@item @code{general-configuration} (default: @code{(connman-general-configuration)})
+Configuration serialized to @file{main.conf} and passed as @option{--config}
+to @command{connmand}.
+
@end table
@end deftp
+@c %start of fragment
+
+@deftp {Data Type} connman-general-configuration
+Available @code{connman-general-configuration} fields are:
+
+@table @asis
+@item @code{input-request-timeout} (type: maybe-number)
+Set input request timeout. Default is 120 seconds. The request for
+inputs like passphrase will timeout after certain amount of time. Use
+this setting to increase the value in case of different user interface
+designs.
+
+@item @code{browser-launch-timeout} (type: maybe-number)
+Set browser launch timeout. Default is 300 seconds. The request for
+launching a browser for portal pages will timeout after certain amount
+of time. Use this setting to increase the value in case of different
+user interface designs.
+
+@item @code{background-scanning?} (type: maybe-boolean)
+Enable background scanning. Default is true. If wifi is disconnected,
+the background scanning will follow a simple back off mechanism from 3s
+up to 5 minutes. Then, it will stay in 5 minutes unless user
+specifically asks for scanning through a D-Bus call. If so, the
+mechanism will start again from 3s. This feature activates also the
+background scanning while being connected, which is required for roaming
+on wifi. When @code{background-scanning?} is false, ConnMan will not
+perform any scan regardless of wifi is connected or not, unless it is
+requested by the user through a D-Bus call.
+
+@item @code{use-gateways-as-timeservers?} (type: maybe-boolean)
+Assume that service gateways also function as timeservers. Default is
+false.
+
+@item @code{fallback-timeservers} (type: maybe-list)
+List of Fallback timeservers. These timeservers are used for NTP sync
+when there are no timeservers set by the user or by the service, and
+when @code{use-gateways-as-timeservers?} is @code{#f}. These can
+contain a mixed combination of fully qualified domain names, IPv4 and
+IPv6 addresses.
+
+@item @code{fallback-nameservers} (type: maybe-list)
+List of fallback nameservers appended to the list of nameservers given
+by the service. The nameserver entries must be in numeric format, host
+names are ignored.
+
+@item @code{default-auto-connect-technologies} (type: maybe-list)
+List of technologies that are marked autoconnectable by default. The
+default value for this entry when empty is @code{"ethernet"},
+@code{"wifi"}, @code{"cellular"}. Services that are automatically
+connected must have been set up and saved to storage beforehand.
+
+@item @code{default-favourite-technologies} (type: maybe-list)
+List of technologies that are marked favorite by default. The default
+value for this entry when empty is @code{"ethernet"}. Connects to
+services from this technology even if not setup and saved to storage.
+
+@item @code{always-connected-technologies} (type: maybe-list)
+List of technoolgies which are always connected regardless of
+preferred-technologies setting (@code{auto-connect?} @code{#t}). The
+default value is empty and this feature is disabled unless explicitly
+enabled.
+
+@item @code{preferred-technologies} (type: maybe-list)
+List of preferred technologies from the most preferred one to the least
+preferred one. Services of the listed technology type will be tried one
+by one in the order given, until one of them gets connected or they are
+all tried. A service of a preferred technology type in state 'ready'
+will get the default route when compared to another preferred type
+further down the list with state 'ready' or with a non-preferred type; a
+service of a preferred technology type in state 'online' will get the
+default route when compared to either a non-preferred type or a
+preferred type further down in the list.
+
+@item @code{network-interface-blacklist} (type: maybe-list)
+List of blacklisted network interfaces. Found interfaces will be
+compared to the list and will not be handled by ConnMan, if their first
+characters match any of the list entries. Default value is
+@code{"vmnet"}, @code{"vboxnet"}, @code{"virbr"}, @code{"ifb"}.
+
+@item @code{allow-hostname-updates?} (type: maybe-boolean)
+Allow ConnMan to change the system hostname. This can happen for
+example if we receive DHCP hostname option. Default value is @code{#t}.
+
+@item @code{allow-domainname-updates?} (type: maybe-boolean)
+Allow connman to change the system domainname. This can happen for
+example if we receive DHCP domainname option. Default value is
+@code{#t}.
+
+@item @code{single-connected-technology?} (type: maybe-boolean)
+Keep only a single connected technology at any time. When a new service
+is connected by the user or a better one is found according to
+preferred-technologies, the new service is kept connected and all the
+other previously connected services are disconnected. With this setting
+it does not matter whether the previously connected services are in
+'online' or 'ready' states, the newly connected service is the only one
+that will be kept connected. A service connected by the user will be
+used until going out of network coverage. With this setting enabled
+applications will notice more network breaks than normal. Note this
+options can't be used with VPNs. Default value is @code{#f}.
+
+@item @code{tethering-technologies} (type: maybe-list)
+List of technologies that are allowed to enable tethering. The default
+value is @code{"wifi"}, @code{"bluetooth"}, @code{"gadget"}. Only those
+technologies listed here are used for tethering. If one wants to tether
+ethernet, then add @code{"ethernet"} in the list. NOTE that if ethernet
+tethering is enabled, then a DHCP server is started on all ethernet
+interfaces. Tethered ethernet should never be connected to corporate or
+home network as it will disrupt normal operation of these networks. Due
+to this ethernet is not tethered by default. Do not activate ethernet
+tethering unless you really know what you are doing.
+
+@item @code{persistent-tethering-mode?} (type: maybe-boolean)
+Restore earlier tethering status when returning from offline mode,
+re-enabling a technology, and after restarts and reboots. Default value
+is @code{#f}.
+
+@item @code{enable-6to4?} (type: maybe-boolean)
+Automatically enable anycast 6to4 if possible. This is not recommended,
+as the use of 6to4 will generally lead to a severe degradation of
+connection quality. See RFC6343. Default value is @code{#f} (as
+recommended by RFC6343 section 4.1).
+
+@item @code{vendor-class-id} (type: maybe-string)
+Set DHCP option 60 (Vendor Class ID) to the given string. This option
+can be used by DHCP servers to identify specific clients without having
+to rely on MAC address ranges, etc.
+
+@item @code{enable-online-check?} (type: maybe-boolean)
+Enable or disable use of HTTP GET as an online status check. When a
+service is in a READY state, and is selected as default, ConnMan will
+issue an HTTP GET request to verify that end-to-end connectivity is
+successful. Only then the service will be transitioned to ONLINE state.
+If this setting is false, the default service will remain in READY
+state. Default value is @code{#t}.
+
+@item @code{online-check-ipv4-url} (type: maybe-string)
+IPv4 URL used during the online status check. Please refer to the
+README for more detailed information. Default value is
+@uref{http://ipv4.connman.net/online/status.html}.
+
+@item @code{online-check-ipv6-url} (type: maybe-string)
+IPv6 URL used during the online status check. Please refer to the
+README for more detailed information. Default value is
+@uref{http://ipv6.connman.net/online/status.html}.
+
+@item @code{online-check-initial-interval} (type: maybe-number)
+Range of intervals between two online check requests. Please refer to
+the README for more detailed information. Default values is @samp{1}.
+
+@item @code{online-check-max-interval} (type: maybe-number)
+Range of intervals between two online check requests. Please refer to
+the README for more detailed information. Default values is @samp{1}.
+
+@item @code{enable-online-to-ready-transition?} (type: maybe-boolean)
+WARNING: Experimental feature!!! In addition to
+@code{enable-online-check} setting, enable or disable use of HTTP GET to
+detect the loss of end-to-end connectivity. If this setting is
+@code{#f}, when the default service transitions to ONLINE state, the
+HTTP GET request is no more called until next cycle, initiated by a
+transition of the default service to DISCONNECT state. If this setting
+is @code{#t}, the HTTP GET request keeps being called to guarantee that
+end-to-end connectivity is still successful. If not, the default
+service will transition to READY state, enabling another service to
+become the default one, in replacement. Default value is @code{#f}.
+
+@item @code{auto-connect-roaming-services?} (type: maybe-boolean)
+Automatically connect roaming services. This is not recommended unless
+you know you won't have any billing problem. Default value is
+@code{#f}.
+
+@item @code{address-conflict-detection?} (type: maybe-boolean)
+Enable or disable the implementation of IPv4 address conflict detection
+according to RFC5227. ConnMan will send probe ARP packets to see if an
+IPv4 address is already in use before assigning the address to an
+interface. If an address conflict occurs for a statically configured
+address, an IPv4LL address will be chosen instead (according to
+RFC3927). If an address conflict occurs for an address offered via
+DHCP, ConnMan send a DHCP DECLINE once and for the second conflict
+resort to finding an IPv4LL address. Default value is @code{#f}.
+
+@item @code{localtime} (type: maybe-string)
+Path to localtime file. Defaults to @file{/etc/localtime}.
+
+@item @code{regulatory-domain-follows-timezone?} (type: maybe-boolean)
+Enable regulatory domain to be changed along timezone changes. With
+this option set to true each time the timezone changes the first present
+ISO3166 country code is being read from
+@file{/usr/share/zoneinfo/zone1970.tab} and set as regulatory domain
+value. Default value is @code{#f}.
+
+@item @code{resolv-conf} (type: maybe-string)
+Path to resolv.conf file. If the file does not exist, but intermediate
+directories exist, it will be created. If this option is not set, it
+tries to write into @file{/var/run/connman/resolv.conf} if it fails
+(@file{/var/run/connman} does not exist or is not writeable). If you do
+not want to update resolv.conf, you can set @file{/dev/null}.
+
+@end table
+
+@end deftp
+
@cindex WPA Supplicant
@defvar wpa-supplicant-service-type
This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 0508a4282c..7670cd97af 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2022, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2023 Declan Tsien <declantsien@riseup.net>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
+;;; Copyright © 2023 muradm <mail@muradm.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -78,6 +79,7 @@ (define-module (gnu services networking)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-43)
#:use-module (ice-9 match)
+ #:use-module (ice-9 string-fun)
#:use-module (json)
#:re-export (static-networking-service
static-networking-service-type)
@@ -171,6 +173,8 @@ (define-module (gnu services networking)
network-manager-configuration-vpn-plugins
network-manager-service-type
+ connman-general-configuration
+ connman-general-configuration?
connman-configuration
connman-configuration?
connman-configuration-connman
@@ -1326,6 +1330,241 @@ (define network-manager-service-type
;;; Connman
;;;
+(define (connman-general-configuration-field-name field-name)
+ (let* ((str->camel (lambda (s)
+ (string-concatenate
+ (map string-capitalize (string-split s #\-)))))
+ (str (if (symbol? field-name)
+ (str->camel (symbol->string field-name))
+ field-name)))
+ (cond
+ ((string-suffix? "?" str) (connman-general-configuration-field-name
+ (string-drop-right str 1)))
+ ((string-contains str "RegulatoryDomain") (connman-general-configuration-field-name
+ (string-replace-substring str "RegulatoryDomain" "Regdom")))
+ ((string-contains str "Url") (connman-general-configuration-field-name
+ (string-replace-substring str "Url" "URL")))
+ ((string-contains str "Ip") (connman-general-configuration-field-name
+ (string-replace-substring str "Ip" "IP")))
+ ((string-contains str "6To4") (connman-general-configuration-field-name
+ (string-replace-substring str "6To4" "6to4")))
+ (#t str))))
+
+(define (connman-general-configuration-serialize-string field-name value)
+ (let ((param (connman-general-configuration-field-name field-name)))
+ #~(string-append #$param " = " #$value "\n")))
+
+(define (connman-general-configuration-serialize-number field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (number->string value)))
+
+(define (connman-general-configuration-serialize-list field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (string-join value ",")))
+
+(define (connman-general-configuration-serialize-boolean field-name value)
+ (connman-general-configuration-serialize-string
+ field-name (if value "true" "false")))
+
+(define-maybe boolean (prefix connman-general-configuration-))
+(define-maybe number (prefix connman-general-configuration-))
+(define-maybe string (prefix connman-general-configuration-))
+(define-maybe list (prefix connman-general-configuration-))
+
+(define-configuration connman-general-configuration
+ (input-request-timeout
+ maybe-number
+ "Set input request timeout. Default is 120 seconds. The request for inputs
+like passphrase will timeout after certain amount of time. Use this setting to
+increase the value in case of different user interface designs.")
+ (browser-launch-timeout
+ maybe-number
+ "Set browser launch timeout. Default is 300 seconds. The request for
+launching a browser for portal pages will timeout after certain amount of
+time. Use this setting to increase the value in case of different user
+interface designs.")
+ (background-scanning?
+ maybe-boolean
+ "Enable background scanning. Default is true. If wifi is disconnected, the
+background scanning will follow a simple back off mechanism from 3s up to 5
+minutes. Then, it will stay in 5 minutes unless user specifically asks for
+scanning through a D-Bus call. If so, the mechanism will start again from
+3s. This feature activates also the background scanning while being connected,
+which is required for roaming on wifi. When @code{background-scanning?} is false,
+ConnMan will not perform any scan regardless of wifi is connected or not,
+unless it is requested by the user through a D-Bus call.")
+ (use-gateways-as-timeservers?
+ maybe-boolean
+ "Assume that service gateways also function as timeservers. Default is false.")
+ (fallback-timeservers
+ maybe-list
+ "List of Fallback timeservers. These timeservers are used for NTP sync
+when there are no timeservers set by the user or by the service, and when
+@code{use-gateways-as-timeservers?} is @code{#f}. These can contain a mixed
+combination of fully qualified domain names, IPv4 and IPv6 addresses.")
+ (fallback-nameservers
+ maybe-list
+ "List of fallback nameservers appended to the list of nameservers given
+by the service. The nameserver entries must be in numeric format,
+host names are ignored.")
+ (default-auto-connect-technologies
+ maybe-list
+ "List of technologies that are marked autoconnectable by default. The
+default value for this entry when empty is @code{\"ethernet\"}, @code{\"wifi\"},
+@code{\"cellular\"}. Services that are automatically connected must have been
+set up and saved to storage beforehand.")
+ (default-favourite-technologies
+ maybe-list
+ "List of technologies that are marked favorite by default. The default
+value for this entry when empty is @code{\"ethernet\"}. Connects to services
+from this technology even if not setup and saved to storage.")
+ (always-connected-technologies
+ maybe-list
+ "List of technoolgies which are always connected regardless of
+preferred-technologies setting (@code{auto-connect?} @code{#t}). The default
+value is empty and this feature is disabled unless explicitly enabled.")
+ (preferred-technologies
+ maybe-list
+ "List of preferred technologies from the most preferred one to the least
+preferred one. Services of the listed technology type will be tried one by
+one in the order given, until one of them gets connected or they are all
+tried. A service of a preferred technology type in state 'ready' will get
+the default route when compared to another preferred type further down the
+list with state 'ready' or with a non-preferred type; a service of a
+preferred technology type in state 'online' will get the default route when
+compared to either a non-preferred type or a preferred type further down
+in the list.")
+ (network-interface-blacklist
+ maybe-list
+ "List of blacklisted network interfaces. Found interfaces will be
+compared to the list and will not be handled by ConnMan, if their first
+characters match any of the list entries. Default value is @code{\"vmnet\"},
+@code{\"vboxnet\"}, @code{\"virbr\"}, @code{\"ifb\"}.")
+ (allow-hostname-updates?
+ maybe-boolean
+ "Allow ConnMan to change the system hostname. This can happen for
+example if we receive DHCP hostname option. Default value is @code{#t}.")
+ (allow-domainname-updates?
+ maybe-boolean
+ "Allow connman to change the system domainname. This can happen for
+example if we receive DHCP domainname option. Default value is @code{#t}.")
+ (single-connected-technology?
+ maybe-boolean
+ "Keep only a single connected technology at any time. When a new
+service is connected by the user or a better one is found according to
+preferred-technologies, the new service is kept connected and all the
+other previously connected services are discon
This message was truncated. Download the full message here.
M
M
muradm wrote on 17 Dec 2023 13:52
Re: [bug#67657] [PATCH] services: connman: Add 'connman-general-configuration'.
(name . Bruno Victal)(address . mirai@makinata.eu)(address . 67657@debbugs.gnu.org)
875y0xt2dm.fsf@muradm.net
Bruno Victal <mirai@makinata.eu> writes:

Hi Bruno,

Updated all your suggestions. Basically I was copying contents of
man page and wanted to keep it as is as much as possible.

For Regdom, I solved it in different way.

ConnMan is GPL2, isn't it? Why it is considered as "not free"?

Thanks in advance,
muradm

Toggle quote (192 lines)
> [[PGP Signed Part:Undecided]]
> Hi muradm,
>
> On 2023-12-06 10:19, muradm wrote:
>> + "Enable background scanning. Default is true. If wifi is
>> disconnected, the
>> +background scanning will follow a simple backoff mechanism
>> from 3s up to 5
>
> 'back off'
>
>> + "List of Fallback timeservers. These timeservers are used
>> for NTP sync
>> +when there are no timeservers set by the user or by the
>> service, and when
>> +use-gateways-as-timeservers? is @code{#f}. These can contain
>> a mixed
>
> @code{use-gateways-as-timeservers?}
>
>> + (default-auto-connect-technologies
>> + maybe-list
>> + "List of technologies that are marked autoconnectable by
>> default. The
>> +default value for this entry when empty is
>> ethernet,wifi,cellular. Services
>
> Perhaps @code{ethernet}, @code{wifi} and @code{cellular}? Or put
> this in
> lisp list syntax. (*)
>
>> +that are automatically connected must have been set up and
>> saved to
>> +storage beforehand.")
>> + (default-favourite-technologies
>> + maybe-list
>> + "List of technologies that are marked favorite by default.
>> The default
>> +value for this entry when empty is ethernet. Connects to
>> services from
>
> See (*).
>
>> +this technology even if not setup and saved to storage.")
>> + (always-connected-technologies
>> + maybe-list
>> + "List of technoolgies which are always connected regardless
>> of
>> +preferred-technologies setting (auto-connect? @code{#t}). The
>> default value
>
> @code{(auto-connect? #t)}.
>
>> + (network-interface-blacklist
>> + maybe-list
>> + "List of blacklisted network interfaces. Found interfaces
>> will be
>> +compared to the list and will not be handled by ConnMan, if
>> their first
>> +characters match any of the list entries. Default value is
>> +vmnet,vboxnet,virbr,ifb,veth.")
>
> See (*).
>
>> + (tethering-technologies
>> + maybe-list
>> + "List of technologies that are allowed to enable tethering.
>> The
>> +default value is wifi,bluetooth,gadget.
>
> See (*).
>
>> +here are used for tethering. If one wants to tether ethernet,
>> then add
>> +\"ethernet\" in the list. NOTE that if ethernet tethering is
>> enabled,
>
> … @samp{\"ethernet\"} to the list.
>
>> +in READY state. Default value is @code{#t}.")
>> + (online-check-ipv4-url
>> + maybe-string
>> + "IPv4 URL used during the online status check. Please
>> refer to
>> +the README for more detailed information. Default value is
>> +http://ipv4.connman.net/online/status.html.")
>
> @url{http://ipv4.connman.net/online/status.html}. (**)
>
>> + (online-check-ipv6-url
>> + maybe-string
>> + "IPv6 URL used during the online status check. Please
>> refer to
>> +the README for more detailed information. Default value is
>> +http://ipv6.connman.net/online/status.html.")
>
> See (**).
>
>> + (online-check-initial-interval
>> + maybe-number
>> + "Range of intervals between two online check requests.
>> Please
>> +refer to the README for more detailed information. Default
>> values is 1.")
>
> […]
>
>> + (online-check-max-interval
>> + maybe-number
>> + "Range of intervals between two online check requests.
>> Please
>> +refer to the README for more detailed information. Default
>> values is 1.")
>
> Default values is @samp{1}.
>
>> + (enable-online-to-ready-transition?
>> + maybe-boolean
>> + "WARNING: Experimental feature!!! In addition to
>> enable-online-check
>
> @code{enable-online-check}
>
>> +service to DISCONNECT state. If this setting is @code{#t},
>> the HTTP GET
>> +request keeps beeing called to guarantee that end-to-end
>> connectivity
>
> 'being'.
>
>> + (localtime
>> + maybe-string
>> + "Path to localtime file. Defaults to /etc/localtime.")
>
> @file{/etc/localtime}
>
>> + (regdom-follows-timezone?
>> + maybe-boolean
>> + "Enable regdomain to be changed along timezone changes.
>> With
>> +this option set to true each time the timezone changes the
>> first
>> +present ISO3166 country code is being read from
>> +/usr/share/zoneinfo/zone1970.tab and set as regdom value.
>> Default
>> +value is @code{#f}.")
>
> @file{/usr/share/zoneinfo/zone1970.tab}.
>
> Perhaps expand 'regdom' as 'regulatory domain'? Likewise for the
> field
> name. (i.e. regulatory-domain-follows-timezone?)
> You can perform the field name readjustment by using a custom
> serializer:
>
> (regulatory-domain-follows-timezone?
> maybe-boolean
> "Allow the regulatory domain to be changed along timezone
> changes. With
> this option set to true each time the timezone changes the
> first
> present ISO3166 country code is being read from
> @file{/usr/share/zoneinfo/zone1970.tab} and set as the
> regulatory domain value.
> Default value is @code{#f}."
> (serializer
> (lambda (_ value)
> (connman-general-configuration-serialize-boolean
> "regdom-follows-timezone" value))))
>
>> + (resolv-conf
>> + maybe-string
>> + "Path to resolv.conf file. If the file does not exist, but
>> +intermediate directories exist, it will be created. If this
>> option
>> +is not set, it tries to write into
>> /var/run/connman/resolv.conf if
>> +it fails (/var/run/connman does not exist or is not
>> writeable). If
>> +you do not want to update resolv.conf, you can set
>> /dev/null.")
>
> Wrap the paths with @file{…}.
>
>> +
>> +;; ,in (gnu services networking)
>> (connman-general-configuration-generate-doc)
>> +(define (connman-general-configuration-generate-doc)
>> + (configuration->documentation
>> 'connman-general-configuration))
>
> This isn't needed.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEESPY5lma9A9l5HGLP6M7O0mLOBeIFAmV+77UACgkQ6M7O0mLO
BeKfXA//dqLmJoEr43geCzMi6a0IA6R0FRfaKZUHd0PUIDEjekgKD6GOwYYr6dSJ
MRuo8DdCcLWh4qabdk3mHfaefftvXFfRvhQ9b2hHPv0Z1crxW3oUnk1gy835hGk4
woGTP1LhELat3TxkxMdUV+RJXbI8zKYgPtb+SIgpbd2oFuUiNrg4MnBGJmBZz12P
DzUZQtqR8m5ZhI+yUK6Qs/4eJA7PeWKfj8De3MYGlAMrbuF59FjfW9kiTL8+n3KZ
zKH4nrBuId2w+1gPEPOY1JLQgkrOlDh5JxZJ4Sd/5OqudfFMw2oTAgabjvxj6LMB
xIPijF8g8Sx9Ekb3ihYIV22JBKhtBqT3Ita6pYHMetOgVJV/EeUEkwJdg+94TGDU
q42GY3mp1CDWRqh7rrSj2DJlAPeXPE3KkKOpcfFjglq5l9L3ZZUk8vCKsUMZLYDd
4QGs9Ln2RqH0+tCMZDEBi6NZX3a+SFUTv1sDfdwBqdeQ06bggqgHrzEvvoEKHM3X
vyNszjcjEONUTr+I9NqKBm0q/TnG0RwDO7+/CS+pxnHhc/VC9Mn3zgO7WI+Syzwb
THKIRTgKCuPu6KkvwZkdbLWqKeYWIxsO63BW2IpJk7qR8WVktRm4JQzrCN8zb5/6
Yv53K0MQcaz4rM2mQsa5J4bx6yYhvTTqtziWtQQRx5xKPD8A0DI=
=QqVL
-----END PGP SIGNATURE-----

M
M
muradm wrote on 7 Jan 16:25 +0100
Re: [bug#67657] [PATCH v2] services: connman: Add 'connman-general-configuration'.
87le91np0q.fsf@muradm.net
ping?

muradm <mail@muradm.net> writes:

Toggle quote (536 lines)
> For me connman in default configuration causes conflict with
> docker
> generated virtual veth* interfaces. Currently connman has no
> main.conf as specified in man 5 connman.conf which would allow
> setting NetworkInterfaceBalcklist and other useful options.
>
> This patch adds connman-general-configuration, serializes it and
> passes to connmad with --config= flag.
>
> All configuration fields are 'maybe-*' deliberately. This will
> not
> disturb current users. This will not require supporting
> configuration
> changes for connmand.
>
> * gnu/services/networking.scm:
> (<connman-general-configuration>): New configuration record
> to represent main.conf for connmand.
> (<connman-configuration>)[general-configuration]: New field.
> (connman-shepherd-service): Honor it.
> *doc/guix.texi (Networking Services): Add generated
> configuration.
>
> Change-Id: I5d78f49e8b2d5e0b3cbd7b8b604e8a254b6397e8
> ---
> doc/guix.texi | 205 +++++++++++++++++++++++++++++
> gnu/services/networking.scm | 255
> +++++++++++++++++++++++++++++++++++-
> 2 files changed, 457 insertions(+), 3 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index e61a893af9..d2cfe0f356 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -20810,9 +20810,214 @@ Networking Setup
> @item @code{disable-vpn?} (default: @code{#f})
> When true, disable connman's vpn plugin.
>
> +@item @code{general-configuration} (default:
> @code{(connman-general-configuration)})
> +Configuration serialized to @file{main.conf} and passed as
> @option{--config}
> +to @command{connmand}.
> +
> @end table
> @end deftp
>
> +@c %start of fragment
> +
> +@deftp {Data Type} connman-general-configuration
> +Available @code{connman-general-configuration} fields are:
> +
> +@table @asis
> +@item @code{input-request-timeout} (type: maybe-number)
> +Set input request timeout. Default is 120 seconds. The
> request for
> +inputs like passphrase will timeout after certain amount of
> time. Use
> +this setting to increase the value in case of different user
> interface
> +designs.
> +
> +@item @code{browser-launch-timeout} (type: maybe-number)
> +Set browser launch timeout. Default is 300 seconds. The
> request for
> +launching a browser for portal pages will timeout after certain
> amount
> +of time. Use this setting to increase the value in case of
> different
> +user interface designs.
> +
> +@item @code{background-scanning?} (type: maybe-boolean)
> +Enable background scanning. Default is true. If wifi is
> disconnected,
> +the background scanning will follow a simple back off mechanism
> from 3s
> +up to 5 minutes. Then, it will stay in 5 minutes unless user
> +specifically asks for scanning through a D-Bus call. If so,
> the
> +mechanism will start again from 3s. This feature activates
> also the
> +background scanning while being connected, which is required
> for roaming
> +on wifi. When @code{background-scanning?} is false, ConnMan
> will not
> +perform any scan regardless of wifi is connected or not, unless
> it is
> +requested by the user through a D-Bus call.
> +
> +@item @code{use-gateways-as-timeservers?} (type: maybe-boolean)
> +Assume that service gateways also function as timeservers.
> Default is
> +false.
> +
> +@item @code{fallback-timeservers} (type: maybe-list)
> +List of Fallback timeservers. These timeservers are used for
> NTP sync
> +when there are no timeservers set by the user or by the
> service, and
> +when @code{use-gateways-as-timeservers?} is @code{#f}. These
> can
> +contain a mixed combination of fully qualified domain names,
> IPv4 and
> +IPv6 addresses.
> +
> +@item @code{fallback-nameservers} (type: maybe-list)
> +List of fallback nameservers appended to the list of
> nameservers given
> +by the service. The nameserver entries must be in numeric
> format, host
> +names are ignored.
> +
> +@item @code{default-auto-connect-technologies} (type:
> maybe-list)
> +List of technologies that are marked autoconnectable by
> default. The
> +default value for this entry when empty is @code{"ethernet"},
> +@code{"wifi"}, @code{"cellular"}. Services that are
> automatically
> +connected must have been set up and saved to storage
> beforehand.
> +
> +@item @code{default-favourite-technologies} (type: maybe-list)
> +List of technologies that are marked favorite by default. The
> default
> +value for this entry when empty is @code{"ethernet"}. Connects
> to
> +services from this technology even if not setup and saved to
> storage.
> +
> +@item @code{always-connected-technologies} (type: maybe-list)
> +List of technoolgies which are always connected regardless of
> +preferred-technologies setting (@code{auto-connect?}
> @code{#t}). The
> +default value is empty and this feature is disabled unless
> explicitly
> +enabled.
> +
> +@item @code{preferred-technologies} (type: maybe-list)
> +List of preferred technologies from the most preferred one to
> the least
> +preferred one. Services of the listed technology type will be
> tried one
> +by one in the order given, until one of them gets connected or
> they are
> +all tried. A service of a preferred technology type in state
> 'ready'
> +will get the default route when compared to another preferred
> type
> +further down the list with state 'ready' or with a
> non-preferred type; a
> +service of a preferred technology type in state 'online' will
> get the
> +default route when compared to either a non-preferred type or a
> +preferred type further down in the list.
> +
> +@item @code{network-interface-blacklist} (type: maybe-list)
> +List of blacklisted network interfaces. Found interfaces will
> be
> +compared to the list and will not be handled by ConnMan, if
> their first
> +characters match any of the list entries. Default value is
> +@code{"vmnet"}, @code{"vboxnet"}, @code{"virbr"}, @code{"ifb"}.
> +
> +@item @code{allow-hostname-updates?} (type: maybe-boolean)
> +Allow ConnMan to change the system hostname. This can happen
> for
> +example if we receive DHCP hostname option. Default value is
> @code{#t}.
> +
> +@item @code{allow-domainname-updates?} (type: maybe-boolean)
> +Allow connman to change the system domainname. This can happen
> for
> +example if we receive DHCP domainname option. Default value is
> +@code{#t}.
> +
> +@item @code{single-connected-technology?} (type: maybe-boolean)
> +Keep only a single connected technology at any time. When a
> new service
> +is connected by the user or a better one is found according to
> +preferred-technologies, the new service is kept connected and
> all the
> +other previously connected services are disconnected. With
> this setting
> +it does not matter whether the previously connected services
> are in
> +'online' or 'ready' states, the newly connected service is the
> only one
> +that will be kept connected. A service connected by the user
> will be
> +used until going out of network coverage. With this setting
> enabled
> +applications will notice more network breaks than normal. Note
> this
> +options can't be used with VPNs. Default value is @code{#f}.
> +
> +@item @code{tethering-technologies} (type: maybe-list)
> +List of technologies that are allowed to enable tethering. The
> default
> +value is @code{"wifi"}, @code{"bluetooth"}, @code{"gadget"}.
> Only those
> +technologies listed here are used for tethering. If one wants
> to tether
> +ethernet, then add @code{"ethernet"} in the list. NOTE that if
> ethernet
> +tethering is enabled, then a DHCP server is started on all
> ethernet
> +interfaces. Tethered ethernet should never be connected to
> corporate or
> +home network as it will disrupt normal operation of these
> networks. Due
> +to this ethernet is not tethered by default. Do not activate
> ethernet
> +tethering unless you really know what you are doing.
> +
> +@item @code{persistent-tethering-mode?} (type: maybe-boolean)
> +Restore earlier tethering status when returning from offline
> mode,
> +re-enabling a technology, and after restarts and reboots.
> Default value
> +is @code{#f}.
> +
> +@item @code{enable-6to4?} (type: maybe-boolean)
> +Automatically enable anycast 6to4 if possible. This is not
> recommended,
> +as the use of 6to4 will generally lead to a severe degradation
> of
> +connection quality. See RFC6343. Default value is @code{#f}
> (as
> +recommended by RFC6343 section 4.1).
> +
> +@item @code{vendor-class-id} (type: maybe-string)
> +Set DHCP option 60 (Vendor Class ID) to the given string. This
> option
> +can be used by DHCP servers to identify specific clients
> without having
> +to rely on MAC address ranges, etc.
> +
> +@item @code{enable-online-check?} (type: maybe-boolean)
> +Enable or disable use of HTTP GET as an online status check.
> When a
> +service is in a READY state, and is selected as default,
> ConnMan will
> +issue an HTTP GET request to verify that end-to-end
> connectivity is
> +successful. Only then the service will be transitioned to
> ONLINE state.
> +If this setting is false, the default service will remain in
> READY
> +state. Default value is @code{#t}.
> +
> +@item @code{online-check-ipv4-url} (type: maybe-string)
> +IPv4 URL used during the online status check. Please refer to
> the
> +README for more detailed information. Default value is
> +@uref{http://ipv4.connman.net/online/status.html}.
> +
> +@item @code{online-check-ipv6-url} (type: maybe-string)
> +IPv6 URL used during the online status check. Please refer to
> the
> +README for more detailed information. Default value is
> +@uref{http://ipv6.connman.net/online/status.html}.
> +
> +@item @code{online-check-initial-interval} (type: maybe-number)
> +Range of intervals between two online check requests. Please
> refer to
> +the README for more detailed information. Default values is
> @samp{1}.
> +
> +@item @code{online-check-max-interval} (type: maybe-number)
> +Range of intervals between two online check requests. Please
> refer to
> +the README for more detailed information. Default values is
> @samp{1}.
> +
> +@item @code{enable-online-to-ready-transition?} (type:
> maybe-boolean)
> +WARNING: Experimental feature!!! In addition to
> +@code{enable-online-check} setting, enable or disable use of
> HTTP GET to
> +detect the loss of end-to-end connectivity. If this setting is
> +@code{#f}, when the default service transitions to ONLINE
> state, the
> +HTTP GET request is no more called until next cycle, initiated
> by a
> +transition of the default service to DISCONNECT state. If this
> setting
> +is @code{#t}, the HTTP GET request keeps being called to
> guarantee that
> +end-to-end connectivity is still successful. If not, the
> default
> +service will transition to READY state, enabling another
> service to
> +become the default one, in replacement. Default value is
> @code{#f}.
> +
> +@item @code{auto-connect-roaming-services?} (type:
> maybe-boolean)
> +Automatically connect roaming services. This is not
> recommended unless
> +you know you won't have any billing problem. Default value is
> +@code{#f}.
> +
> +@item @code{address-conflict-detection?} (type: maybe-boolean)
> +Enable or disable the implementation of IPv4 address conflict
> detection
> +according to RFC5227. ConnMan will send probe ARP packets to
> see if an
> +IPv4 address is already in use before assigning the address to
> an
> +interface. If an address conflict occurs for a statically
> configured
> +address, an IPv4LL address will be chosen instead (according to
> +RFC3927). If an address conflict occurs for an address offered
> via
> +DHCP, ConnMan send a DHCP DECLINE once and for the second
> conflict
> +resort to finding an IPv4LL address. Default value is
> @code{#f}.
> +
> +@item @code{localtime} (type: maybe-string)
> +Path to localtime file. Defaults to @file{/etc/localtime}.
> +
> +@item @code{regulatory-domain-follows-timezone?} (type:
> maybe-boolean)
> +Enable regulatory domain to be changed along timezone changes.
> With
> +this option set to true each time the timezone changes the
> first present
> +ISO3166 country code is being read from
> +@file{/usr/share/zoneinfo/zone1970.tab} and set as regulatory
> domain
> +value. Default value is @code{#f}.
> +
> +@item @code{resolv-conf} (type: maybe-string)
> +Path to resolv.conf file. If the file does not exist, but
> intermediate
> +directories exist, it will be created. If this option is not
> set, it
> +tries to write into @file{/var/run/connman/resolv.conf} if it
> fails
> +(@file{/var/run/connman} does not exist or is not writeable).
> If you do
> +not want to update resolv.conf, you can set @file{/dev/null}.
> +
> +@end table
> +
> +@end deftp
> +
> @cindex WPA Supplicant
> @defvar wpa-supplicant-service-type
> This is the service type to run
> @url{https://w1.fi/wpa_supplicant/,WPA
> diff --git a/gnu/services/networking.scm
> b/gnu/services/networking.scm
> index 0508a4282c..7670cd97af 100644
> --- a/gnu/services/networking.scm
> +++ b/gnu/services/networking.scm
> @@ -21,6 +21,7 @@
> ;;; Copyright © 2022, 2023 Andrew Tropin <andrew@trop.in>
> ;;; Copyright © 2023 Declan Tsien <declantsien@riseup.net>
> ;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
> +;;; Copyright © 2023 muradm <mail@muradm.net>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -78,6 +79,7 @@ (define-module (gnu services networking)
> #:use-module (srfi srfi-26)
> #:use-module (srfi srfi-43)
> #:use-module (ice-9 match)
> + #:use-module (ice-9 string-fun)
> #:use-module (json)
> #:re-export (static-networking-service
> static-networking-service-type)
> @@ -171,6 +173,8 @@ (define-module (gnu services networking)
> network-manager-configuration-vpn-plugins
> network-manager-service-type
>
> + connman-general-configuration
> + connman-general-configuration?
> connman-configuration
> connman-configuration?
> connman-configuration-connman
> @@ -1326,6 +1330,241 @@ (define network-manager-service-type
> ;;; Connman
> ;;;
>
> +(define (connman-general-configuration-field-name field-name)
> + (let* ((str->camel (lambda (s)
> + (string-concatenate
> + (map string-capitalize (string-split s
> #\-)))))
> + (str (if (symbol? field-name)
> + (str->camel (symbol->string field-name))
> + field-name)))
> + (cond
> + ((string-suffix? "?" str)
> (connman-general-configuration-field-name
> + (string-drop-right str 1)))
> + ((string-contains str "RegulatoryDomain")
> (connman-general-configuration-field-name
> +
> (string-replace-substring str "RegulatoryDomain" "Regdom")))
> + ((string-contains str "Url")
> (connman-general-configuration-field-name
> + (string-replace-substring
> str "Url" "URL")))
> + ((string-contains str "Ip")
> (connman-general-configuration-field-name
> + (string-replace-substring str
> "Ip" "IP")))
> + ((string-contains str "6To4")
> (connman-general-configuration-field-name
> + (string-replace-substring
> str "6To4" "6to4")))
> + (#t str))))
> +
> +(define (connman-general-configuration-serialize-string
> field-name value)
> + (let ((param (connman-general-configuration-field-name
> field-name)))
> + #~(string-append #$param " = " #$value "\n")))
> +
> +(define (connman-general-configuration-serialize-number
> field-name value)
> + (connman-general-configuration-serialize-string
> + field-name (number->string value)))
> +
> +(define (connman-general-configuration-serialize-list
> field-name value)
> + (connman-general-configuration-serialize-string
> + field-name (string-join value ",")))
> +
> +(define (connman-general-configuration-serialize-boolean
> field-name value)
> + (connman-general-configuration-serialize-string
> + field-name (if value "true" "false")))
> +
> +(define-maybe boolean (prefix connman-general-configuration-))
> +(define-maybe number (prefix connman-general-configuration-))
> +(define-maybe string (prefix connman-general-configuration-))
> +(define-maybe list (prefix connman-general-configuration-))
> +
> +(define-configuration connman-general-configuration
> + (input-request-timeout
> + maybe-number
> + "Set input request timeout. Default is 120 seconds. The
> request for inputs
> +like passphrase will timeout after certain amount of time. Use
> this setting to
> +increase the value in case of different user interface
> designs.")
> + (browser-launch-timeout
> + maybe-number
> + "Set browser launch timeout. Default is 300 seconds. The
> request for
> +launching a browser for portal pages will timeout after certain
> amount of
> +time. Use this setting to increase the value in case of
> different user
> +interface designs.")
> + (background-scanning?
> + maybe-boolean
> + "Enable background scanning. Default is true. If wifi is
> disconnected, the
> +background scanning will follow a simple back off mechanism
> from 3s up to 5
> +minutes. Then, it will stay in 5 minutes unless user
> specifically asks for
> +scanning through a D-Bus call. If so, the mechanism will start
> again from
> +3s. This feature activates also the background scanning while
> being connected,
> +which is required for roaming on wifi. When
> @code{background-scanning?} is false,
> +ConnMan will not perform any scan regardless of wifi is
> connected or not,
> +unless it is requested by the user through a D-Bus call.")
> + (use-gateways-as-timeservers?
> + maybe-boolean
> + "Assume that service gateways also function as timeservers.
> Default is false.")
> + (fallback-timeservers
> + maybe-list
> + "List of Fallback timeservers. These timeservers are used
> for NTP sync
> +when there are no timeservers set by the user or by the
> service, and when
> +@code{use-gateways-as-timeservers?} is @code{#f}. These can
> contain a mixed
> +combination of fully qualified domain names, IPv4 and IPv6
> addresses.")
> + (fallback-nameservers
> + maybe-list
> + "List of fallback nameservers appended to the list of
> nameservers given
> +by the service. The nameserver entries must be in numeric
> format,
> +host names are ignored.")
> + (default-auto-connect-technologies
> + maybe-list
> + "List of technologies that are marked autoconnectable by
> default. The
> +default value for this entry when empty is @code{\"ethernet\"},
> @code{\"wifi\"},
> +@code{\"cellular\"}. Services that are automatically connected
> must have been
> +set up and saved to storage beforehand.")
> + (default-favourite-technologies
> + maybe-list
> + "List of technologies that are marked favorite by default.
> The default
> +value for this entry when empty is @code{\"ethernet\"}.
> Connects to services
> +from this technology even if not setup and saved to storage.")
> + (always-connected-technologies
> + maybe-list
> + "List of technoolgies which are always connected regardless
> of
> +preferred-technologies setting (@code{auto-connect?}
> @code{#t}). The default
> +value is empty and this feature is disabled unless explicitly
> enabled.")
> + (preferred-technologies
> + maybe-list
> + "List of preferred technologies from the most preferred one
> to the least
> +preferred one. Services of the listed technology type will be
> tried one by
> +one in the order given, until one of them gets connected or
> they are all
> +tried. A service of a preferred technology type in state
> 'ready' will get
> +the default route when compared to another preferred type
> further down the
> +list with state 'ready' or with a non-preferred type; a service
This message was truncated. Download the full message here.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEESPY5lma9A9l5HGLP6M7O0mLOBeIFAmWawpUACgkQ6M7O0mLO
BeJShxAAhhhlGyJWWLmgf2mqUmi73xxEfZetSSg/QnxV/7TifDTEd96iDSrGCP0J
P/MhVtWEZXgIfc3XBWOpncQKoUVp1JNE5nPKHoDkxDIH43cLSK2w/eZbtSzCtC1Z
zfNVbbV5DeUd7IL37Sfdg1p9LB3teMQc5gjwbT/o4f8wng8DFf8kdmK/0IVsapKf
eYFXvO6OONvdxa6TAdPECbmHltL4JAh1jxfq6MX4y9PbB5/iWX2N3ds9s08f/Gyc
KjUXrSA+xQ5s5MkmI5mYW0aLCRgUIslDVUvRxtZFDlpYsN955WbhxxnGS77GFFbc
Yc44BzajXsPOxtYW4jujZCIXldUtZc8bzbXyQe+kSunSh3PknVwcE9vlgshe18xk
AzBzuB77qnsjda0HZoze9AbMpAE1Ha3PweloyoWXUnoXWxqxPR5ucMAYwh4Vphhi
pEACVIENw08MB7rK9OTd8ZUEnpPJxUsEIkC9REl3G5weL+olvcMRPUS2qeG3uz2v
cd4C1Cnd5Dvc5Ol5M2jq0iNDgpH+knBGs8c8yrENiRsTRiq3hzb4ueKYuavlUX6Q
epsuKL12atSc9BzeNCHKSWIfz/vuBsKe2DcYhJX3qWwMSsZZCpjJt6YEDmegkXHQ
SohdUc1iGaOU9hHdcTIbMPVB5TPaviU91DdtWSqvnPmWYLM9ouY=
=k9Do
-----END PGP SIGNATURE-----

M
M
Maxim Cournoyer wrote on 22 Jan 15:57 +0100
(name . muradm)(address . mail@muradm.net)
87v87l2z7b.fsf@gmail.com
Hi,

muradm <mail@muradm.net> writes:

Toggle quote (26 lines)
> ping?
>
> muradm <mail@muradm.net> writes:
>
>> For me connman in default configuration causes conflict with docker
>> generated virtual veth* interfaces. Currently connman has no
>> main.conf as specified in man 5 connman.conf which would allow
>> setting NetworkInterfaceBalcklist and other useful options.
>>
>> This patch adds connman-general-configuration, serializes it and
>> passes to connmad with --config= flag.
>>
>> All configuration fields are 'maybe-*' deliberately. This will not
>> disturb current users. This will not require supporting
>> configuration
>> changes for connmand.
>>
>> * gnu/services/networking.scm:
>> (<connman-general-configuration>): New configuration record
>> to represent main.conf for connmand.
>> (<connman-configuration>)[general-configuration]: New field.
>> (connman-shepherd-service): Honor it.
>> *doc/guix.texi (Networking Services): Add generated configuration.
>>
>> Change-Id: I5d78f49e8b2d5e0b3cbd7b8b604e8a254b6397e8

Pushed with the following typo fixes/improvements to doc:

Toggle snippet (124 lines)
2 files changed, 16 insertions(+), 16 deletions(-)
doc/guix.texi | 16 ++++++++--------
gnu/services/networking.scm | 16 ++++++++--------

modified doc/guix.texi
@@ -21013,7 +21013,7 @@ Networking Setup
services from this technology even if not setup and saved to storage.
@item @code{always-connected-technologies} (type: maybe-list)
-List of technoolgies which are always connected regardless of
+List of technologies which are always connected regardless of
preferred-technologies setting (@code{auto-connect?} @code{#t}). The
default value is empty and this feature is disabled unless explicitly
enabled.
@@ -21060,7 +21060,7 @@ Networking Setup
List of technologies that are allowed to enable tethering. The default
value is @code{"wifi"}, @code{"bluetooth"}, @code{"gadget"}. Only those
technologies listed here are used for tethering. If one wants to tether
-ethernet, then add @code{"ethernet"} in the list. NOTE that if ethernet
+ethernet, then add @code{"ethernet"} in the list. Note that if ethernet
tethering is enabled, then a DHCP server is started on all ethernet
interfaces. Tethered ethernet should never be connected to corporate or
home network as it will disrupt normal operation of these networks. Due
@@ -21103,14 +21103,14 @@ Networking Setup
@item @code{online-check-initial-interval} (type: maybe-number)
Range of intervals between two online check requests. Please refer to
-the README for more detailed information. Default values is @samp{1}.
+the README for more detailed information. Default value is @samp{1}.
@item @code{online-check-max-interval} (type: maybe-number)
Range of intervals between two online check requests. Please refer to
-the README for more detailed information. Default values is @samp{1}.
+the README for more detailed information. Default value is @samp{1}.
@item @code{enable-online-to-ready-transition?} (type: maybe-boolean)
-WARNING: Experimental feature!!! In addition to
+WARNING: This is an experimental feature. In addition to
@code{enable-online-check} setting, enable or disable use of HTTP GET to
detect the loss of end-to-end connectivity. If this setting is
@code{#f}, when the default service transitions to ONLINE state, the
@@ -21133,8 +21133,8 @@ Networking Setup
interface. If an address conflict occurs for a statically configured
address, an IPv4LL address will be chosen instead (according to
RFC3927). If an address conflict occurs for an address offered via
-DHCP, ConnMan send a DHCP DECLINE once and for the second conflict
-resort to finding an IPv4LL address. Default value is @code{#f}.
+DHCP, ConnMan sends a DHCP DECLINE once and for the second conflict
+resorts to finding an IPv4LL address. Default value is @code{#f}.
@item @code{localtime} (type: maybe-string)
Path to localtime file. Defaults to @file{/etc/localtime}.
@@ -21142,7 +21142,7 @@ Networking Setup
@item @code{regulatory-domain-follows-timezone?} (type: maybe-boolean)
Enable regulatory domain to be changed along timezone changes. With
this option set to true each time the timezone changes the first present
-ISO3166 country code is being read from
+ISO3166 country code is read from
@file{/usr/share/zoneinfo/zone1970.tab} and set as regulatory domain
value. Default value is @code{#f}.
modified gnu/services/networking.scm
@@ -1420,7 +1420,7 @@ (define-configuration connman-general-configuration
from this technology even if not setup and saved to storage.")
(always-connected-technologies
maybe-list
- "List of technoolgies which are always connected regardless of
+ "List of technologies which are always connected regardless of
preferred-technologies setting (@code{auto-connect?} @code{#t}). The default
value is empty and this feature is disabled unless explicitly enabled.")
(preferred-technologies
@@ -1466,7 +1466,7 @@ (define-configuration connman-general-configuration
default value is @code{\"wifi\"}, @code{\"bluetooth\"},
@code{\"gadget\"}. Only those technologies listed here are used for
tethering. If one wants to tether ethernet, then add @code{\"ethernet\"}
-in the list. NOTE that if ethernet tethering is enabled, then a DHCP
+in the list. Note that if ethernet tethering is enabled, then a DHCP
server is started on all ethernet interfaces. Tethered ethernet should
never be connected to corporate or home network as it will disrupt normal
operation of these networks. Due to this ethernet is not tethered by
@@ -1509,16 +1509,16 @@ (define-configuration connman-general-configuration
(online-check-initial-interval
maybe-number
"Range of intervals between two online check requests. Please
-refer to the README for more detailed information. Default values
+refer to the README for more detailed information. Default value
is @samp{1}.")
(online-check-max-interval
maybe-number
"Range of intervals between two online check requests. Please
-refer to the README for more detailed information. Default values
+refer to the README for more detailed information. Default value
is @samp{1}.")
(enable-online-to-ready-transition?
maybe-boolean
- "WARNING: Experimental feature!!! In addition to
+ "WARNING: This is an experimental feature. In addition to
@code{enable-online-check} setting, enable or disable use of HTTP GET
to detect the loss of end-to-end connectivity. If this setting is
@code{#f}, when the default service transitions to ONLINE state, the
@@ -1542,8 +1542,8 @@ (define-configuration connman-general-configuration
address to an interface. If an address conflict occurs for a
statically configured address, an IPv4LL address will be chosen
instead (according to RFC3927). If an address conflict occurs for
-an address offered via DHCP, ConnMan send a DHCP DECLINE once
-and for the second conflict resort to finding an IPv4LL
+an address offered via DHCP, ConnMan sends a DHCP DECLINE once
+and for the second conflict resorts to finding an IPv4LL
address. Default value is @code{#f}.")
(localtime
maybe-string
@@ -1552,7 +1552,7 @@ (define-configuration connman-general-configuration
maybe-boolean
"Enable regulatory domain to be changed along timezone changes.
With this option set to true each time the timezone changes the first
-present ISO3166 country code is being read from
+present ISO3166 country code is read from
@file{/usr/share/zoneinfo/zone1970.tab} and set as regulatory domain
value. Default value is @code{#f}.")
(resolv-conf

[back]

--
Thanks,
Maxim
Closed
?