e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#!/bin/ksh
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# This file and its contents are supplied under the terms of the
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# You may only use this file in accordance with the terms of version
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# 1.0 of the CDDL.
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# A full copy of the text of the CDDL should have accompanied this
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# source. A copy of the CDDL is also available via the Internet at
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# http://www.illumos.org/license/CDDL.
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Copyright (c) 2014, Joyent, Inc.
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiai_arg0="$(basename $0)"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiai_stub="teststub$$"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiai_vnic="testvnic$$"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction fatal
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi typeset msg="$*"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi [[ -z "$msg" ]] && msg="failed"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi echo "TEST_FAIL: $vt_arg0: $msg" >&2
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi exit 1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction setup
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi dladm create-etherstub $ai_stub || fatal "failed to create etherstub"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi dladm create-vnic -l $ai_stub $ai_vnic || fatal "failed to create vnic"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction cleanup
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi dladm delete-vnic $ai_vnic || fatal "failed to remove vnic"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi dladm delete-etherstub $ai_stub || fatal "failed to remove etherstub"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction runtest
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi dladm set-linkprop -p allowed-ips="$@" $ai_vnic 2>/dev/null
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction epass
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi runtest $* || fatal "allowed-ips=$* failed, expected success\n"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction efail
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi runtest $* && fatal "allowed-ips=$* succeeded, expected failure\n"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Run through all IPv6 prefixes for validity with a token prefix
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction allv6
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi typeset i;
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi for ((i = 1; i <= 128; i++)); do
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi epass "8000::/$i"
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi done
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Run through all of the v6 prefixes except /128 and ensure that they fail for
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# a given IPv6 address because the other bits are set.
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi#
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchifunction v6specific
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi{
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi typeset i;
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi for ((i = 0; i < 128; i++)); do
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi efail 2600:3c00::f03c:91ff:fe96:a267/$i
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi done
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi}
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchisetup
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Basic IPv4 single and multiple IPs
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 0.0.0.0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 127.0.0.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 127.0.0.1,127.0.0.2
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 127.0.0.1,127.0.0.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.167.169.23
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 11.167.169.23
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 12.167.169.23
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.167.169.23,11.167.169.23,12.167.169.23
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 256.1.1.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 1.256.1.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 1.1.256.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 1.1.1.256
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 300.300.300.300
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 300.300.300.300,1.1.1.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 1.1.1.1,300.300.300.300
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 3.-3.3.-3
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Basic IPv4 prefixes
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 0.0.0.0/0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 127.0.0.0/8
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 127.0.0.1/8
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/2
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/3
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/4
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/5
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/6
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/7
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/8
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/9
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/10
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/11
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/12
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/13
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/14
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/15
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/16
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/17
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/18
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/19
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/20
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/21
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/22
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/23
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/24
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/25
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/26
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/27
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/28
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/29
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/21
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.0/32
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/2
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/4
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/8
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/10
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/12
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/14
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/16
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/18
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/20
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/22
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/24
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/28
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 128.0.0.1/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 128.0.0.1/32
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.0/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.4/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.8/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.12/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.16/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.0.0.20/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.1/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.5/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.9/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.13/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.17/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.0.0.21/30
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.99.99.0/24,10.88.88.0/24,10.77.7.0/24
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 10.99.99.7/32,10.168.0.0/16
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.99.99.7/33
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.99.99.7/-1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.99.99.7/
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 10.99.99.7/0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# Basic IPv6 Addresss
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail dead:beef::gg
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass ::1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass ::127.0.0.1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass ::10.0.0.0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::0.0.0.0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::ffff:0.0.0.0
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass ::ffff:10.123.167.169
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 2600:3c00::f03c:91ff:fe96:a264
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi# IPv6 Prefixes
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::/128
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/129
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/-1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/-
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::1/1
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail ::1/20
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiallv6
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiv6specific
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 2600:3c00::f03c:91ff:fe96:a264/128
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass 2600:3c00::/64
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail fe80::8:20ff:fead:3361/10
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiefail fe80::1/10
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass fe80::/15
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiepass fe82::/15
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchi
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchicleanup
e03914f9208eb53e6c8a6d5a436953ad983642b0Robert Mustacchiprintf "TEST PASS: $ai_arg0"