OSDN Git Service

Addition of a new log function
[fulcon/Fulcon.git] / src / subcmd / br-add
1 #!/bin/bash
2
3 # Copyright (C) 2015-2016 NIWA Hideyuki
4
5 FULCONDRIVER=`fulcon driver-name`
6 PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
7
8 usage()
9 {
10         echo "usage: br-add BRIDGE_NUMBER ( IPADDR/MASK | NET_DEVICE )"
11 }
12
13 if [ $# -ne 2 ]; then
14         usage
15         exit -1
16 fi
17
18 BRNO=$1
19 if [ $BRNO -eq 0 ]; then
20         echo "error: fulcon0 is booked"
21         exit -1
22 elif [ $BRNO -lt 0 ]; then
23         echo "error: Negative value : $BRNO"
24         exit -1
25 fi
26
27 ip a show fulcon$BRNO >& /dev/null
28 if [ $? -eq 0 ]; then
29         echo "error: Overlapping bridge : fulcon$BRNO"
30         exit -1
31 fi
32
33 net-ipv4 $2 >& /dev/null
34 if [ $? -eq 0 ]; then
35         NETDEV=""
36         IPMASK=$2
37 else
38         NETDEV=$2
39         ip a show $NETDEV >& /dev/null
40         if [ $? -ne 0 ]; then
41                 echo "error: can't" $NETDEV "does not exist"
42                 exit -1
43         fi
44         IPMASK=`ip a show $NETDEV | awk 'NR==3{print $2}'`
45 fi
46
47 # check a BRIDGE_NUMBER
48 expr "$BRNO" + 1 >& /dev/null
49 if [ $? -gt 1 ]; then
50         echo "error: BRIDGE_NUMBER is not a integer"
51         exit -1
52 fi
53
54 # check a device name
55 if [ x"$NETDEV" != x"" ]; then
56         ip a show $NETDEV >& /dev/null
57         if [ $? -ne 0 ]; then
58                 echo "error: can't find a NET_DEVICE:" $NETDEV
59                 exit -1
60         fi
61 fi
62
63 # check a exist bridge
64 brctl show | grep fulcon${BRNO} >& /dev/null
65 if [ $? -eq 1 ]; then
66         brctl addbr fulcon$BRNO
67         ip link set fulcon$BRNO up
68         echo "generated new BRIDGE : fulcon"$BRNO
69 else
70         echo "error: already exists same bridge:" fulcon$BRNO
71 fi
72
73 # set ip address for bridge, add interface to net_device
74 ip addr add $IPMASK dev fulcon$BRNO
75 if [ x"$NETDEV" != x"" ]; then
76         brctl addif fulcon$BRNO $NETDEV
77
78         # set promisc mode to net_device
79         ip addr del $IPMASK dev $NETDEV
80         ip addr add 0.0.0.0 dev $NETDEV
81 fi
82