span_types: Fix bug that would prevent matching on devpath.
authorShaun Ruffell <sruffell@digium.com>
Tue, 26 Nov 2013 02:21:14 +0000 (20:21 -0600)
committerShaun Ruffell <sruffell@digium.com>
Mon, 25 Nov 2013 22:11:37 +0000 (16:11 -0600)
If a configuration file was specified that used the devpath, like:

  # Device: [] @Board_ID_Switch_0 /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/pci:0000:02:08.0
  /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/pci:0000:02:08.0 1:E1
  /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/pci:0000:02:08.0 2:E1
  /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/pci:0000:02:08.0 3:E1
  /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:08.0/pci:0000:02:08.0 4:E1

Then the span_types script would silently fail to match the configuration lines
for the device and silently fail to change the linemodes.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Oron Peled <oron.peled@xorcom.com>

span_types

index 474c74c..774b341 100755 (executable)
@@ -188,6 +188,7 @@ filter_conf() {
 conf_spans() {
        hardware_id="$1"
        location="$2"
+       devpath="$3"
        filter_conf | (
                # Collect device spans
                # in a subshell, so $SPANS is not lost
@@ -206,6 +207,12 @@ conf_spans() {
                                SPANS="$SPANS $spans"
                                ;;
                        esac
+                       case "$devpath" in
+                       $id)
+                               #echo >&2 "match([$id]): $spans"
+                               SPANS="$SPANS $spans"
+                               ;;
+                       esac
                done
                echo "$SPANS"
        )
@@ -217,7 +224,7 @@ device_set_spantype() {
        devpath=`cd "$device" && pwd -P`
        location='@'`attr_clean "$device/location"`
        hardware_id=`attr_clean "$device/hardware_id"`
-       spanspecs=`conf_spans "$hardware_id" "$location"`
+       spanspecs=`conf_spans "$hardware_id" "$location" "$devpath"`
        #echo >&2 "MATCHED($device): $spanspecs"
        cut -d: -f1 "$attr_file" | while read spanno; do
                        for sp in $spanspecs