mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-16 02:22:52 +01:00
CLOUDSTACK-6062: nic device ids don't always correspond to
'eth' device numbers, but vpc scripts require it. Now we match based on mac.
This commit is contained in:
parent
3384633834
commit
c39ec1eb8f
@ -637,6 +637,7 @@ public class VirtualRoutingResource {
|
|||||||
String netmask = NetUtils.getSubNet(routerGIP, nic.getNetmask());
|
String netmask = NetUtils.getSubNet(routerGIP, nic.getNetmask());
|
||||||
|
|
||||||
String args = " -C";
|
String args = " -C";
|
||||||
|
args += " -M " + nic.getMac();
|
||||||
args += " -d " + dev;
|
args += " -d " + dev;
|
||||||
args += " -i " + routerGIP;
|
args += " -i " + routerGIP;
|
||||||
args += " -g " + gateway;
|
args += " -g " + gateway;
|
||||||
@ -677,6 +678,7 @@ public class VirtualRoutingResource {
|
|||||||
ExecutionResult result;
|
ExecutionResult result;
|
||||||
|
|
||||||
String args = " -d " + dev;
|
String args = " -d " + dev;
|
||||||
|
args += " -M " + nic.getMac();
|
||||||
if (privateGw != null) {
|
if (privateGw != null) {
|
||||||
args += " -a " + rule;
|
args += " -a " + rule;
|
||||||
result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), "vpc_privategw_acl.sh", args);
|
result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), "vpc_privategw_acl.sh", args);
|
||||||
|
|||||||
@ -155,11 +155,13 @@ acl_entry_for_guest_network() {
|
|||||||
dflag=0
|
dflag=0
|
||||||
gflag=0
|
gflag=0
|
||||||
aflag=0
|
aflag=0
|
||||||
|
Mflag=0
|
||||||
rules=""
|
rules=""
|
||||||
rules_list=""
|
rules_list=""
|
||||||
ip=""
|
ip=""
|
||||||
dev=""
|
dev=""
|
||||||
while getopts 'd:i:m:a:' OPTION
|
mac=""
|
||||||
|
while getopts 'd:i:m:M:a:' OPTION
|
||||||
do
|
do
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
d) dflag=1
|
d) dflag=1
|
||||||
@ -171,6 +173,9 @@ do
|
|||||||
m) mflag=1
|
m) mflag=1
|
||||||
mask="$OPTARG"
|
mask="$OPTARG"
|
||||||
;;
|
;;
|
||||||
|
M) Mflag=1
|
||||||
|
mac="$OPTARG"
|
||||||
|
;;
|
||||||
a) aflag=1
|
a) aflag=1
|
||||||
rules="$OPTARG"
|
rules="$OPTARG"
|
||||||
;;
|
;;
|
||||||
@ -186,6 +191,18 @@ then
|
|||||||
unlock_exit 2 $lock $locked
|
unlock_exit 2 $lock $locked
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# override dev with mac address match, if provided
|
||||||
|
if [[ ! -z "$mac" ]]; then
|
||||||
|
logger -t cloud "$(basename $0): mac $mac passed, trying to match to device"
|
||||||
|
for i in `ls /sys/class/net`; do
|
||||||
|
if grep -q $mac /sys/class/net/$i/address; then
|
||||||
|
dev=$i
|
||||||
|
logger -t cloud "$(basename $0): matched dev $i to mac $mac, dev is now $dev"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
gcidr="$ip/$mask"
|
gcidr="$ip/$mask"
|
||||||
if [ -n "$rules" ]
|
if [ -n "$rules" ]
|
||||||
then
|
then
|
||||||
|
|||||||
@ -30,7 +30,7 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
printf "Usage:\n %s -A -d <dev> -i <ip address> -g <gateway> -m <network mask> -s <dns ip> -e < domain> [-f] \n" $(basename $0) >&2
|
printf "Usage:\n %s -A -M <mac> -d <dev> -i <ip address> -g <gateway> -m <network mask> -s <dns ip> -e < domain> [-f] \n" $(basename $0) >&2
|
||||||
printf " %s -D -d <dev> -i <ip address> \n" $(basename $0) >&2
|
printf " %s -D -d <dev> -i <ip address> \n" $(basename $0) >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,15 +131,33 @@ desetup_passwdsvcs() {
|
|||||||
create_guest_network() {
|
create_guest_network() {
|
||||||
# need to wait for eth device to appear before configuring it
|
# need to wait for eth device to appear before configuring it
|
||||||
timer=0
|
timer=0
|
||||||
while ! `grep -q $dev /proc/net/dev` ; do
|
|
||||||
logger -t cloud "$(basename $0):Waiting for interface $dev to appear, $timer seconds"
|
# match dev based on mac, if passed
|
||||||
sleep 1;
|
if [[ ! -z "$mac" ]]; then
|
||||||
if [ $timer -gt 15 ]; then
|
logger -t cloud "$(basename $0): mac $mac passed, trying to match to device"
|
||||||
logger -t cloud "$(basename $0):interface $dev never appeared"
|
while [ ! $timer -gt 15 ]; do
|
||||||
break
|
for i in `ls /sys/class/net`; do
|
||||||
fi
|
if grep -q $mac /sys/class/net/$i/address; then
|
||||||
timer=$[timer + 1]
|
dev=$i
|
||||||
done
|
logger -t cloud "$(basename $0): matched dev $i to mac $mac, dev is now $dev"
|
||||||
|
timer=15
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sleep 1;
|
||||||
|
timer=$[timer + 1]
|
||||||
|
done
|
||||||
|
else
|
||||||
|
while ! `grep -q $dev /proc/net/dev` ; do
|
||||||
|
logger -t cloud "$(basename $0):Waiting for interface $dev to appear, $timer seconds"
|
||||||
|
sleep 1;
|
||||||
|
if [ $timer -gt 15 ]; then
|
||||||
|
logger -t cloud "$(basename $0):interface $dev never appeared"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
timer=$[timer + 1]
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
logger -t cloud " $(basename $0): Create network on interface $dev, gateway $gw, network $ip/$mask "
|
logger -t cloud " $(basename $0): Create network on interface $dev, gateway $gw, network $ip/$mask "
|
||||||
# setup ip configuration
|
# setup ip configuration
|
||||||
@ -225,11 +243,12 @@ dflag=
|
|||||||
gflag=
|
gflag=
|
||||||
Cflag=
|
Cflag=
|
||||||
Dflag=
|
Dflag=
|
||||||
|
Mflag=
|
||||||
|
|
||||||
op=""
|
op=""
|
||||||
|
|
||||||
|
|
||||||
while getopts 'CDn:m:d:i:g:s:e:' OPTION
|
while getopts 'CDn:m:M:d:i:g:s:e:' OPTION
|
||||||
do
|
do
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
C) Cflag=1
|
C) Cflag=1
|
||||||
@ -244,6 +263,9 @@ do
|
|||||||
m) mflag=1
|
m) mflag=1
|
||||||
mask="$OPTARG"
|
mask="$OPTARG"
|
||||||
;;
|
;;
|
||||||
|
M) Mflag=1
|
||||||
|
mac="$OPTARG"
|
||||||
|
;;
|
||||||
d) dflag=1
|
d) dflag=1
|
||||||
dev="$OPTARG"
|
dev="$OPTARG"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user