4f259cd569
When dahdi.ko is unloaded, it may be possible for the driver to be removed from the kernel before the udev scripts are run. When this happens, you'll see messages like the following which are not accurate: 'dahdi_handle_device'[24567]: Old driver (no auto_assign_spans parameter). Skip /devices/pci0000:00/0000:00:1e.0/0000:11:01.0/pci:0000:11:01.0 Now instead you will see: 'dahdi_handle_device'[28008]: remove: /devices/pci0000:00/0000:00:1e.0/0000:11:01.0/pci:0000:11:01.0 Also, all the udev events will be logged in the system log even when they are ignored because of legacy auto span assignment. This will help show what is going on during the transition period to full udev configuration of spans. Signed-off-by: Shaun Ruffell <sruffell@digium.com> Acked-by: Oron Peled <oron.peled@xorcom.com>
84 lines
2.0 KiB
Bash
Executable File
84 lines
2.0 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# /usr/share/dahdi/dahdi_handle_device
|
|
#
|
|
# Called by UDEV when a dahdi device is added/removed
|
|
#
|
|
|
|
me=`basename $0`
|
|
dir=`dirname $0`
|
|
LOGGER="logger -i -t '$me'"
|
|
NAME=`basename "$DEVPATH" | tr -c 'A-Za-z0-9-' '_'`
|
|
|
|
# Always redirect stderr somewhere, otherwise the shell script will die
|
|
# when it tries to do I/O related stuff on closed file descriptor.
|
|
# Our default is to throw it down the bit-bucket.
|
|
exec 2> /dev/null
|
|
# If you wish to trace this script:
|
|
#exec 2> "/tmp/${me}.$NAME" 1>&2
|
|
#exec 2> /dev/console
|
|
|
|
# Our directory in the beginning, so we can use local lab setup
|
|
PATH="$dir:/usr/sbin:/sbin:/usr/bin:/bin"
|
|
|
|
set -e
|
|
|
|
#echo >&2 "$0($ACTION): DEBUG($# args): '$*'"
|
|
|
|
# Do we have a configuration?
|
|
if [ -f /etc/dahdi/init.conf ]; then
|
|
. /etc/dahdi/init.conf
|
|
fi
|
|
|
|
if [ "$DAHDI_UDEV_DISABLE_DEVICES" = 'yes' ]; then
|
|
echo "DAHDI_UDEV_DISABLE_DEVICES=yes. Skip $DEVPATH" | $LOGGER
|
|
exit 0
|
|
fi
|
|
|
|
# Can we pass a different value so we can use
|
|
# alternate (testing) configuration?
|
|
# Meanwhile, make it hard-coded.
|
|
DAHDICONFDIR='/etc/dahdi'
|
|
export DAHDICONFDIR
|
|
|
|
case "$ACTION" in
|
|
add)
|
|
echo "$ACTION: $DEVPATH" | $LOGGER
|
|
|
|
# Check if we can safely do our job
|
|
if [ ! -f /sys/module/dahdi/parameters/auto_assign_spans ]; then
|
|
if [ -f /sys/module/dahdi ]; then
|
|
$LOGGER "Old driver (no auto_assign_spans parameter). Skip $DEVPATH"
|
|
exit 0
|
|
fi
|
|
fi
|
|
if [ `cat /sys/module/dahdi/parameters/auto_assign_spans` -eq 1 ]; then
|
|
echo "auto_assign_spans=1. Skip $DEVPATH" | $LOGGER
|
|
exit 0
|
|
fi
|
|
|
|
# Can have alternate dahdi configuration directory for debugging
|
|
# export DAHDICONFDIR="/tmp/xortel/dahdi"
|
|
|
|
# Don't block udev for too long
|
|
(
|
|
if [ -r "$DAHDICONFDIR/span-types.conf" ]; then
|
|
dahdi_span_types set "/sys$DEVPATH"
|
|
fi
|
|
if [ -r "$DAHDICONFDIR/assigned-spans.conf" ]; then
|
|
dahdi_span_assignments add "/sys$DEVPATH"
|
|
else
|
|
# No configuration. No order guaranteed
|
|
dahdi_span_assignments auto
|
|
fi
|
|
) 2>&1 < /dev/null | $LOGGER &
|
|
;;
|
|
remove)
|
|
# Nothing to do yet...
|
|
echo "$ACTION: $DEVPATH" | $LOGGER
|
|
;;
|
|
*)
|
|
echo "UNHANDLED: $ACTION: $DEVPATH" | $LOGGER
|
|
;;
|
|
esac
|