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:07:45 +0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
538bc44d126b9b25486df3945f8b1c0f417377ab
538bc44d
1 parent
392f6a26
Added support of LXC ifaces creation
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
6 deletions
ipw
ipw
View file @
538bc44
...
...
@@ -314,7 +314,7 @@ case "$CMD" in
#GETTING INFORMATION ABOUT LXC INTERFACES IN BRIDGES
if
[[
"
$LXC_DIR
"
!
=
""
]]
;
then
LXC_BRIDGE_SLAVES
=(
$(
cat
/srv/lxc
/
*
/config | tr -d
"
\t
"
| awk -F
'='
'{if($1=="lxc.network.link") {BRIDGE=$2}; if($1=="lxc.network.veth.pair") {if(BRIDGE!="") {print $2":"BRIDGE; BRIDGE=""}} }'
)
)
LXC_BRIDGE_SLAVES
=(
$(
cat
"
$LXC_DIR
"
/
*
/config | tr -d
"
\t
"
| awk -F
'='
'{if($1=="lxc.network.link") {BRIDGE=$2}; if($1=="lxc.network.veth.pair") {if(BRIDGE!="") {print $2":"BRIDGE; BRIDGE=""}} }'
)
)
fi
#REMOVING UNNECESSARY D1Q
...
...
@@ -562,11 +562,57 @@ case "$CMD" in
done
done
# ADDING LXC IFACES TO BRIDGES IF REQUIRED
for
LXCIF_N_BRIDGE
in
${
LXC_BRIDGE_SLAVES
[@]
}
;
do
parse_vlan_subvlan_bridge
"
$LINE
"
brctl addif
"
$BRNAME
"
"
$VLANNAME
"
2>/dev/null
done
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 }}'
)
# Skip the container if it's not running on this host
[[
"
$CONTAINER_STATUS
"
!
=
"RUNNING"
]]
&&
continue
# Getting an already set up interfaces
unset
CONTAINER_CURRENT_IFACES
declare
-A CONTAINER_CURRENT_IFACES
#for IFACE in $(lxc-info -n "$CONTAINER" | awk '{if ($1 == "Link:") print $2 }'); do
for
IFACE
in
$(
lxc-attach -n
"
$CONTAINER
"
-- ls /sys/devices/virtual/net/
)
;
do
CONTAINER_CURRENT_IFACES[
"
$IFACE
"
]=
"
$IFACE
"
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":"GNAME }'
)
)
LXC_PID
=
''
for
CONTAINER_IF_N_BRIDGE
in
${
CONTAINER_CONFIG_IFACES
[@]
}
;
do
WORDS
=(
${
CONTAINER_IF_N_BRIDGE
//[
:]/
}
)
HNAME
=
"
${
WORDS
[0]
}
"
GNAME
=
"
${
WORDS
[1]
}
"
# Skip if the interface is already exists
[[
"
${
CONTAINER_CURRENT_IFACES
[
$GNAME
]
}
"
!
=
''
]]
&&
continue
# Getting a pid of container's init
[[
"
$CONTAINER_PID
"
==
''
]]
&&
CONTAINER_PID
=
$(
lxc-info -p -n
"
$CONTAINER
"
| awk
'{ print $2 }'
)
ip link add name
"
$HNAME
"
type
veth peer name
".c
$GNAME
"
ip link
set
"
$HNAME
"
up
ip link
set
".c
$GNAME
"
netns
"
$CONTAINER_PID
"
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
"
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
fi
;;
*
)
...
...
Please
register
or
login
to post a comment