#!/usr/bin/openrc-run # Copyright (C) 2018 Márcio Silva # Released under the 2-clause BSD license description="MACsec (IEEE 802.1AE) interface" depend() { need net.$IFSRC sysfs localmount after modules bootmisc net.lo net.lo0 dbus keyword -jail -prefix -vserver provide net } start() { ebegin "Add $IFDST MACsec (IEEE 802.1AE) from $IFSRC interface" case $RC_UNAME in GNU/Linux|Linux) ip -d link add link $IFSRC name $IFDST type macsec $IFPAR && \ ip -d link set $IFDST $IFCTD up if [[ $IFRSC ]]; then for mac_rxsc in ${IFRSC[@]}; do ip macsec add $IFDST rx ${mac_rxsc/_/ } done fi if [[ $IFTSC ]]; then for mac_txsc in ${IFTSC[@]}; do ip macsec add $IFDST tx ${mac_txsc/_/ } done fi eend $? ;; *) eerror "The $RC_UNAME doesn't support MACsec (IEEE 802.1AE) interface" eend 1 ;; esac } stop() { ebegin "Delete $IFDST MACsec (IEEE 802.1AE) interface" case $RC_UNAME in GNU/Linux|Linux) ip -d link set $IFDST down ip -d link delete $IFDST ;; esac eend $? }