aboutsummaryrefslogtreecommitdiff
path: root/scripts/netjail/topo.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/netjail/topo.sh')
-rwxr-xr-xscripts/netjail/topo.sh162
1 files changed, 162 insertions, 0 deletions
diff --git a/scripts/netjail/topo.sh b/scripts/netjail/topo.sh
new file mode 100755
index 000000000..de3296b45
--- /dev/null
+++ b/scripts/netjail/topo.sh
@@ -0,0 +1,162 @@
1#!/bin/bash
2
3declare -A K_PLUGIN
4declare -A R_TCP
5declare -A R_TCP_ALLOWED
6declare -i -A R_TCP_ALLOWED_NUMBER
7declare -A R_UDP
8declare -A R_UDP_ALLOWED
9declare -i -A R_UDP_ALLOWED_NUMBER
10declare -A P_PLUGIN
11declare -A R_SCRIPT
12
13extract_attributes()
14{
15 line_key=$1
16 line=$2
17
18 if [ "$line_key" = "P" ]
19 then
20 n=$(echo $line|cut -d \| -f 1|awk -F: '{print $2}')
21 echo $n
22 m=$(echo $line|cut -d \| -f 1|awk -F: '{print $3}')
23 echo $m
24 else
25 number=$(echo $line|cut -d \| -f 1| cut -c 2-|cut -d : -f 2 )
26 echo $number
27 fi
28
29 #nf=$(echo $line|awk -F: '{print NF}')
30 nf=$(echo $line|awk -F\| '{print NF}')
31 for ((i=2;i<=$nf;i++))
32 do
33 entry=$(echo $line |awk -v i=$i -F\| '{print $i}')
34 echo $entry
35 if [ "$(echo $entry|grep P)" = "" ]; then
36 key=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 1)
37 echo $key
38 value=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 2)
39 echo $value
40 if [ "$key" = "tcp_port" ]
41 then
42 R_TCP_ALLOWED_NUMBER[$number]=0
43 echo tcp port: $value
44 R_TCP[$number]=$value
45 elif [ "$key" = "udp_port" ]
46 then
47 R_UDP_ALLOWED_NUMBER[$number]=0
48 echo udp port: $value
49 R_UDP[$number]=$value
50 elif [ "$key" = "plugin" ]
51 then
52 echo plugin: $value
53 echo $line_key
54 if [ "$line_key" = "P" ]
55 then
56 P_PLUGIN[$n,$m]=$value
57 echo $n $m ${P_PLUGIN[$n,$m]}
58 elif [ "$line_key" = "K" ]
59 then
60 K_PLUGIN[$number]=$value
61 fi
62 elif [ "$key" = "script" ]
63 then
64 echo script: $value
65 echo $line_key
66 R_SCRIPT[$number]=$value
67 fi
68 else
69 p1=$(echo $entry|cut -d P -f 2|cut -d } -f 1|cut -d : -f 2)
70 echo $p1
71 p2=$(echo $entry|cut -d P -f 2|cut -d } -f 1|cut -d : -f 3)
72 echo $p2
73 if [ "$key" = "tcp_port" ]
74 then
75 R_TCP_ALLOWED_NUMBER[$number]+=1
76 R_TCP_ALLOWED[$number,${R_TCP_ALLOWED_NUMBER[$number]},1]=$p1
77 R_TCP_ALLOWED[$number,${R_TCP_ALLOWED_NUMBER[$number]},2]=$p2
78 echo ${R_TCP_ALLOWED_NUMBER[$number]}
79 echo ${R_TCP_ALLOWED[$number,${R_TCP_ALLOWED_NUMBER[$number]},1]}
80 echo ${R_TCP_ALLOWED[$number,${R_TCP_ALLOWED_NUMBER[$number]},2]}
81 elif [ "$key" = "udp_port" ]
82 then
83 R_UDP_ALLOWED_NUMBER[$number]+=1
84 R_UDP_ALLOWED[$number,${R_UDP_ALLOWED_NUMBER[$number]},1]=$p1
85 R_UDP_ALLOWED[$number,${R_UDP_ALLOWED_NUMBER[$number]},2]=$p2
86 fi
87 fi
88 done
89 #for ((i=2;i<=$nf;i++))
90 # do
91 #entry=$(echo $line |awk -v i=$i -F\| '{print $i}')
92 key=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 1)
93 value=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 2)
94
95 #done
96}
97
98parse_line(){
99 line=$1
100 echo $line
101 key=$(cut -c -1 <<< $line)
102 if [ "$key" = "M" ]
103 then
104 LOCAL_M=$(cut -d : -f 2 <<< $line)
105 echo $LOCAL_M
106 elif [ "$key" = "N" ]
107 then
108 GLOBAL_N=$(cut -d : -f 2 <<< $line)
109 echo $GLOBAL_N
110 for ((i=1;i<=$GLOBAL_N;i++))
111 do
112 R_TCP[$i]=0
113 R_UDP[$i]=0
114 R_SCRIPT[$i]=""
115 done
116 elif [ "$key" = "X" ]
117 then
118 KNOWN=$(cut -d : -f 2 <<< $line)
119 echo $KNOWN
120 elif [ "$key" = "T" ]
121 then
122 PLUGIN=$(cut -d : -f 2 <<< $line)
123 echo $PLUGIN
124 elif [ "$key" = "B" ]
125 then
126 BROADCAST=$(cut -d : -f 2 <<< $line)
127 echo $BROADCAST
128 elif [ "$key" = "K" ]
129 then
130 echo know node
131 extract_attributes $key $line
132 elif [ "$key" = "R" ]
133 then
134 echo router
135 extract_attributes $key $line
136 elif [ "$key" = "P" ]
137 then
138 echo node
139 extract_attributes $key $line
140 fi
141}
142
143read_topology_string(){
144 string=$1
145 IFS=' ' read -r -a array <<< $string
146 for element in "${array[@]}"
147 do
148 echo $element
149 parse_line $element
150 done
151}
152
153read_topology(){
154 local filename=$1
155 while read line; do
156 # reading each line
157 parse_line $line
158 done < $filename
159}
160
161
162