blob: 94ecc0191a3d34b288e093c112473c8ac025134c (
plain)
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
|
# Copyright (c) 2015 Gentoo Foundation
# All rights reserved. Released under the 2-clause BSD license.
hsr_depend()
{
program ip
after interface
before dhcp macchanger
}
_is_hsr() {
is_interface_type hsr
}
hsr_pre_start()
{
local hsr=
eval hsr=\$type_${IFVAR}
[ "${hsr}" = "hsr" ] || return 0
eval hsr_slave1=\$hsr_slave1_${IFVAR}
eval hsr_slave2=\$hsr_slave2_${IFVAR}
eval hsr_supervision=\$hsr_supervision_${IFVAR}
if [ -z "${hsr_slave1}" ] || [ -z "${hsr_slave2}" ]; then
eerror "HSR interfaces require two slave interfaces to be set"
return 1
fi
if ! ( IFACE=${hsr_slave1} _exists ); then
eerror "HSR slave1 ${hsr_slave1} does not exist"
return 1
fi
if ! ( IFACE=${hsr_slave2} _exists ); then
eerror "HSR slave2 ${hsr_slave2} does not exist"
return 1
fi
ebegin "Creating HSR interface ${IFACE}"
cmd="ip link add name "${IFACE}" type hsr slave1 ${hsr_slave1} slave2 ${hsr_slave2} ${hsr_supervision:+supervision }${hsr_supervision}"
veinfo $cmd
if $cmd ; then
eend 0 && _up && set_interface_type hsr
else
eend 1
fi
}
hsr_post_stop()
{
_is_hsr || return 0
ebegin "Removing HSR ${IFACE}"
cmd="ip link delete "${IFACE}" type hsr"
veinfo "$cmd"
$cmd
eend $?
}
|