#!/bin/bash

# alias
nfsrpcinfo() {
    local r=$@
    [ -n "$r" ] && r=|$r
    { rpcinfo -s 2>/dev/null || rpcinfo -p; } | egrep -w "nfs|mountd${r// /|}"
}

#compat service
#===============================================================================
_service_rpcbind() {
    if [ -f /etc/init.d/portmap ]; then
        service portmap $1
    else
        service rpcbind $1
    fi
}
_service_portmap() { service_rpcbind "$@"; }

_service_nfs() {
    local sname=${FUNCNAME#_service_}
    local rc=0

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_nfsconfig() {
    local sname=nfs-config
    local rc=0
    if [ -f /usr/lib/systemd/system/nfs-config.service ]; then
        service $sname $1
    else
        :
    fi
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_nfslock() {
    local sname=${FUNCNAME#_service_}
    local rc=0
    [ -f /usr/lib/systemd/system/rpc-statd.service ] && sname=rpc-statd

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_rpcgssd() {
    local sname=${FUNCNAME#_service_}
    local rc=0
    [ -f /usr/lib/systemd/system/rpc-gssd.service ] && sname=rpc-gssd

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_rpcsvcgssd() {
    local sname=${FUNCNAME#_service_}
    local rc=0
    [ -f /usr/lib/systemd/system/rpc-svcgssd.service ] && sname=rpc-svcgssd

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_rpcidmapd() {
    local sname=${FUNCNAME#_service_}
    local rc=0
    [ -f /usr/lib/systemd/system/nfs-idmapd.service ] && sname=nfs-idmapd

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_autofs() {
    local sname=${FUNCNAME#_service_}
    local rc=0

    service $sname $1
    rc=$?
    [ $rc != 0 ] && [ -x /usr/bin/journalctl ] && { echo "---> journalctl -xn"; journalctl -xn; }
    return $rc
}

_service_iptables() {
    if [ -f /etc/init.d/iptables ]; then
        service iptables $1
    else
        service firewalld $1
    fi
}
_service_ip6tables() {
    if [ -f /etc/init.d/ip6tables ]; then
        service ip6tables $1
    else
        service firewalld $1
    fi
}

P=${0##*/}
_$P "$@"
