LXCBR=$3
NETDEV=$4
LXCBRIP=`ip a show $NETDEV | awk 'NR==3{print $2}'`
+LXCMASK=`ip a show $NETDEV | awk 'NR==3{print $2}' | awk -F / '{print $2}'`
LXCPROC=`/usr/lib64/lxcf/lxcf-find-init $LXCNAME`
if [ $? -ne 0 ]; then
exit -1
fi
-mkdir -p /var/run/netns/
-ln -s /proc/${LXCPROC}/ns/net /var/run/netns/$LXCNAME
-brctl show $LXCBR |& egrep 'No such device' >& /dev/null
-if [ $? -eq 0 ]; then
- brctl addbr $LXCBR
- ip link set $LXCBR up
- ip addr add ${LXCBRIP} dev $LXCBR
- echo "generate new bridge:" $LXCBR "("${LXCBRIP}")"
-fi
-
-ip link add name vh${LXCNAME} type veth peer name vg${LXCNAME}
-ip link set vh${LXCNAME}${LXCNUM} up
-brctl addif $LXCBR vh${LXCNAME}
-
-echo "geterated new veth of host :" vh${LXCNAME}
+set_ipaddr()
+{
+ mkdir -p /var/run/netns/
+ ln -s /proc/${LXCPROC}/ns/net /var/run/netns/$LXCNAME
+
+ ip link add name vh${LXCNAME} type veth peer name vg${LXCNAME} >& /dev/null
+ ip link set vh${LXCNAME}${LXCNUM} up
+
+ brctl show $LXCBR |& egrep 'No such device' >& /dev/null
+ if [ $? -eq 0 ]; then
+ brctl addbr $LXCBR
+ ip link set $LXCBR up
+ ip addr add ${LXCBRIP} dev $LXCBR
+ fi
+ brctl addif $LXCBR vh${LXCNAME} >& /dev/null
+
+ ip link set vg${LXCNAME} netns $LXCNAME >& /dev/null
+
+ # Setting of network in container
+ ip netns exec $LXCNAME ip link set vg${LXCNAME} up
+ IPFLG=""
+ while [ x${IPFLG} == x"inet6" -o x${IPFLG} != x"inet" ];
+ do
+ IPFLG=`ip netns exec $LXCNAME ip addr show vg${LXCNAME} | awk 'NR==3{print $1}'`
+ ip netns exec $LXCNAME ip addr add ${LXCIP}/${LXCMASK} dev vg${LXCNAME} >& /dev/null
+ OLDIPADR=`ip netns exec $LXCNAME ip addr show vg${LXCNAME} | awk 'NR==3{print $2}'`
+ sleep 1
+ done
+ while [ x${OLDIPADR} != x${LXCIP}/${LXCMASK} ];
+ do
+ OLDIPADR=`ip netns exec $LXCNAME ip addr show vg${LXCNAME} | awk 'NR==3{print $2}'`
+ if [ x${OLDIPADR} != x${LXCIP}/${LXCMASK} ]; then
+ ip netns exec $LXCNAME ip addr del ${OLDIPADR} dev vg${LXCNAME}
+ ip netns exec $LXCNAME ip addr add ${LXCIP}/${LXCMASK} dev vg${LXCNAME} >& /dev/null
+ fi
+ sleep 1
+ done
+ ip netns exec $LXCNAME ip route delete default >& /dev/null
+ IPADDR=`echo $LXCBRIP | awk -F / '{print $1}'`
+ IPMASK=`echo $LXCBRIP | awk -F / '{print $2}'`
+ ip netns exec $LXCNAME ip route add default via ${IPADDR}
+
+ rm -f /var/run/netns/$LXCNAME
+
+ brctl show $LXCBR | egrep -w $NETDEV >& /dev/null
+ if [ $? -ne 0 ]; then
+ brctl addif $LXCBR $NETDEV
+ fi
-ip link set vg${LXCNAME} netns $LXCNAME
+}
-# Setting of network in container
-ip netns exec $LXCNAME ip addr add ${LXCIP}/24 dev vg${LXCNAME}
-ip netns exec $LXCNAME ip link set vg${LXCNAME} up
-ip netns exec $LXCNAME ip route delete default >& /dev/null
-IPADDR=`echo $LXCBRIP | awk -F / '{print $1}'`
-IPMASK=`echo $LXCBRIP | awk -F / '{print $2}'`
-ip netns exec $LXCNAME ip route add default via ${IPADDR}
+set_ipaddr;sleep 3;set_ipaddr
+echo "generate new bridge:" $LXCBR "("${LXCBRIP}")"
+echo "geterated new veth of host :" vh${LXCNAME}
echo "geterated new veth of guest : vg${LXCNAME} (${LXCIP}/${IPMASK})"
-
-rm -f /var/run/netns/$LXCNAME
-
-brctl show $LXCBR | egrep -w $NETDEV >& /dev/null
-if [ $? -ne 0 ]; then
- brctl addif $LXCBR $NETDEV
-fi
-
+echo
brctl show $LXCBR
exit 0