svn commit: r244198 - in head: etc/rc.d sbin/sysctl

Xin Li delphij at delphij.net
Wed Dec 19 19:16:33 UTC 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 12/19/12 09:37, Alfred Perlstein wrote:
> I think that it's a good idea. Maybe there's some way to give
> sysctl.conf the equivalent of #file preprocessor directives?

/me seeing sysctl(8) expanding to grow e-mail reading capability in
the future? :)

It may be worthy to make sysctl(8) to accept mutiple -f's, but it
seems to be hard to write shell scripts that utilizes this feature in
a elegant manner.

It shouldn't be hard to add -f - capability as well, which will be
useful for applications like FreeNAS.

Jilles also have some comments that I wanted to address as well.

> Sent from my iPhone
> 
> On Dec 19, 2012, at 7:56 AM, Ian Lepore
> <freebsd at damnhippie.dyndns.org> wrote:
> 
>> Hrm.  Yeah, it would.  Or at least, it might.  If the error
>> message cites the text of the line it chokes on, maybe that's not
>> a problem.
>> 
>> Running sysctl once passing it a list of files would fix that,
>> but would probably be more complexity than it's worth.  I just
>> always try to find ways to reduce rc processing time on wimpy
>> platforms, so these wild ideas pop into my head.
>> 
>> -- Ian
>> 
>> On Wed, 2012-12-19 at 07:52 -0800, Alfred Perlstein wrote:
>>> Wouldn't this obfuscate any errors in files?
>>> 
>>> Sent from my iPhone
>>> 
>>> On Dec 19, 2012, at 7:37 AM, Ian Lepore
>>> <freebsd at damnhippie.dyndns.org> wrote:
>>> 
>>>> On Wed, 2012-12-19 at 19:02 +0400, Andrey Zonov wrote:
>>>>> On 12/14/12 3:32 AM, Xin LI wrote:
>>>>>> Author: delphij Date: Thu Dec 13 23:32:47 2012 New
>>>>>> Revision: 244198 URL:
>>>>>> http://svnweb.freebsd.org/changeset/base/244198
>>>>>> 
>>>>>> Log: Teach sysctl(8) about parsing a file (while I'm
>>>>>> there also give it capability of parsing both = and :
>>>>>> formats).
>>>>>> 
>>>>>> Submitted by:    hrs (initial version, bugs are mine) MFC
>>>>>> after:    3 months
>>>>>> 
>>>>>> Modified: head/etc/rc.d/sysctl head/sbin/sysctl/sysctl.8 
>>>>>> head/sbin/sysctl/sysctl.c
>>>>>> 
>>>>>> Modified: head/etc/rc.d/sysctl 
>>>>>> ==============================================================================
>>>>>>
>>>>>> 
- --- head/etc/rc.d/sysctl    Thu Dec 13 23:19:13 2012    (r244197)
>>>>>> +++ head/etc/rc.d/sysctl    Thu Dec 13 23:32:47 2012
>>>>>> (r244198) @@ -8,51 +8,27 @@ . /etc/rc.subr
>>>>>> 
>>>>>> name="sysctl" +command="/sbin/sysctl" stop_cmd=":" 
>>>>>> start_cmd="sysctl_start" reload_cmd="sysctl_start" 
>>>>>> lastload_cmd="sysctl_start last" extra_commands="reload
>>>>>> lastload"
>>>>>> 
>>>>>> -# -# Read in a file containing sysctl settings and set
>>>>>> things accordingly. -# -parse_file() -{ -    if [ -f $1
>>>>>> ]; then -        while read var comments -        do -
>>>>>> case ${var} in -            \#*|'') -                ;; -
>>>>>> *) -                mib=${var%=*} -
>>>>>> val=${var#*=} - -                if
>>>>>> current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then -
>>>>>> case ${current_value} in -                    ${val}) -
>>>>>> ;; -                    *) -                        if !
>>>>>> sysctl "${var}" >/dev/null 2>&1; then -
>>>>>> warn "unable to set ${var}" -                        fi -
>>>>>> ;; -                    esac -                elif [ "$2"
>>>>>> = "last" ]; then -                    warn "sysctl ${mib}
>>>>>> does not exist." -                fi -                ;; 
>>>>>> -            esac -        done < $1 -    fi -} - 
>>>>>> sysctl_start() { - -    parse_file /etc/sysctl.conf $1 -
>>>>>> parse_file /etc/sysctl.conf.local $1 +    case $1 in +
>>>>>> last) +        command_args="-i -f" +    ;; +    *) +
>>>>>> command_args="-f" +    ;; +    esac + +    for _f in
>>>>>> /etc/sysctl.conf /etc/sysctl.conf.local; do +        [ -r
>>>>>> ${_f} ] && ${command} ${command_args} ${_f} > /dev/null +
>>>>>> done }
>>>>>> 
>>>>>> load_rc_config $name
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I'd really like to see something like the patch bellow in
>>>>> the tree.  I found it very useful with cfengine
>>>>> configuration (as like as cron.d).
>>>>> 
>>>>> What do think?
>>>>> 
>>>>> diff --git a/etc/rc.d/sysctl b/etc/rc.d/sysctl index
>>>>> 36f1414..014e4c5 100755 --- a/etc/rc.d/sysctl +++
>>>>> b/etc/rc.d/sysctl @@ -26,7 +26,7 @@ sysctl_start() ;; esac
>>>>> 
>>>>> -       for _f in /etc/sysctl.conf /etc/sysctl.conf.local;
>>>>> do +       for _f in `ls /etc/sysctl.d/* 2> /dev/null`
>>>>> /etc/sysctl.conf /etc/sysctl.conf.local; do [ -r ${_f} ] &&
>>>>> ${command} ${command_args} ${_f} > /dev/null done }
>>>> 
>>>> Instead of running sysctl a bunch of times, how about
>>>> something conceptually similar to
>>>> 
>>>> cat /etc/sysctl.d/* /etc/sysctl.conf | sysctl -f -
>>>> 
>>>> Along with this (untested) patch to make sysctl understand
>>>> "-f -".
>>>> 
>>>> Hmmm, is /dev/stdin available as early as sysctl.conf runs?
>>>> If not, the attached patch isn't going to work.
>>>> 
>>>> -- Ian
>>>> 
>>>> diff -r cc5bd6d80aa1 sbin/sysctl/sysctl.c ---
>>>> sbin/sysctl/sysctl.c    Sun Aug 19 11:01:08 2012 -0600 +++
>>>> sbin/sysctl/sysctl.c    Wed Dec 19 08:31:14 2012 -0700 @@
>>>> -112,7 +112,10 @@ main(int argc, char **argv) eflag = 1;
>>>> break; case 'f': - conffile = optarg; +     if
>>>> (strcmp(optarg, "-") == 0) +     conffile = "/dev/stdin"; +
>>>> else +     conffile = optarg; break; case 'h': hflag = 1;
>>> _______________________________________________ 
>>> svn-src-all at freebsd.org mailing list 
>>> http://lists.freebsd.org/mailman/listinfo/svn-src-all To
>>> unsubscribe, send any mail to
>>> "svn-src-all-unsubscribe at freebsd.org"
>> 
>> 


- -- 
Xin LI <delphij at delphij.net>    https://www.delphij.net/
FreeBSD - The Power to Serve!           Live free or die
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJQ0hKKAAoJEG80Jeu8UPuzBGUIAMZHbBqBtWCKeAd1+q8rSGqp
5BkFrKAHHgFbYEA2N9KwMZLqv9iQuBCpdXclUrhivT29A+FtdpUDgDO/LmDPsU71
Xj3hr+VpS47YCeW0jZqbJqpr8QiYdpduJ/MuaykI8QHo8+OPsjupzaQhclKrqcD1
1hVVUnolKXw5X2tIVjDBSpM7NYjtGCk0N3Xca49CJOZ+2aPv8oNHImasxQejT2t5
34OThhWSP+Ir4GNbsPVt/K+qtGiKY8Ugwm3O4M4ssS7hys/orkCFUhBd94Ty7XDD
8nxcbHA5uX5fVkxJ9aKo6VEfeyjP+Dw3CnKdSgoNVDKlAagr+hsHK6B7m0Lgk7s=
=F93W
-----END PGP SIGNATURE-----


More information about the svn-src-head mailing list