mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
96 lines
2.5 KiB
Bash
96 lines
2.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
|
#
|
|
# Permission to use, copy, modify, and/or distribute this software for any
|
|
# purpose with or without fee is hereby granted, provided that the above
|
|
# copyright notice and this permission notice appear in all copies.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
#
|
|
|
|
ECM_MODULE=${1:-ecm_state}
|
|
MOUNT_ROOT=/dev/ecm
|
|
|
|
#
|
|
# usage: ecm_dump.sh [module=ecm_db]
|
|
#
|
|
# with no parameters, ecm_dump.sh will attempt to mount the
|
|
# ecm_db state file and cat its contents.
|
|
#
|
|
# example with a parameter: ecm_dump.sh ecm_classifier_default
|
|
#
|
|
# this will cause ecm_dump to attempt to find and mount the state
|
|
# file for the ecm_classifier_default module, and if successful
|
|
# cat the contents.
|
|
#
|
|
|
|
# this is one of the state files, which happens to be the
|
|
# last module started in ecm
|
|
ECM_STATE=/sys/kernel/debug/ecm/ecm_state/state_dev_major
|
|
|
|
# tests to see if ECM is up and ready to receive commands.
|
|
# returns 0 if ECM is fully up and ready, else 1
|
|
ecm_is_ready() {
|
|
if [ ! -e "${ECM_STATE}" ]
|
|
then
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# module_state_mount(module_name)
|
|
# Mounts the state file of the module, if supported
|
|
#
|
|
module_state_mount() {
|
|
local module_name=$1
|
|
local mount_dir=$2
|
|
local state_file="/sys/kernel/debug/ecm/${module_name}/state_dev_major"
|
|
|
|
if [ -e "${mount_dir}/${module_name}" ]
|
|
then
|
|
# already mounted
|
|
return 0
|
|
fi
|
|
|
|
#echo "Mount state file for $module_name ..."
|
|
if [ ! -e "$state_file" ]
|
|
then
|
|
#echo "... $module_name does not support state"
|
|
return 1
|
|
fi
|
|
|
|
local major="`cat $state_file`"
|
|
#echo "... Mounting state $state_file with major: $major"
|
|
mknod "${mount_dir}/${module_name}" c $major 0
|
|
}
|
|
|
|
#
|
|
# main
|
|
#
|
|
ecm_is_ready || {
|
|
#echo "ECM is not running"
|
|
exit 1
|
|
}
|
|
|
|
# all state files are mounted under MOUNT_ROOT, so make sure it exists
|
|
mkdir -p ${MOUNT_ROOT}
|
|
|
|
#
|
|
# attempt to mount state files for the requested module and cat it
|
|
# if the mount succeeded
|
|
#
|
|
module_state_mount ${ECM_MODULE} ${MOUNT_ROOT} && {
|
|
cat ${MOUNT_ROOT}/${ECM_MODULE}
|
|
exit 0
|
|
}
|
|
|
|
exit 2
|