summaryrefslogtreecommitdiffstats
path: root/extras/ganesha/scripts/dbus-send.sh
diff options
context:
space:
mode:
Diffstat (limited to 'extras/ganesha/scripts/dbus-send.sh')
-rwxr-xr-xextras/ganesha/scripts/dbus-send.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh
new file mode 100755
index 00000000000..406162f0747
--- /dev/null
+++ b/extras/ganesha/scripts/dbus-send.sh
@@ -0,0 +1,74 @@
+#/bin/bash
+
+declare -i EXPORT_ID
+GANESHA_DIR=$1
+OPTION=$1
+VOL=$2
+
+function check_cmd_status()
+{
+ if [ "$1" != "0" ]
+ then
+ rm -rf $GANESHA_DIR/exports/export.$VOL.conf
+ exit 1
+ fi
+}
+
+#This function keeps track of export IDs and increments it with every new entry
+function dynamic_export_add()
+{
+ count=`ls -l $GANESHA_DIR/exports/*.conf | wc -l`
+ if [ "$count" = "1" ] ;
+ then
+ EXPORT_ID=2
+ else
+ #if [ -s /var/lib/ganesha/export_removed ];
+ # then
+ # EXPORT_ID=`head -1 /var/lib/ganesha/export_removed`
+ # sed -i -e "1d" /var/lib/ganesha/export_removed
+ # else
+
+ EXPORT_ID=`cat $GANESHA_DIR/.export_added`
+ check_cmd_status `echo $?`
+ EXPORT_ID=EXPORT_ID+1
+ #fi
+ fi
+ echo $EXPORT_ID > $GANESHA_DIR/.export_added
+ check_cmd_status `echo $?`
+ sed -i s/Export_Id.*/"Export_Id= $EXPORT_ID ;"/ \
+$GANESHA_DIR/exports/export.$VOL.conf
+ check_cmd_status `echo $?`
+ dbus-send --print-reply --system \
+--dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+org.ganesha.nfsd.exportmgr.AddExport string:$GANESHA_DIR/exports/export.$VOL.conf \
+string:"EXPORT(Path=/$VOL)"
+
+}
+
+#This function removes an export dynamically(uses the export_id of the export)
+function dynamic_export_remove()
+{
+ removed_id=`cat $GANESHA_DIR/exports/export.$VOL.conf |\
+grep Export_Id | cut -d " " -f3`
+ echo $removed_id
+ check_cmd_status `echo $?`
+ dbus-send --print-reply --system \
+--dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id
+ check_cmd_status `echo $?`
+ rm -rf $GANESHA_DIR/exports/export.$VOL.conf
+
+}
+
+if [ "$OPTION" = "on" ];
+then
+ dynamic_export_add $@
+ check_cmd_status `echo $?`
+fi
+
+if [ "$OPTION" = "off" ];
+then
+ dynamic_export_remove $@
+ check_cmd_status `echo $?`
+fi
+