

xrc:mod:lib ip  cidr/ls

# https://www.ietf.org/rfc/rfc3330.txt

___x_cmd_ip_cidr(){
    [ $# -gt 0 ]     || set -- ls

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m ip cidr    "$@"; return 0 ;;

        ls|info)        ___x_cmd_ip_cidr_"$op"      "$@" ;;

        # --csv|--app)    ___x_cmd_ip_cidr_ls "$@" ;;
        *)              ___x_cmd_ip_cidr_info "$op" "$@" ;;
    esac
}


# address ...
# 192.168.1.1/30
# x ip cidr 192.168.1.1 255.255.255.0
___x_cmd_ip_cidr_info(){
    [ $# -gt 0 ] || set -- --help

    case "$1" in
        -h|--help)      ___x_cmd help -m ip cidr info "$@"; return 0 ;;
    esac

    ___x_cmd ip info "$1"

    local no=32

    local x_
    if [ $# -gt 1 ]; then
        ___x_cmd_ip_maskop_ "$@"
        if ___x_cmd is int "$2"; then
            no="$2"
        else
            ___x_cmd_ip_mask2no_ "$2"
            no="$x_"
        fi
    else
        case "$1" in
            */*)    no="${1#*/}"
                    ___x_cmd_ip_maskop_ "${1%%/*}" "$no" ;;
            *)      N=ip M="Require network mask like 255.255.255.0 or 12" log:ret:64
        esac
    fi

    printf "net:\t%s\n" "$x_"
    printf "device:\t%s\n" "$(( 2 ** (32-no) ))"
}

# x1_ x2_
___x_cmd_ip_cidr_parse_(){
    :
}
