Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Thursday, October 15, 2026

Diff for scripts/shell/firewall/firewall.d/subnets/simplify-subnets.sh between version 1.1 and 1.2

version 1.1, 2018/05/07 21:01:06 version 1.2, 2018/05/07 22:20:40
Line 12 
Line 12 
 # 2018-05-07 - created  # 2018-05-07 - created
 #  #
   
 # $Platon$  # $Platon: scripts/shell/firewall/firewall.d/subnets/simplify-subnets.sh,v 1.1 2018/05/07 21:01:06 nepto Exp $
   
 SUBNET_FILE="$1";  SUBNET_FILE="$1";
   
Line 21  if [ -z "$SUBNET_FILE" ]; then
Line 21  if [ -z "$SUBNET_FILE" ]; then
         exit 1;          exit 1;
 fi  fi
   
 prev_subnet_0='';  prev_C='';
   prev_B='';
   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 30  while IFS='' read -r line; do
Line 32  while IFS='' read -r line; do
   
         subnet="`echo "$line" | cut -f1 -d/`";          subnet="`echo "$line" | cut -f1 -d/`";
         mask="`echo "$line" | cut -f2 -d/`";          mask="`echo "$line" | cut -f2 -d/`";
           if [ "$mask" -gt 24 ]; then
                   mask=24;
           fi
   
           subnet_C="`echo "$subnet" | sed 's/\.[0-9]\+$/.0/'`";
           subnet_B="`echo "$subnet" | sed 's/\.[0-9]\+\.[0-9]\+$/.0.0/'`";
   
           if [ -z "$to_write" ]; then
                   prev_C="$subnet_C";
                   prev_B="$subnet_B";
                   to_write="$subnet_C/$mask";
           fi
   
         # Easy          if [ "$subnet_C" = "$prev_C" ]; then
         if [ "$mask" -lt 24 ]; then  
                 echo "$subnet/$mask";  
                 continue;                  continue;
         fi          fi
   
         subnet_0="`echo "$subnet" | sed 's/\.[0-9]\+$/.0/'`";          if [ "$subnet_B" = "$prev_B" ]; then
         if [ "$subnet_0" = "$prev_subnet_0" ]; then                  to_write="$to_write"$'\n';
                   to_write="$to_write$subnet_C/24";
                   prev_C="$subnet_C";
                   cnt_CinB=$(( cnt_CinB + 1 ));
                 continue;                  continue;
         fi          fi
   
         echo "$subnet_0/24";          if [ "$cnt_CinB" -gt 128 ]; then
         prev_subnet_0="$subnet_0";                  echo "# Merged $cnt_CinB C-classes to one B-class";
                   echo "$prev_B/16";
           else if [ "$cnt_CinB" -eq 1 ]; then
                   if [[ "$to_write" = */24 ]]; then
                           echo "# Simplified to C-class";
                           echo "$to_write";
                   else
                           echo "# Unchanged network";
                           echo "$to_write";
                   fi
           else
                   echo "# Found $cnt_CinB similar networks";
                   echo "$to_write";
           fi fi
   
           to_write="$subnet_C/$mask";
           prev_B="$subnet_B";
           cnt_CinB=1;
 done < "$SUBNET_FILE";  done < "$SUBNET_FILE";
   
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top