~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/net/forwarding/ipip_lib.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 
  4 # Handles creation and destruction of IP-in-IP or GRE tunnels over the given
  5 # topology. Supports both flat and hierarchical models.
  6 #
  7 # Flat Model:
  8 # Overlay and underlay share the same VRF.
  9 # SW1 uses default VRF so tunnel has no bound dev.
 10 # SW2 uses non-default VRF tunnel has a bound dev.
 11 # +-------------------------+
 12 # | H1                      |
 13 # |               $h1 +     |
 14 # |      192.0.2.1/28 |     |
 15 # +-------------------|-----+
 16 #                     |
 17 # +-------------------|-----+
 18 # | SW1               |     |
 19 # |              $ol1 +     |
 20 # |      192.0.2.2/28       |
 21 # |                         |
 22 # |  + g1a (gre)            |
 23 # |    loc=192.0.2.65       |
 24 # |    rem=192.0.2.66 --.   |
 25 # |    tos=inherit      |   |
 26 # |  .------------------'   |
 27 # |  |                      |
 28 # |  v                      |
 29 # |  + $ul1.111 (vlan)      |
 30 # |  | 192.0.2.129/28       |
 31 # |   \                     |
 32 # |    \_______             |
 33 # |            |            |
 34 # |VRF default + $ul1       |
 35 # +------------|------------+
 36 #              |
 37 # +------------|------------+
 38 # | SW2        + $ul2       |
 39 # |     _______|            |
 40 # |    /                    |
 41 # |   /                     |
 42 # |  + $ul2.111 (vlan)      |
 43 # |  ^ 192.0.2.130/28       |
 44 # |  |                      |
 45 # |  |                      |
 46 # |  '------------------.   |
 47 # |  + g2a (gre)        |   |
 48 # |    loc=192.0.2.66   |   |
 49 # |    rem=192.0.2.65 --'   |
 50 # |    tos=inherit          |
 51 # |                         |
 52 # |              $ol2 +     |
 53 # |     192.0.2.17/28 |     |
 54 # | VRF v$ol2         |     |
 55 # +-------------------|-----+
 56 #                     |
 57 # +-------------------|-----+
 58 # | H2                |     |
 59 # |               $h2 +     |
 60 # |     192.0.2.18/28       |
 61 # +-------------------------+
 62 #
 63 # Hierarchical model:
 64 # The tunnel is bound to a device in a different VRF
 65 #
 66 # +---------------------------+
 67 # | H1                        |
 68 # |               $h1 +       |
 69 # |      192.0.2.1/28 |       |
 70 # +-------------------|-------+
 71 #                     |
 72 # +-------------------|-------+
 73 # | SW1               |       |
 74 # | +-----------------|-----+ |
 75 # | |            $ol1 +     | |
 76 # | |     192.0.2.2/28      | |
 77 # | |                       | |
 78 # | |    + g1a (gre)        | |
 79 # | |    rem=192.0.2.66     | |
 80 # | |    tos=inherit        | |
 81 # | |    loc=192.0.2.65     | |
 82 # | |           ^           | |
 83 # | | VRF v$ol1 |           | |
 84 # | +-----------|-----------+ |
 85 # |             |             |
 86 # | +-----------|-----------+ |
 87 # | | VRF v$ul1 |           | |
 88 # | |           |           | |
 89 # | |           |           | |
 90 # | |           v           | |
 91 # | |    dummy1 +           | |
 92 # | |   192.0.2.65          | |
 93 # | |   .-------'           | |
 94 # | |   |                   | |
 95 # | |   v                   | |
 96 # | |   + $ul1.111 (vlan)   | |
 97 # | |   | 192.0.2.129/28    | |
 98 # | |   \                   | |
 99 # | |    \_____             | |
