[RFC] rc.d integration for the bluetooth subsystem
Maksim Yevmenkin
maksim.yevmenkin at savvis.net
Thu Nov 3 11:34:54 PST 2005
Brooks Davis wrote:
[...]
>>>> My concern is about putting things not related directly to
>>>> system startup driven by rc(8) in /etc/rc.d and /etc/rc.conf.d
>>>> directories. Perhaps it would be better to still use rc.subr as
>>>> a source of great subroutines, but place the bluetooth scripts
>>>> and configs in their own directories -- rc.subr should support
>>>> this.
>>>
>>> I don't disagree, but we've already got three scripts like this
>>> in /etc/rc.d (dhclient, power_profile, and wpa_supplicant) so I
>>> don't think it's a big deal. IMO, the conf files are find
>>> (though I don't like the
>>
>> this was another thing that i was worried about too :) however, as
>> you pointed out, rc.d already has few 'nostart' scripts. keep in
>> mind that even though /etc/rc.d/bluetooth has 'nostart' keyword it
>> is still possible to execute it by hand, i.e. '/etc/rc.d/bluetooth
>> restart ubt0' and it will work. this way you could restart
>> bluetooth stack without unplugging the device. i imagine one might
>> want to tweak config and the restart the stack. imo, /etc/rc.d is a
>> good place for bluetooth script.
>>
>>> idea of a .sample in /etc/rc.conf.d). There is some argument for
>>> moving the scripts to another directory though. I'm not sure
>>> what we'd call it though.
>>
>> ok, let me re-phrase the question then
>>
>> do you think that having multiple config files under /etc/rc.conf.d
>> is a good idea?
>
> The one problem with this is that it breaks the model that rc.conf.d
> contains files with contents that could live in in /etc/rc.conf.
> That may not be a sufficiently large problem to worry about though.
> If it is an issue an /etc/bluetooth.d could be a solution.
well, may be. is it really required to create configuration directory
under /etc for every subsystem? do you think this is better then, say,
have multiple files under /etc/rc.conf.d?
>> do you think that other subsystem might benefit from similar (to
>> bluetooth) config style or bluetooth will be the only subsystem
>> that uses it?
>
> I've been thinking a little bit about hostapd and it needs multiple
> config files. For it I was thinking of of creating an
> /etc/hostapd.conf.d directory.
please see my comment above.
>> i'd really hate to introduce somewhat new config style just for
>> bluetooth. i really do not want people whine about it and ask why
>> they cant put things into /etc/rc.conf (where the rest of config
>> is). freebsd is not linux. adding or changing things should produce
>> benefits that would overweight potential complains from users, imo.
>
> If the concern is about people complaining about /etc/rc.conf not
> working, then you have no choice but to use variables with the device
> name in them. There's no other way to do it and keep those
> semantics. As I say above, I'm not sure how important it is, but from
> this perspective it's pretty critical.
i think it is. another thing i'm worried about is sysinstall(8). right
now it puts stuff into /etc/rc.conf. maybe its better to have things in
/etc/rc.conf so it easier to modify sysinstall(8)?
> One interesting option might be to (ab)use the fact that config files
> are scripts and modify the sample file slightly to call a function
> (probably defined in an /etc/bluetooth.subr) that converts from the
> set of variables you are using now to a set of ugly, but per device
> named variables. i.e. you'd add something like the following to the
> end of the config file:
>
> . /etc/bluetooth.subr convert_bluetooth_vars $dev
>
> convert_bluetooth vars would then set the device variables and
> undefine the non-specific ones. That would preserve the clean
> file-per-device syntax and the ability to set everything in
> /etc/rc.conf.
now thats an interesting idea. how about adding export_rc_config()
function that would export all variables from the given file with the
given namespace prefix (please see below)? also how about moving
_optional_ per-device configuration files under /etc/bluetooth?
#
# export_rc_config
# Source in the configuration file and export all variables from
# the file with the namespace prefix
#
export_rc_config()
{
_file=$1
_namespace=$2
if [ -z "$_file" -o -z "$_namespace" ]; then
err 3 'USAGE: export_rc_config file namespace'
fi
{ while read line
do
case $line in
\#*)
continue
;;
*)
_var=`expr "$line" : "^\([a-zA-Z0-9_]*\)="`
_val=`expr "$line" : "^.*=\(.*\)"`
if [ -z "$_var" -o -z "$_val" ]; then
continue;
fi
_exported_var="$_namespace$_var"
eval $_exported_var=$_val
;;
esac
done } < $_file
return 0
}
thanks,
max
More information about the freebsd-bluetooth
mailing list