OSDN Git Service

Improvement of network function
[fulcon/Fulcon.git] / src / slot-os / net-add
1 #!/bin/bash
2
3 # Copyright (C) 2016 NIWA Hideyuki
4
5 FULCONDRIVER=`fulcon driver-name`
6 PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
7 SLOTOSDIR=/var/lib/slot-os
8
9 umask 022
10
11 # function usage
12 usage()
13 {
14         echo "usage: net-add [ -d NETDEV ] [ -g GATEWAY ] [ -b BRIDGE_NUMBER ] NIC_NUMBER SLOT_NUMBER IPADDR/MASK "
15 }
16
17 lsdir() {
18   ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
19 }
20
21 # check options
22 FLG_D=0 ; NETDEV=""
23 FLG_G=0 ; LXCGATEWAY=""
24 FLG_B=0 ; LXCBR="0"
25
26 while getopts d:g:b: OPT ; do
27   case $OPT in
28   d) FLG_D=1 ; NETDEV=$OPTARG ;;
29   g) FLG_G=1 ; LXCGATEWAY=$OPTARG ;;
30   b) FLG_B=1 ; LXCBR=$OPTARG ;;
31   \? ) usage; exit -1;;
32   esac
33 done
34 shift $((OPTIND - 1))
35
36 # check args
37 if [ $# -ne 3 ]; then
38         usage
39         exit -1
40 fi
41
42 NICNO=$1
43 SLOTNO=$2
44 IPADDR=$3
45 if [ ! -d $SLOTOSDIR/slot/$SLOTNO ]; then
46         echo "error: $SLOTNO is not exist"
47         exit -1
48 fi
49
50 NAME=`cat $SLOTOSDIR/slot/$SLOTNO/fulcon`
51
52 NEWOPT=""
53 if [ $FLG_D -ne 0 ]; then
54         NEWOPT="$NEWOPT -d $NETDEV"
55 fi
56 if [ $FLG_G -ne 0 ]; then
57         NEWOPT="$NEWOPT -g $LXCGATEWAY"
58 fi
59 if [ $FLG_B -ne 0 ]; then
60         NEWOPT="$NEWOPT -b $LXCBR"
61 fi
62
63 NEWOPT="$NEWOPT $NICNO $NAME $IPADDR"
64
65 fulcon net-add $NEWOPT
66
67 if [ $? -eq 0 ]; then
68         rm -rf  $SLOTOSDIR/slot/$SLOTNO/net
69         cp -pr /var/lib/fulcon/container/$NAME/net $SLOTOSDIR/slot/$SLOTNO/
70 fi
71
72 exit 0