# Linux ipsec(8) completion (for FreeS/WAN and strongSwan) -*- shell-script -*- # Complete ipsec.conf conn entries. # # Reads a file from stdin in the ipsec.conf(5) format. proc _ipsec_connections { local keyword name while read -r keyword name { if [[ $keyword == [#]* ]] { continue; } [[ $keyword == conn && $name != '%default' ]] && setvar COMPREPLY = ''( "$name" ) } setvar COMPREPLY = ''( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) } proc _ipsec_freeswan { local cur prev words cword _init_completion || return if [[ $cword -eq 1 ]] { setvar COMPREPLY = ''( $( compgen -W 'auto barf eroute klipsdebug look manual pluto ranbits rsasigkey setup showdefaults showhostkey spi spigrp tncfg whack' -- "$cur" ) ) return 0 } case{ auto { setvar COMPREPLY = ''( $( compgen -W '--asynchronous --up --add --delete --replace --down --route --unroute --ready --status --rereadsecrets' -- "$cur" ) ) } manual { setvar COMPREPLY = ''( $( compgen -W '--up --down --route --unroute --union' \ -- "$cur" ) ) } ranbits { setvar COMPREPLY = ''( $( compgen -W '--quick --continuous --bytes' \ -- "$cur" ) ) } setup { setvar COMPREPLY = ''( $( compgen -W '--start --stop --restart' -- "$cur" ) ) } * { } } return 0 } proc _ipsec_strongswan { local cur prev words cword _init_completion || return if [[ $cword -eq 1 ]] { setvar COMPREPLY = ''( $( compgen -W 'down irdumm leases listaacerts listacerts listalgs listall listcacerts listcainfos listcards listcerts listcrls listgroups listocsp listocspcerts listpubkeys openac pki pluto pool purgecerts purgecrls purgeike purgeocsp ready reload rereadaacerts rereadacerts rereadall rereadcacerts rereadcrls rereadgroups rereadocspcerts rereadsecrets restart route scdecrypt scencrypt scepclient secrets start starter status statusall stop stroke unroute uci up update version whack --confdir --copyright --directory --help --version --versioncode' -- "$cur" ) ) return 0 } case{ down|route|status|statusall|unroute|up { local confdir=$( ipsec --confdir ) _ipsec_connections < "$confdir/ipsec.conf" } list* { setvar COMPREPLY = ''( $( compgen -W '--utc' -- "$cur" ) ) } restart|start { setvar COMPREPLY = ''( $( compgen -W '--attach-gdb --auto-update --debug --debug-all --debug-more --nofork' -- "$cur" ) ) } pki { setvar COMPREPLY = ''( $( compgen -W '--gen --issue --keyid --print --pub --req --self --signcrl --verify' -- "$cur" ) ) } pool { } irdumm { _filedir 'rb' } * { } } return 0 } case{ *strongSwan* { complete -F _ipsec_strongswan ipsec } * { complete -F _ipsec_freeswan ipsec } } # ex: ts=4 sw=4 et filetype=sh