summaryrefslogtreecommitdiff
path: root/gnu/services/base.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-03-20 14:44:19 +0100
committerLudovic Courtès <ludo@gnu.org>2023-03-21 19:13:32 +0100
commit0143e3f291842d2cba138515e616948c7ae8c04e (patch)
tree2981a228d7e9e1c615443f1c1bd2263fd6eafeac /gnu/services/base.scm
parent4f63b4b86de47b094ccf42ed68f9f3aa960285bd (diff)
services: static-networking: 'eval-when' for code used at expansion-time.
Reported by bjc on #guix. * gnu/services/base.scm (valid-name, cidr->netmask): Wrap in 'eval-when' since they are used by "compile-time procedures" (macros).
Diffstat (limited to 'gnu/services/base.scm')
-rw-r--r--gnu/services/base.scm28
1 files changed, 15 insertions, 13 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 190bb8fe24..2c984a0747 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -703,9 +703,10 @@ to add @var{device} to the kernel's entropy pool. The service will fail if
;;; /etc/hosts
;;;
-(define (valid-name? name)
- "Return true if @var{name} is likely to be a valid host name."
- (false-if-exception (not (string-any char-set:whitespace name))))
+(eval-when (expand load eval)
+ (define (valid-name? name)
+ "Return true if @var{name} is likely to be a valid host name."
+ (false-if-exception (not (string-any char-set:whitespace name)))))
(define-compile-time-procedure (assert-valid-name (name valid-name?))
"Ensure @var{name} is likely to be a valid host name."
@@ -2664,16 +2665,17 @@ Write, say, @samp{\"~a/24\"} for a 24-bit network mask.")
ipv6-address?))))
(gateway network-route-gateway (default #f)))
-(define* (cidr->netmask str #:optional (family AF_INET))
- "Given @var{str}, a string in CIDR notation (e.g., \"1.2.3.4/24\"), return
+(eval-when (expand load eval)
+ (define* (cidr->netmask str #:optional (family AF_INET))
+ "Given @var{str}, a string in CIDR notation (e.g., \"1.2.3.4/24\"), return
the netmask as a string like \"255.255.255.0\"."
- (match (string-split str #\/)
- ((ip (= string->number bits))
- (let ((mask (ash (- (expt 2 bits) 1)
- (- (if (= family AF_INET6) 128 32)
- bits))))
- (inet-ntop family mask)))
- (_ #f)))
+ (match (string-split str #\/)
+ ((ip (= string->number bits))
+ (let ((mask (ash (- (expt 2 bits) 1)
+ (- (if (= family AF_INET6) 128 32)
+ bits))))
+ (inet-ntop family mask)))
+ (_ #f))))
(define (cidr->ip str)
"Strip the netmask bit of @var{str}, a CIDR-notation IP/netmask address."