Bug 281242

Summary: .include directive in ctl.conf file doesn't work as supposed to per UCL file standard
Product: Base System Reporter: gnoma <gnoma_86>
Component: confAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed Not Enough Information    
Severity: Affects Some People CC: asomers, gnoma_86, markj, mav
Priority: ---    
Version: 14.1-RELEASE   
Hardware: amd64   
OS: Any   

Description gnoma 2024-09-03 13:50:53 UTC
At the bottom of my /etc/ctl.conf got the following directive: 

.include /etc/ctl.d/proxmoxtest.conf

It's a valid configuration file, if I place it's content inside /etc/ctl.conf it works perfectly fine. 

Expected result: 
ctld starts OK 

Actual result: 


root@mysystem:/usr/src/lib/libucl # /etc/rc.d/ctld start
Starting ctld.
ctld: error in configuration file at line 28 near '.include': syntax error
ctld: configuration error; exiting
/etc/rc.d/ctld: WARNING: failed to start ctld
root@mysystem:/usr/src/lib/libucl # 


The behavior doesn't change if the included file is there or not, if included the file syntax is correct or not.


This is the last part of "truss ctld -t"

open("/etc/ctl.conf",O_RDONLY,0666)		 = 5 (0x5)
ioctl(5,TIOCGETA,0xf380fced854)			 ERR#25 'Inappropriate ioctl for device'
ioctl(5,TIOCGETA,0xf380fced854)			 ERR#25 'Inappropriate ioctl for device'
fstat(5,{ mode=-rw-r----- ,inode=571054,size=464,blksize=4096 }) = 0 (0x0)
read(5,"portal-group pg0 {\n\tdiscovery-"...,4096) = 464 (0x1d0)
read(5,0x33b37cc09000,4096)			 = 0 (0x0)
ctld: error in configuration file at line 28 near '.include': syntax error
write(2,"ctld: error in configuration fil"...,75) = 75 (0x4b)
open("/etc/localtime",O_RDONLY,01717)		 = 6 (0x6)
read(6,"TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0"...,54968) = 2077 (0x81d)
close(6)					 = 0 (0x0)
__sysctl("kern.hostname",2,0xf380fced530,0xf380fce9418,0x0,0) = 0 (0x0)
getpid()					 = 11333 (0x2c45)
sendto(3,"<28>1 2024-09-03T16:48:47.586183"...,146,0,NULL,0) = 146 (0x92)
close(5)					 = 0 (0x0)
ctld: configuration error; exiting
write(2,"ctld: configuration error; exiti"...,35) = 35 (0x23)
__sysctl("kern.hostname",2,0xf380fced700,0xf380fce95e8,0x0,0) = 0 (0x0)
getpid()					 = 11333 (0x2c45)
sendto(3,"<26>1 2024-09-03T16:48:47.586764"...,106,0,NULL,0) = 106 (0x6a)
exit(0x1)					
process exit, rval = 1
Comment 1 Mark Johnston freebsd_committer freebsd_triage 2024-09-06 18:35:39 UTC
Is this a regression?  It's not entirely clear to me that this is expected to work; the ctl.conf man page doesn't mention include directives.
Comment 2 Alan Somers freebsd_committer freebsd_triage 2024-09-06 20:14:43 UTC
Do you have ctld_flags="-u" in /etc/rc.conf?  If not, then ctld will not interpret the file as UCL.
Comment 3 Mark Johnston freebsd_committer freebsd_triage 2024-10-10 13:32:33 UTC
Please re-open with a reply to Alan's question, unless the hint of adding -u fixed the problem.