• Eric W. Biederman's avatar
    sysctl: Reduce sys_sysctl to a compatibility wrapper around /proc/sys · 26a7034b
    Eric W. Biederman authored
    To simply maintenance and to be able to remove all of the binary
    sysctl support from various subsystems I have rewritten the binary
    sysctl code as a compatibility wrapper around proc/sys.
    
    The code is built around a hard coded table based on the table
    in sysctl_check.c that lists all of our current binary sysctls
    and provides enough information to convert from the sysctl
    binary input into into ascii and back again.  New in this
    patch is the realization that the only dynamic entries
    that need to be handled have ifname as the asscii string
    and ifindex as their ctl_name.
    
    When a sys_sysctl is called the code now looks in the
    translation table converting the binary name to the
    path under /proc where the value is to be found.  Opens
    that file, and calls into a format conversion wrapper
    that calls fop->read and then fop->write as appropriate.
    
    Since in practice the practically no one uses or tests
    sys_sysctl rewritting the code to be beautiful is a little
    silly.  The redeeming merit of this work is it allows us to
    rip out all of the binary sysctl syscall support from
    everywhere else in the tree.  Allowing us to remove
    a lot of dead (after this patch) and barely maintained code.
    
    In addition it becomes much easier to optimize the sysctl
    implementation for being the backing store of /proc/sys,
    without having to worry about sys_sysctl.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    26a7034b
sysctl_binary.c 51.2 KB