100 # | |          |            | |
101 # | |          + $ul1       | |
102 # | +----------|------------+ |
103 # +------------|--------------+
104 #              |
105 # +------------|--------------+
106 # | SW2        |              |
107 # | +----------|------------+ |
108 # | |          + $ul2       | |
109 # | |     _____|            | |
110 # | |    /                  | |
111 # | |   /                   | |
112 # | |   | $ul2.111 (vlan)   | |
113 # | |   + 192.0.2.130/28    | |
114 # | |   ^                   | |
115 # | |   |                   | |
116 # | |   '-------.           | |
117 # | |    dummy2 +           | |
118 # | |    192.0.2.66         | |
119 # | |           ^           | |
120 # | |           |           | |
121 # | |           |           | |
122 # | | VRF v$ul2 |           | |
123 # | +-----------|-----------+ |
124 # |             |             |
125 # | +-----------|-----------+ |
126 # | | VRF v$ol2 |           | |
127 # | |           |           | |
128 # | |           v           | |
129 # | |  g2a (gre)+           | |
130 # | |  loc=192.0.2.66       | |
131 # | |  rem=192.0.2.65       | |
132 # | |  tos=inherit          | |
133 # | |                       | |
134 # | |            $ol2 +     | |
135 # | |   192.0.2.17/28 |     | |
136 # | +-----------------|-----+ |
137 # +-------------------|-------+
138 #                     |
139 # +-------------------|-------+
140 # | H2                |       |
141 # |               $h2 +       |
142 # |     192.0.2.18/28         |
143 # +---------------------------+
144 
145 h1_create()
146 {
147         simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64
148         ip route add vrf v$h1 192.0.2.16/28 via 192.0.2.2
149 }
150 
151 h1_destroy()
152 {
153         ip route del vrf v$h1 192.0.2.16/28 via 192.0.2.2
154         simple_if_fini $h1 192.0.2.1/28
155 }
156 
157 h2_create()
158 {
159         simple_if_init $h2 192.0.2.18/28
160         ip route add vrf v$h2 192.0.2.0/28 via 192.0.2.17
161 }
162 
163 h2_destroy()
164 {
165         ip route del vrf v$h2 192.0.2.0/28 via 192.0.2.17
166         simple_if_fini $h2 192.0.2.18/28
167 }
168 
169 sw1_flat_create()
170 {
171         local type=$1; shift
172         local ol1=$1; shift
173         local ul1=$1; shift
174 
175         ip link set dev $ol1 up
176         __addr_add_del $ol1 add "192.0.2.2/28"
177 
178         ip link set dev $ul1 up
179         vlan_create $ul1 111 "" 192.0.2.129/28
180 
181         tunnel_create g1a $type 192.0.2.65 192.0.2.66 tos inherit "$@"
182         ip link set dev g1a up
183         __addr_add_del g1a add "192.0.2.65/32"
184 
185         ip route add 192.0.2.66/32 via 192.0.2.130
186 
187         ip route add 192.0.2.16/28 nexthop dev g1a
188 }
189 
190 sw1_flat_destroy()
191 {
192         local ol1=$1; shift
193         local ul1=$1; shift
194 
195         ip route del 192.0.2.16/28
196 
197         ip route del 192.0.2.66/32 via 192.0.2.130
198         __simple_if_fini g1a 192.0.2.65/32
199         tunnel_destroy g1a
200 
201         vlan_destroy $ul1 111
202         __simple_if_fini $ul1
203         __simple_if_fini $ol1 192.0.2.2/28
204 }
205 
206 sw2_flat_create()
207 {
208         local type=$1; shift
209         local ol2=$1; shift
210         local ul2=$1; shift
211 
212         simple_if_init $ol2 192.0.2.17/28
213         __simple_if_init $ul2 v$ol2
214         vlan_create $ul2 111 v$ol2 192.0.2.130/28
215 
216         tunnel_create g2a $type 192.0.2.66 192.0.2.65 tos inherit dev v$ol2 \
217                 "$@"
218         __simple_if_init g2a v$ol2 192.0.2.66/32
219 
220         ip route add vrf v$ol2 192.0.2.65/32 via 192.0.2.129
221         ip route add vrf v$ol2 192.0.2.0/28 nexthop dev g2a
222 }
223 
224 sw2_flat_destroy()
225 {
226         local ol2=$1; shift
227         local ul2=$1; shift
228 
229         ip route del vrf v$ol2 192.0.2.0/28
230 
231         ip route del vrf v$ol2 192.0.2.65/32 via 192.0.2.129
232         __simple_if_fini g2a 192.0.2.66/32
233         tunnel_destroy g2a
234 
235         vlan_destroy $ul2 111
236         __simple_if_fini $ul2
237         simple_if_fini $ol2 192.0.2.17/28
238 }
239 
240 sw1_hierarchical_create()
241 {
242         local type=$1; shift
243         local ol1=$1; shift
244         local ul1=$1; shift
245 
246         simple_if_init $ol1 192.0.2.2/28
247         simple_if_init $ul1
248         ip link add name dummy1 type dummy
249         __simple_if_init dummy1 v$ul1 192.0.2.65/32
250 
251         vlan_create $ul1 111 v$ul1 192.0.2.129/28
252         tunnel_create g1a $type 192.0.2.65 192.0.2.66 tos inherit dev dummy1 \
253                 "$@"
254         ip link set dev g1a master v$ol1
255 
256         ip route add vrf v$ul1 192.0.2.66/32 via 192.0.2.130
257         ip route add vrf v$ol1 192.0.2.16/28 nexthop dev g1a
258 }
259 
260 sw1_hierarchical_destroy()
261 {
262         local ol1=$1; shift
263         local ul1=$1; shift
264 
265         ip route del vrf v$ol1 192.0.2.16/28
266         ip route del vrf v$ul1 192.0.2.66/32
267 
268         tunnel_destroy g1a
269         vlan_destroy $ul1 111
270 
271         __simple_if_fini dummy1 192.0.2.65/32
272         ip link del dev dummy1
273 
274         simple_if_fini $ul1
275         simple_if_fini $ol1 192.0.2.2/28
276 }
277 
278 sw2_hierarchical_create()
279 {
280         local type=$1; shift
281         local ol2=$1; shift
282         local ul2=$1; shift
283 
284         simple_if_init $ol2 192.0.2.17/28
285         simple_if_init $ul2
286 
287         ip link add name dummy2 type dummy
288         __simple_if_init dummy2 v$ul2 192.0.2.66/32
289 
290         vlan_create $ul2 111 v$ul2 192.0.2.130/28
291         tunnel_create g2a $type 192.0.2.66 192.0.2.65 tos inherit dev dummy2 \
292                 "$@"
293         ip link set dev g2a master v$ol2
294 
295         ip route add vrf v$ul2 192.0.2.65/32 via 192.0.2.129
296         ip route add vrf v$ol2 192.0.2.0/28 nexthop dev g2a
297 }
298 
299 sw2_hierarchical_destroy()
300 {
301         local ol2=$1; shift
302         local ul2=$1; shift
303 
304         ip route del vrf v$ol2 192.0.2.0/28
305         ip route del vrf v$ul2 192.0.2.65/32
306 
307         tunnel_destroy g2a
308         vlan_destroy $ul2 111
309 
310         __simple_if_fini dummy2 192.0.2.66/32
311         ip link del dev dummy2
312 
313         simple_if_fini $ul2
314         simple_if_fini $ol2 192.0.2.17/28
315 }
316 
317 topo_mtu_change()
318 {
319         local mtu=$1
320 
321         ip link set mtu $mtu dev $h1
322         ip link set mtu $mtu dev $ol1
323         ip link set mtu $mtu dev g1a
324         ip link set mtu $mtu dev $ul1
325         ip link set mtu $mtu dev $ul1.111
326         ip link set mtu $mtu dev $h2
327         ip link set mtu $mtu dev $ol2
328         ip link set mtu $mtu dev g2a
329         ip link set mtu $mtu dev $ul2
330         ip link set mtu $mtu dev $ul2.111
331 }
332 
333 test_mtu_change()
334 {
335         local encap=$1; shift
336 
337         RET=0
338 
339         ping_do $h1 192.0.2.18 "-s 1800 -w 3"
340         check_fail $? "ping $encap should not pass with size 1800"
341 
342         RET=0
343 
344         topo_mtu_change 2000
345         ping_do $h1 192.0.2.18 "-s 1800 -w 3"
346         check_err $?
347         log_test "ping $encap packet size 1800 after MTU change"
348 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php