xref: /titanic_41/usr/src/test/util-tests/tests/dladm/allowed-ips.ksh (revision f94098a9c7a9cee33e29ec877a160392bbc010f9)
1*f94098a9SRobert Mustacchi#!/bin/ksh
2*f94098a9SRobert Mustacchi#
3*f94098a9SRobert Mustacchi# This file and its contents are supplied under the terms of the
4*f94098a9SRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
5*f94098a9SRobert Mustacchi# You may only use this file in accordance with the terms of version
6*f94098a9SRobert Mustacchi# 1.0 of the CDDL.
7*f94098a9SRobert Mustacchi#
8*f94098a9SRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this
9*f94098a9SRobert Mustacchi# source.  A copy of the CDDL is also available via the Internet at
10*f94098a9SRobert Mustacchi# http://www.illumos.org/license/CDDL.
11*f94098a9SRobert Mustacchi#
12*f94098a9SRobert Mustacchi
13*f94098a9SRobert Mustacchi#
14*f94098a9SRobert Mustacchi# Copyright (c) 2014, Joyent, Inc.
15*f94098a9SRobert Mustacchi#
16*f94098a9SRobert Mustacchi
17*f94098a9SRobert Mustacchiai_arg0="$(basename $0)"
18*f94098a9SRobert Mustacchiai_stub="teststub$$"
19*f94098a9SRobert Mustacchiai_vnic="testvnic$$"
20*f94098a9SRobert Mustacchi
21*f94098a9SRobert Mustacchifunction fatal
22*f94098a9SRobert Mustacchi{
23*f94098a9SRobert Mustacchi	typeset msg="$*"
24*f94098a9SRobert Mustacchi	[[ -z "$msg" ]] && msg="failed"
25*f94098a9SRobert Mustacchi	echo "TEST_FAIL: $vt_arg0: $msg" >&2
26*f94098a9SRobert Mustacchi	exit 1
27*f94098a9SRobert Mustacchi}
28*f94098a9SRobert Mustacchi
29*f94098a9SRobert Mustacchifunction setup
30*f94098a9SRobert Mustacchi{
31*f94098a9SRobert Mustacchi	dladm create-etherstub $ai_stub || fatal "failed to create etherstub"
32*f94098a9SRobert Mustacchi	dladm create-vnic -l $ai_stub $ai_vnic || fatal "failed to create vnic"
33*f94098a9SRobert Mustacchi}
34*f94098a9SRobert Mustacchi
35*f94098a9SRobert Mustacchifunction cleanup
36*f94098a9SRobert Mustacchi{
37*f94098a9SRobert Mustacchi	dladm delete-vnic $ai_vnic || fatal "failed to remove vnic"
38*f94098a9SRobert Mustacchi	dladm delete-etherstub $ai_stub || fatal "failed to remove etherstub"
39*f94098a9SRobert Mustacchi}
40*f94098a9SRobert Mustacchi
41*f94098a9SRobert Mustacchifunction runtest
42*f94098a9SRobert Mustacchi{
43*f94098a9SRobert Mustacchi	dladm set-linkprop -p allowed-ips="$@" $ai_vnic 2>/dev/null
44*f94098a9SRobert Mustacchi}
45*f94098a9SRobert Mustacchi
46*f94098a9SRobert Mustacchifunction epass
47*f94098a9SRobert Mustacchi{
48*f94098a9SRobert Mustacchi	runtest $* || fatal "allowed-ips=$* failed, expected success\n"
49*f94098a9SRobert Mustacchi}
50*f94098a9SRobert Mustacchi
51*f94098a9SRobert Mustacchifunction efail
52*f94098a9SRobert Mustacchi{
53*f94098a9SRobert Mustacchi	runtest $* && fatal "allowed-ips=$* succeeded, expected failure\n"
54*f94098a9SRobert Mustacchi}
55*f94098a9SRobert Mustacchi
56*f94098a9SRobert Mustacchi#
57*f94098a9SRobert Mustacchi# Run through all IPv6 prefixes for validity with a token prefix
58*f94098a9SRobert Mustacchi#
59*f94098a9SRobert Mustacchifunction allv6
60*f94098a9SRobert Mustacchi{
61*f94098a9SRobert Mustacchi	typeset i;
62*f94098a9SRobert Mustacchi	for ((i = 1; i <= 128; i++)); do
63*f94098a9SRobert Mustacchi		epass "8000::/$i"
64*f94098a9SRobert Mustacchi	done
65*f94098a9SRobert Mustacchi}
66*f94098a9SRobert Mustacchi
67*f94098a9SRobert Mustacchi#
68*f94098a9SRobert Mustacchi# Run through all of the v6 prefixes except /128 and ensure that they fail for
69*f94098a9SRobert Mustacchi# a given IPv6 address because the other bits are set.
70*f94098a9SRobert Mustacchi#
71*f94098a9SRobert Mustacchifunction v6specific
72*f94098a9SRobert Mustacchi{
73*f94098a9SRobert Mustacchi	typeset i;
74*f94098a9SRobert Mustacchi	for ((i = 0; i < 128; i++)); do
75*f94098a9SRobert Mustacchi		efail 2600:3c00::f03c:91ff:fe96:a267/$i
76*f94098a9SRobert Mustacchi	done
77*f94098a9SRobert Mustacchi}
78*f94098a9SRobert Mustacchi
79*f94098a9SRobert Mustacchisetup
80*f94098a9SRobert Mustacchi
81*f94098a9SRobert Mustacchi# Basic IPv4 single and multiple IPs
82*f94098a9SRobert Mustacchiefail 0.0.0.0
83*f94098a9SRobert Mustacchiepass 127.0.0.1
84*f94098a9SRobert Mustacchiepass 127.0.0.1,127.0.0.2
85*f94098a9SRobert Mustacchiefail 127.0.0.1,127.0.0.1
86*f94098a9SRobert Mustacchiepass 10.167.169.23
87*f94098a9SRobert Mustacchiepass 11.167.169.23
88*f94098a9SRobert Mustacchiepass 12.167.169.23
89*f94098a9SRobert Mustacchiepass 10.167.169.23,11.167.169.23,12.167.169.23
90*f94098a9SRobert Mustacchiefail 256.1.1.1
91*f94098a9SRobert Mustacchiefail 1.256.1.1
92*f94098a9SRobert Mustacchiefail 1.1.256.1
93*f94098a9SRobert Mustacchiefail 1.1.1.256
94*f94098a9SRobert Mustacchiefail 300.300.300.300
95*f94098a9SRobert Mustacchiefail 300.300.300.300,1.1.1.1
96*f94098a9SRobert Mustacchiefail 1.1.1.1,300.300.300.300
97*f94098a9SRobert Mustacchiefail 3.-3.3.-3
98*f94098a9SRobert Mustacchi
99*f94098a9SRobert Mustacchi# Basic IPv4 prefixes
100*f94098a9SRobert Mustacchiefail 0.0.0.0/0
101*f94098a9SRobert Mustacchiepass 127.0.0.0/8
102*f94098a9SRobert Mustacchiefail 127.0.0.1/8
103*f94098a9SRobert Mustacchiepass 128.0.0.0/1
104*f94098a9SRobert Mustacchiepass 128.0.0.0/2
105*f94098a9SRobert Mustacchiepass 128.0.0.0/3
106*f94098a9SRobert Mustacchiepass 128.0.0.0/4
107*f94098a9SRobert Mustacchiepass 128.0.0.0/5
108*f94098a9SRobert Mustacchiepass 128.0.0.0/6
109*f94098a9SRobert Mustacchiepass 128.0.0.0/7
110*f94098a9SRobert Mustacchiepass 128.0.0.0/8
111*f94098a9SRobert Mustacchiepass 128.0.0.0/9
112*f94098a9SRobert Mustacchiepass 128.0.0.0/10
113*f94098a9SRobert Mustacchiepass 128.0.0.0/11
114*f94098a9SRobert Mustacchiepass 128.0.0.0/12
115*f94098a9SRobert Mustacchiepass 128.0.0.0/13
116*f94098a9SRobert Mustacchiepass 128.0.0.0/14
117*f94098a9SRobert Mustacchiepass 128.0.0.0/15
118*f94098a9SRobert Mustacchiepass 128.0.0.0/16
119*f94098a9SRobert Mustacchiepass 128.0.0.0/17
120*f94098a9SRobert Mustacchiepass 128.0.0.0/18
121*f94098a9SRobert Mustacchiepass 128.0.0.0/19
122*f94098a9SRobert Mustacchiepass 128.0.0.0/20
123*f94098a9SRobert Mustacchiepass 128.0.0.0/21
124*f94098a9SRobert Mustacchiepass 128.0.0.0/22
125*f94098a9SRobert Mustacchiepass 128.0.0.0/23
126*f94098a9SRobert Mustacchiepass 128.0.0.0/24
127*f94098a9SRobert Mustacchiepass 128.0.0.0/25
128*f94098a9SRobert Mustacchiepass 128.0.0.0/26
129*f94098a9SRobert Mustacchiepass 128.0.0.0/27
130*f94098a9SRobert Mustacchiepass 128.0.0.0/28
131*f94098a9SRobert Mustacchiepass 128.0.0.0/29
132*f94098a9SRobert Mustacchiepass 128.0.0.0/30
133*f94098a9SRobert Mustacchiepass 128.0.0.0/21
134*f94098a9SRobert Mustacchiepass 128.0.0.0/32
135*f94098a9SRobert Mustacchi
136*f94098a9SRobert Mustacchiefail 128.0.0.1/2
137*f94098a9SRobert Mustacchiefail 128.0.0.1/4
138*f94098a9SRobert Mustacchiefail 128.0.0.1/8
139*f94098a9SRobert Mustacchiefail 128.0.0.1/10
140*f94098a9SRobert Mustacchiefail 128.0.0.1/12
141*f94098a9SRobert Mustacchiefail 128.0.0.1/14
142*f94098a9SRobert Mustacchiefail 128.0.0.1/16
143*f94098a9SRobert Mustacchiefail 128.0.0.1/18
144*f94098a9SRobert Mustacchiefail 128.0.0.1/20
145*f94098a9SRobert Mustacchiefail 128.0.0.1/22
146*f94098a9SRobert Mustacchiefail 128.0.0.1/24
147*f94098a9SRobert Mustacchiefail 128.0.0.1/28
148*f94098a9SRobert Mustacchiefail 128.0.0.1/30
149*f94098a9SRobert Mustacchiepass 128.0.0.1/32
150*f94098a9SRobert Mustacchi
151*f94098a9SRobert Mustacchiepass 10.0.0.0/30
152*f94098a9SRobert Mustacchiepass 10.0.0.4/30
153*f94098a9SRobert Mustacchiepass 10.0.0.8/30
154*f94098a9SRobert Mustacchiepass 10.0.0.12/30
155*f94098a9SRobert Mustacchiepass 10.0.0.16/30
156*f94098a9SRobert Mustacchiepass 10.0.0.20/30
157*f94098a9SRobert Mustacchi
158*f94098a9SRobert Mustacchiefail 10.0.0.1/30
159*f94098a9SRobert Mustacchiefail 10.0.0.5/30
160*f94098a9SRobert Mustacchiefail 10.0.0.9/30
161*f94098a9SRobert Mustacchiefail 10.0.0.13/30
162*f94098a9SRobert Mustacchiefail 10.0.0.17/30
163*f94098a9SRobert Mustacchiefail 10.0.0.21/30
164*f94098a9SRobert Mustacchi
165*f94098a9SRobert Mustacchiepass 10.99.99.0/24,10.88.88.0/24,10.77.7.0/24
166*f94098a9SRobert Mustacchiepass 10.99.99.7/32,10.168.0.0/16
167*f94098a9SRobert Mustacchi
168*f94098a9SRobert Mustacchiefail 10.99.99.7/33
169*f94098a9SRobert Mustacchiefail 10.99.99.7/-1
170*f94098a9SRobert Mustacchiefail 10.99.99.7/
171*f94098a9SRobert Mustacchiefail 10.99.99.7/0
172*f94098a9SRobert Mustacchi
173*f94098a9SRobert Mustacchi# Basic IPv6 Addresss
174*f94098a9SRobert Mustacchiefail ::
175*f94098a9SRobert Mustacchiefail 1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1
176*f94098a9SRobert Mustacchiefail dead:beef::gg
177*f94098a9SRobert Mustacchiepass ::1
178*f94098a9SRobert Mustacchiepass ::127.0.0.1
179*f94098a9SRobert Mustacchiepass ::10.0.0.0
180*f94098a9SRobert Mustacchiefail ::0.0.0.0
181*f94098a9SRobert Mustacchiefail ::ffff:0.0.0.0
182*f94098a9SRobert Mustacchiepass ::ffff:10.123.167.169
183*f94098a9SRobert Mustacchiepass 2600:3c00::f03c:91ff:fe96:a264
184*f94098a9SRobert Mustacchi
185*f94098a9SRobert Mustacchi# IPv6 Prefixes
186*f94098a9SRobert Mustacchi
187*f94098a9SRobert Mustacchiefail ::/128
188*f94098a9SRobert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/129
189*f94098a9SRobert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/-1
190*f94098a9SRobert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/-
191*f94098a9SRobert Mustacchiefail 2600:3c00::f03c:91ff:fe96:a264/
192*f94098a9SRobert Mustacchiefail ::1/1
193*f94098a9SRobert Mustacchiefail ::1/20
194*f94098a9SRobert Mustacchi
195*f94098a9SRobert Mustacchiallv6
196*f94098a9SRobert Mustacchiv6specific
197*f94098a9SRobert Mustacchi
198*f94098a9SRobert Mustacchiepass 2600:3c00::f03c:91ff:fe96:a264/128
199*f94098a9SRobert Mustacchiepass 2600:3c00::/64
200*f94098a9SRobert Mustacchi
201*f94098a9SRobert Mustacchiefail fe80::8:20ff:fead:3361/10
202*f94098a9SRobert Mustacchiefail fe80::1/10
203*f94098a9SRobert Mustacchiepass fe80::/15
204*f94098a9SRobert Mustacchiepass fe82::/15
205*f94098a9SRobert Mustacchi
206*f94098a9SRobert Mustacchicleanup
207*f94098a9SRobert Mustacchiprintf "TEST PASS: $ai_arg0"
208