/[pdpsoft]/trunk/nl.nikhef.ndpf.tools/foundry-tracl/tr-acl.pl
ViewVC logotype

Diff of /trunk/nl.nikhef.ndpf.tools/foundry-tracl/tr-acl.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 44 by davidg, Fri Dec 19 08:18:56 2008 UTC revision 45 by davidg, Thu Jan 8 08:04:06 2009 UTC
# Line 282  sub parse_rule($) { Line 282  sub parse_rule($) {
282          return %rule;          return %rule;
283  }  }
284    
285    sub rule_issimple($) {
286      my ($rule) = @_;
287      my @elements = split(/\s+/,$rule);
288      return ($#elements==3?1:0);
289    }
290    
291    sub rule_isonesided($) {
292      my ($rule) = @_;
293      my @elements = split(/\s+/,$rule);
294      return ($#elements==5?1:0);
295    }
296    
297    sub rule_istwosided($) {
298      my ($rule) = @_;
299      my @elements = split(/\s+/,$rule);
300      return ($#elements==8?1:0);
301    }
302    
303    sub rule_iscomplex($) {
304      my ($rule) = @_;
305      return ($rule=~/established/?1:0);
306    }
307    
308  sub generate_acls() {  sub generate_acls() {
309          print "!\n! generated ACLs for inbound direction\n!\n";          print "!\n! generated ACLs for inbound direction\n!\n";
310          foreach my $iface ( sort keys %interface ) {          foreach my $iface ( sort keys %interface ) {
311                    my $aclcount=0;
312                    my $aclc_simple=0;
313                    my $aclc_one=0;
314                    my $aclc_two=0;
315                    my $aclc_complex=0;
316                  print "no ip access-list extended $iface\n";                  print "no ip access-list extended $iface\n";
317                  print "ip access-list extended $iface\n";                  print "ip access-list extended $iface\n";
318                  foreach my $rule (@{$interface{$iface}{"prepend"}} ) {                  foreach my $rule (@{$interface{$iface}{"prepend"}} ) {
319                          print "  $rule\n";                          print "  $rule\n";
320                            $aclcount++;
321                            $aclc_simple++ if rule_issimple($rule);
322                            $aclc_one++ if rule_isonesided($rule);
323                            $aclc_two++ if rule_istwosided($rule);
324                            $aclc_complex++ if rule_iscomplex($rule);
325                  }                  }
326    
327                  $verb and do {                  $verb and do {
# Line 344  sub generate_acls() { Line 377  sub generate_acls() {
377                            }                            }
378                          }                          }
379                          print "  ".$rule->{"text"}."\n" if $matched;                          print "  ".$rule->{"text"}."\n" if $matched;
380                            $aclcount++ if $matched;
381                            $aclc_simple++ if $matched and rule_issimple($rule->{"text"});
382                            $aclc_one++ if $matched and rule_isonesided($rule->{"text"});
383                            $aclc_two++ if $matched and rule_istwosided($rule->{"text"});
384                            $aclc_complex++ if $matched and rule_iscomplex($rule->{"text"});
385                          $verb and print "  ! suppressed: ".$rule->{"text"}."\n" unless $matched;                          $verb and print "  ! suppressed: ".$rule->{"text"}."\n" unless $matched;
386                  }                  }
387                  foreach my $rule (@{$interface{$iface}{"append"}} ) {                  foreach my $rule (@{$interface{$iface}{"append"}} ) {
388                          print "  $rule\n";                          print "  $rule\n";
389                            $aclcount++;
390                            $aclc_simple++ if rule_issimple($rule);
391                            $aclc_one++ if rule_isonesided($rule);
392                            $aclc_two++ if rule_istwosided($rule);
393                            $aclc_complex++ if rule_iscomplex($rule);
394                  }                  }
395                  print "!\n";                  print "! ACL for $iface contains $aclcount ACEs\n";
396                    print "!   of which simple=$aclc_simple onesided=$aclc_one twosided=$aclc_two complex=$aclc_complex\n";
397                    my $words = 2*$aclc_simple + 4*$aclc_one +
398                            4*$aclc_two + 4 * $aclc_complex;
399                    print "!   Untested: $iface may use $words words of CAM\n!\n";
400          }          }
401  }  }
402    

Legend:
Removed from v.44  
changed lines
  Added in v.45

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28