Gentoo Archives: gentoo-commits

From: "Robin H. Johnson" <robbat2@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/netifrc:master commit in: doc/, net/
Date: Sun, 21 Apr 2019 04:12:07
Message-Id: 1555819841.4ddfad307887e80a296a611832cf3780ccaf9616.robbat2@OpenRC
1 commit: 4ddfad307887e80a296a611832cf3780ccaf9616
2 Author: Kirill Semenkov <semenkovk <AT> gmail <DOT> com>
3 AuthorDate: Mon Jan 21 08:42:56 2019 +0000
4 Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
5 CommitDate: Sun Apr 21 04:10:41 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=4ddfad30
7
8 Two separate peer variables for every peer in veth
9
10 Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
11
12 doc/net.example.Linux.in | 7 ++++---
13 net/veth.sh | 35 +++++++++++------------------------
14 2 files changed, 15 insertions(+), 27 deletions(-)
15
16 diff --git a/doc/net.example.Linux.in b/doc/net.example.Linux.in
17 index 6fc6094..8896acf 100644
18 --- a/doc/net.example.Linux.in
19 +++ b/doc/net.example.Linux.in
20 @@ -916,7 +916,7 @@
21
22 #-----------------------------------------------------------------------------
23 # Virtual interface device (veth)
24 -# For veth support install iproute2 and awk
25 +# For veth support install iproute2
26 #
27 # The script uses "standard" ways of IP-address assignement in net.lo script. Network namespaces are not implemented here
28 # because net.lo currently knows nothing about network namespaces.
29 @@ -925,10 +925,11 @@
30 # The interface type must be set for both peers
31 #type_veth0="veth"
32 # Here we declare peers for "ip link add" command
33 -#veth_veth0="veth0 veth1"
34 +#veth_veth0_peer1="veth0"
35 +#veth_veth0_peer2="veth1"
36 #config_veth0="192.168.0.1/24"
37 #
38 -# Avoids race
39 +# Prevents race
40 #rc_net_veth1_need="net.veth0"
41 #type_veth1="veth"
42 # Both peers are created when the first one starts, we don't need to create the second peer
43
44 diff --git a/net/veth.sh b/net/veth.sh
45 index d969a14..5ff6587 100644
46 --- a/net/veth.sh
47 +++ b/net/veth.sh
48 @@ -3,7 +3,7 @@
49
50 veth_depend()
51 {
52 - program ip awk
53 + program ip
54 }
55
56 _config_vars="$_config_vars veth"
57 @@ -72,19 +72,13 @@ _bring_peer_down()
58 #Create and bring the veth pair up
59 _create_peers()
60 {
61 - local peers
62 - peers="$(_get_array "veth_${IFVAR}")"
63 -
64 - # veth has exactly two peers.
65 - # For POSIX compatibility we evade bash arrays
66 - local npeers
67 - npeers=$(echo "$peers" | awk '{print NF}')
68 - if [ "$npeers" != 2 ]; then
69 - eerror "veth interface must have exactly two peers"
70 - return 1
71 - fi
72 + local peer1
73 + peer1="$(_get_array "veth_${IFVAR}_peer1")"
74 +
75 + local peer2
76 + peer2="$(_get_array "veth_${IFVAR}_peer2")"
77
78 - for x in ${peers}; do
79 + for x in $peer1 $peer2; do
80 if _exists "$x" ; then
81 eerror "Interface $x already exists. Can't continue"
82 return 1
83 @@ -104,12 +98,6 @@ _create_peers()
84 return 1
85 fi
86
87 - local peer1
88 - peer1=$(echo "$peers" | awk '{print $1}')
89 - local peer2
90 - peer2=$(echo "$peers" | awk '{print $2}')
91 -
92 -
93 ip link add "$peer1" type veth peer name "$peer2" > /dev/null 2>&1 || {
94 eerror "Can't create veth peer $peer1 or $peer2"
95 return 1
96 @@ -177,14 +165,13 @@ veth_post_stop()
97 return 0
98 fi
99
100 - local peers
101 - peers="$(_get_array "veth_${IFVAR}")"
102 - local first
103 - first=$(echo "$peers" | awk '{print $1}')
104 + local peer1
105 + peer1="$(_get_array "veth_${IFVAR}_peer1")"
106 +
107 local netns1
108 netns1="$(_get_array "veth_${IFVAR}_ns1")"
109
110 - if ! _bring_peer_down "$first" "$netns1"
111 + if ! _bring_peer_down "$peer1" "$netns1"
112 then
113 eerror "Can't delete the veth pair ${IFVAR}"
114 eend 1