| version 1.6, 2018/05/08 00:51:39 |
version 1.7, 2018/05/08 00:55:07 |
|
|
| # based on C-class subnets counting |
# based on C-class subnets counting |
| # |
# |
| |
|
| # $Platon: scripts/shell/firewall/firewall.d/subnets/simplify-subnets.sh,v 1.5 2018/05/08 00:20:40 nepto Exp $ |
# $Platon: scripts/shell/firewall/firewall.d/subnets/simplify-subnets.sh,v 1.6 2018/05/08 00:51:39 nepto Exp $ |
| |
|
| # Minimum amount of C-classes to be merged into one B-class |
# Minimum amount of C-classes to be merged into one B-class |
| MIN_C_CLASS_MERGE=120; |
MIN_C_CLASS_MERGE=120; |
| Line 43 c_class_subnets_count () # {{{ |
|
| Line 43 c_class_subnets_count () # {{{ |
|
| prev_C=''; |
prev_C=''; |
| prev_B=''; |
prev_B=''; |
| cnt_CinB=1; |
cnt_CinB=1; |
| |
|
| while IFS='' read -r line; do |
while IFS='' read -r line; do |
| if [ -z "$line" -o "${line#\#}"x != "${line}x" ]; then |
if [ -z "$line" -o "${line#\#}"x != "${line}x" ]; then |
| echo "$line"; |
echo "$line"; |
| Line 69 while IFS='' read -r line; do |
|
| Line 70 while IFS='' read -r line; do |
|
| fi |
fi |
| |
|
| if [ "$subnet_B" = "$prev_B" ]; then |
if [ "$subnet_B" = "$prev_B" ]; then |
| to_write="$to_write"$'\n'; |
to_write="$to_write"$'\n'; # newline |
| to_write="$to_write$subnet_C/$mask"; |
to_write="$to_write$subnet_C/$mask"; |
| prev_C="$subnet_C"; |
prev_C="$subnet_C"; |
| # /24=1, /23=2, /22=4, /21=8, ... |
# /24=1, /23=2, /22=4, /21=8, ... |
| Line 78 while IFS='' read -r line; do |
|
| Line 79 while IFS='' read -r line; do |
|
| continue; |
continue; |
| fi |
fi |
| |
|
| |
# Output |
| if [ "$cnt_CinB" -gt "$MIN_C_CLASS_MERGE" ]; then |
if [ "$cnt_CinB" -gt "$MIN_C_CLASS_MERGE" ]; then |
| echo "# Merged $cnt_CinB C-classes into one B-class"; |
echo "# Merged $cnt_CinB C-classes into one B-class"; |
| echo "$prev_B/16"; |
echo "$prev_B/16"; |
| else if [ "$cnt_CinB" -eq 1 ]; then |
else |
| if [[ "$to_write" = */24 ]]; then |
if [ "$cnt_CinB" -gt 1 ]; then |
| echo "# Simplified to C-class"; |
echo "# Found $cnt_CinB similar networks"; |
| echo "$to_write"; |
echo "$to_write"; |
| else |
else |
| echo "# Unchanged network"; |
if [[ "$to_write" = */24 ]]; then |
| echo "$to_write"; |
echo "# Simplified to C-class"; |
| |
echo "$to_write"; |
| |
else |
| |
echo "# Unchanged network"; |
| |
echo "$to_write"; |
| |
fi |
| fi |
fi |
| else |
fi |
| echo "# Found $cnt_CinB similar networks"; |
|
| echo "$to_write"; |
|
| fi fi |
|
| |
|
| to_write="$subnet_C/$mask"; |
to_write="$subnet_C/$mask"; |
| prev_B="$subnet_B"; |
prev_B="$subnet_B"; |