[Bash-completion-devel] [PATCH 3/3] ipsec: Complete connection names for 'up', 'down' and other commands.

Tobias Brunner tobias at strongswan.org
Thu Aug 4 15:48:36 UTC 2011


---
 completions/ipsec |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/completions/ipsec b/completions/ipsec
index 2f66da7..dd75796 100644
--- a/completions/ipsec
+++ b/completions/ipsec
@@ -2,6 +2,20 @@
 #
 have ipsec || return
 
+# Complete ipsec.conf conn entries.
+#
+# Reads a file from stdin in the ipsec.conf(5) format.
+_ipsec_connections()
+{
+    COMPREPLY=()
+    local keyword name
+    while read -r keyword name; do
+        if [[ $keyword = [#]* ]]; then continue; fi
+        [[ $keyword = 'conn' && $name != '%default' ]] && COMPREPLY+=("$name")
+    done
+    COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) )
+}
+
 _ipsec_freeswan()
 {
     local cur prev words cword
@@ -58,6 +72,10 @@ _ipsec_strongswan()
     fi
 
     case ${words[1]} in
+        down|route|status|statusall|unroute|up)
+            local confdir=$( ipsec --confdir )
+            _ipsec_connections < "$confdir/ipsec.conf"
+            ;;
         list*)
             COMPREPLY=( $( compgen -W '--utc' -- "$cur" ) )
             ;;
-- 
1.7.4.1




More information about the Bash-completion-devel mailing list