Toggle navigation
Toggle navigation
This project
Loading...
Sign in
UT
/
ipw
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
1
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
redmine
2015-03-31 15:47:35 +0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8d65c094c633f32ea49a85c4b3546f76c3c26e8b
8d65c094
1 parent
538bc44d
Speed up (added support of "IPW_FAST" option)
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
9 deletions
ipw
ipw
View file @
8d65c09
...
...
@@ -129,12 +129,32 @@ iface_isexists() {
return
$?
}
IPW_FAST
=
"
${
IPW_FAST
:-
0
}
"
if
[[
"
$IPW_FAST
"
-ne
'0'
]]
;
then
declare
-A IFACE_DETAILS
oldIFS
=
"
$IFS
"
;
IFS
=
"
\n
"
for
LINE
in
$(
ip -o address show | tr -d
':'
| grep -v
'<'
)
;
do
WORDS
=(
${
LINE
//[
:]/
}
)
[[
"
${
WORDS
[2]
}
"
=
'inet'
]]
IFACE_DETAILS[
"
${
WORDS
[1]
}
-primary-ipv4address"
]=
"
${
WORDS
[3]
}
"
done
fi
IFS
=
"
$oldIFS
"
ip_cmds
()
{
_IFACE
=
"
$1
"
;
shift
ip addr flush dev
"
$_IFACE
"
IP_CMDS_VARIABLE
=
"
${
_IFACE
//[.]/_
}
_IP"
IP_CMDS_VARIABLE
=
"
${
IP_CMDS_VARIABLE
}
[@]"
[[
"
$IPW_FAST
"
-ne 0
]]
&&
# Don't do anything if the interface should be "empty" and it's already is
[[
"
${
!IP_CMDS_VARIABLE
}
"
=
''
]]
&&
[[
"
${
IFACE_DETAILS
[
${
_IFACE
}
-primary-ipv4address]
}
"
!
=
''
]]
return
ip addr flush dev
"
$_IFACE
"
for
IP_CMD
in
"
${
!IP_CMDS_VARIABLE
}
"
;
do
[[
"
$IP_CMD
"
!
=
""
]]
&&
ip
$IP_CMD
dev
"
$_IFACE
"
...
...
@@ -565,8 +585,9 @@ case "$CMD" in
if
[[
"
$LXC_DIR
"
!
=
""
]]
;
then
# CREATING LXC IFACES
for
CONTAINER
in
$(
cat
"
$LXC_DIR
"
/
*
/config | tr -d
"
\t
"
| awk -F
'='
'{if($1=="lxc.utsname") print $2}'
)
;
do
CONTAINER_STATUS
=
$(
lxc-info -n
"
$CONTAINER
"
| awk
'{if ($1 == "State:") { print $2; exit }}'
)
#for CONTAINER in $(cat "$LXC_DIR"/*/config | tr -d " \t" | awk -F '=' '{if($1=="lxc.utsname") print $2}'); do
for
CONTAINER
in
$(
ls
"
$LXC_DIR
"
/
)
;
do
CONTAINER_STATUS
=
$(
lxc-info -n
"
$CONTAINER
"
2>/dev/null | awk
'{if ($1 == "State:") { print $2; exit }}'
)
# Skip the container if it's not running on this host
...
...
@@ -582,13 +603,14 @@ case "$CMD" in
done
# Getting an interfaces that _should_ be set up
CONTAINER_CONFIG_IFACES
=(
$(
cat
"
$LXC_DIR
"
/
"
$CONTAINER
"
/config | tr -d
"
\t
"
| awk -F
'='
'{if($1=="lxc.network.veth.pair") {HNAME=$2}; if($1=="lxc.network.name") {GNAME=$2}; if ($1 == "lxc.network.
type" && HNAME!="" && GNAME!="") {print HNAME":"GNAME; HNAME=""; GNAME=""} } END { if(HNAME!="" && GNAME!="") print HNAME":"GNAM
E }'
)
)
CONTAINER_CONFIG_IFACES
=(
$(
cat
"
$LXC_DIR
"
/
"
$CONTAINER
"
/config | tr -d
"
\t
"
| awk -F
'='
'{if($1=="lxc.network.veth.pair") {HNAME=$2}; if($1=="lxc.network.name") {GNAME=$2}; if ($1 == "lxc.network.
link") {BRIDGE=$2}; if ($1 == "lxc.network.type" && HNAME!="" && GNAME!="") {print HNAME":"GNAME":"BRIDGE; HNAME=""; GNAME=""; BRIDGE=""} } END { if(HNAME!="" && GNAME!="") print HNAME":"GNAME":"BRIDG
E }'
)
)
LXC_PID
=
''
for
CONTAINER_IF_N_BRIDGE
in
${
CONTAINER_CONFIG_IFACES
[@]
}
;
do
WORDS
=(
${
CONTAINER_IF_N_BRIDGE
//[
:]/
}
)
HNAME
=
"
${
WORDS
[0]
}
"
GNAME
=
"
${
WORDS
[1]
}
"
BRIDGE
=
"
${
WORDS
[2]
}
"
# Skip if the interface is already exists
[[
"
${
CONTAINER_CURRENT_IFACES
[
$GNAME
]
}
"
!
=
''
]]
&&
...
...
@@ -604,14 +626,19 @@ case "$CMD" in
lxc-attach -n
"
$CONTAINER
"
ip link
set
".c
$GNAME
"
name
"
$GNAME
"
lxc-attach -n
"
$CONTAINER
"
ip link
set
"
$GNAME
"
up
lxc-attach -n
"
$CONTAINER
"
ifup
"
$GNAME
"
[[
"
$BRIDGE
"
!
=
''
]]
&&
[[
"
$IPW_FAST
"
-ne 0
]]
&&
brctl addif
"
$BRIDGE
"
"
$HNAME
"
done
done
# ADDING LXC IFACES TO BRIDGES IF REQUIRED
for
LXCIF_N_BRIDGE
in
${
LXC_BRIDGE_SLAVES
[@]
}
;
do
parse_vlan_subvlan_bridge
"
$LXCIF_N_BRIDGE
"
brctl addif
"
$BRNAME
"
"
$VLANNAME
"
2>/dev/null
done
[[
"
$IPW_FAST
"
-eq 0
]]
&&
# ADDING LXC IFACES TO BRIDGES IF REQUIRED
for
LXCIF_N_BRIDGE
in
${
LXC_BRIDGE_SLAVES
[@]
}
;
do
parse_vlan_subvlan_bridge
"
$LXCIF_N_BRIDGE
"
brctl addif
"
$BRNAME
"
"
$VLANNAME
"
2>/dev/null
done
fi
;;
...
...
Please
register
or
login
to post a comment