diff -ruN security/strongswan.orig/Makefile security/strongswan/Makefile --- security/strongswan.orig/Makefile 2018-10-02 07:00:10.000000000 -0400 +++ security/strongswan/Makefile 2018-12-18 10:15:54.109091000 -0500 @@ -3,6 +3,7 @@ PORTNAME= strongswan PORTVERSION= 5.7.1 +PORTREVISION= 1 CATEGORIES= security MASTER_SITES= http://download.strongswan.org/ \ http://download2.strongswan.org/ diff -ruN security/strongswan.orig/files/strongswan.in security/strongswan/files/strongswan.in --- security/strongswan.orig/files/strongswan.in 2018-10-02 06:58:37.000000000 -0400 +++ security/strongswan/files/strongswan.in 2019-01-09 01:00:30.006605000 -0500 @@ -7,24 +7,37 @@ # BEFORE: LOGIN # KEYWORD: shutdown +# strongswan_enable (bool): Set it to "YES" to enable strongswan +# Default is "NO" +# strongswan_swanctl_loader (bool): Set it to "YES" to use swanctl util and conf +# Default is "NO" +# + . /etc/rc.subr name=strongswan +desc="Strongswan IPsec startup script" rcvar=strongswan_enable -extra_commands="reload statusall" - load_rc_config $name -command="%%PREFIX%%/sbin/ipsec" +: ${strongswan_enable:=NO} +: ${strongswan_swanctl_loader=NO} + +command=%%PREFIX%%/sbin/ipsec +_swanctl_program=%%PREFIX%%/sbin/swanctl +_charon_pidfile=/var/run/charon.pid + +extra_commands="reload statusall" -start_precmd="strongswan_precmd" -stop_cmd="strongswan_cmd" -status_cmd="strongswan_cmd" -reload_cmd="strongswan_cmd" -statusall_cmd="strongswan_cmd" +start_precmd=strongswan_start_precmd +start_cmd=strongswan_start +stop_cmd=strongswan_cmd +status_cmd=strongswan_status +reload_cmd=strongswan_reload +statusall_cmd=strongswan_statusall -strongswan_precmd() +strongswan_start_precmd() { command_args=${rc_arg} } @@ -34,4 +47,50 @@ ${command} ${rc_arg} } +strongswan_start() +{ + local _waitcnt=0 + local _waitmax=5 + + strongswan_cmd + if checkyesno strongswan_swanctl_loader; then + while [ ! -f ${_charon_pidfile} -a \ + ${_waitcnt} -lt ${_waitmax} ]; do + sleep 1 + _waitcnt=$((_waitcnt+1)) + done + ${_swanctl_program} --load-all --noprompt + fi +} + +strongswan_status() +{ + if checkyesno strongswan_swanctl_loader; then + ${_swanctl_program} --stats + else + strongswan_cmd + fi +} + +strongswan_reload() +{ + if checkyesno strongswan_swanctl_loader; then + ${_swanctl_program} --reload-settings + ${_swanctl_program} --load-all --noprompt + else + strongswan_cmd + fi +} + +strongswan_statusall() +{ + if checkyesno strongswan_swanctl_loader; then + ${_swanctl_program} --stats + ${_swanctl_program} --list-conns + ${_swanctl_program} --list-sas + else + strongswan_cmd + fi +} + run_rc_command "$1"