File: get_remote.sh

package info (click to toggle)
dtrace 2.0.5-1
  • links: PTS
  • area: main
  • in suites: sid
  • size: 24,408 kB
  • sloc: ansic: 61,247; sh: 17,997; asm: 1,717; lex: 947; awk: 754; yacc: 695; perl: 37; sed: 17; makefile: 15
file content (71 lines) | stat: -rwxr-xr-x 1,502 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
#
# Oracle Linux DTrace.
# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
# Licensed under the Universal Permissive License v 1.0 as shown at
# http://oss.oracle.com/licenses/upl.
#

#
# get_remote.sh ipv4|ipv6|cleanup [tcpport]
#
# Create (or cleanup) a network namespace with either IPv4 or IPv6
# address associated.
#
# Print the local address and the remote address, or an
# error message if a failure occurred during setup.
#
# If tcpport is specified, start sshd on that port.
#
# Exit status is 0 if all succceeded.
#

cmd=$1
tcpport=$2

prefix=$(basename $tmpdir)
netns=${prefix}ns
veth1=${prefix}v1
veth2=${prefix}v2
mtu=1500

set -e

case $cmd in
cleanup)	pids=$(ip netns pids ${netns} 2>/dev/null)
		if [[ -n "$pids" ]]; then
			kill -TERM $pids
		fi
		ip netns del ${netns} 2>/dev/null
		exit 0
		;;
 ipv4)		veth1_addr=192.168.168.1
		veth2_addr=192.168.168.2
		prefixlen=24
		family=
		;;
 ipv6)		veth1_addr=fd::1
		veth2_addr=fd::2
		prefixlen=64
		family=-6
		;;
 *)		echo "Unexpected cmd $cmd" >2
		exit 1
		;;
esac

ip netns add $netns
ip link add dev $veth1 mtu $mtu netns $netns type veth \
   peer name $veth2 mtu $mtu
ip netns exec $netns ip $family addr add ${veth1_addr}/$prefixlen dev $veth1
ip netns exec $netns ip link set $veth1 up
ip addr add ${veth2_addr}/${prefixlen} dev $veth2
ip link set $veth2 up

if [[ -n "$tcpport" ]]; then
	sshd=$(which sshd)
	ip netns exec $netns $sshd -p $tcpport &
fi

echo "$veth2_addr $veth1_addr"
exit 0