aboutsummaryrefslogtreecommitdiffstats
path: root/vnfs/vFW/scripts/v_firewall_init.sh
blob: 9b8be88efd15cc07cf141d8543a649bca3129980 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash

# Convert Network CIDR to Netmask
mask2cidr() {
    nbits=0
    IFS=.
    for dec in $1 ; do
        case $dec in
            255) let nbits+=8;;
            254) let nbits+=7;;
            252) let nbits+=6;;
            248) let nbits+=5;;
            240) let nbits+=4;;
            224) let nbits+=3;;
            192) let nbits+=2;;
            128) let nbits+=1;;
            0);;
            *) echo "Error: $dec is not recognized"; exit 1
        esac
    done
    echo "$nbits"
}

# Start VPP
start vpp
sleep 1

# Configure VPP for vFirewall
IPADDR1=$(ifconfig eth1 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
IPADDR2=$(ifconfig eth2 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
HWADDR1=$(ifconfig eth1 | grep HWaddr | tr -s ' ' | cut -d' ' -f5)
HWADDR2=$(ifconfig eth2 | grep HWaddr | tr -s ' ' | cut -d' ' -f5)
FAKE_HWADDR1=$(echo -n 00; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"')
FAKE_HWADDR2=$(echo -n 00; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"')

IPADDR1_MASK=$(ifconfig eth1 | grep "Mask" | awk '{print $4}' | awk -F ":" '{print $2}')
IPADDR1_CIDR=$(mask2cidr $IPADDR1_MASK)
IPADDR2_MASK=$(ifconfig eth2 | grep "Mask" | awk '{print $4}' | awk -F ":" '{print $2}')
IPADDR2_CIDR=$(mask2cidr $IPADDR2_MASK)

ifconfig eth1 down
ifconfig eth2 down
ifconfig eth1 hw ether $FAKE_HWADDR1
ifconfig eth2 hw ether $FAKE_HWADDR2
ip addr flush dev eth1
ip addr flush dev eth2
ifconfig eth1 up
ifconfig eth2 up
vppctl create tap hw-addr $HWADDR1
vppctl create tap hw-addr $HWADDR2
vppctl set int ip address tap0 $IPADDR1"/"$IPADDR1_CIDR
vppctl set int ip address tap1 $IPADDR2"/"$IPADDR2_CIDR
vppctl set int state tap0 up
vppctl set int state tap1 up
brctl addbr br0
brctl addif br0 tap0
brctl addif br0 eth1
brctl addbr br1
brctl addif br1 tap1
brctl addif br1 eth2
ifconfig br0 up
ifconfig br1 up
sleep 1

# Start HoneyComb
VERSION=$(cat /opt/config/demo_artifacts_version.txt)
mkdir -p /var/lib/honeycomb/persist/{config,context}/
echo "" > /var/lib/honeycomb/persist/context/data.json
echo "" > /var/lib/honeycomb/persist/config/data.json
/opt/honeycomb/honeycomb &>/dev/null &disown
sleep 1

# Start VES client
cd /opt/VES/evel/evel-library/code/VESreporting/
./go-client.sh &>/dev/null &disown