@Test public void testBuildScreen() { List<ScreenOption> screenOptionList = ImmutableList.of( IcmpLarge.INSTANCE, IpUnknownProtocol.INSTANCE, TcpFinNoAck.INSTANCE, TcpSynFin.INSTANCE, TcpNoFlag.INSTANCE); Screen screen = new Screen("screen"); for (ScreenOption option : screenOptionList) { screen.getScreenOptions().add(option); } IpAccessList screenAcl = buildScreen(screen, "~SCREEN~screen"); assertThat( screenAcl, equalTo( IpAccessList.builder() .setName("~SCREEN~screen") .setLines( ImmutableList.of( ExprAclLine.rejecting( new OrMatchExpr( screenOptionList.stream() .map(ScreenOption::getAclLineMatchExpr) .collect(Collectors.toList()))), ExprAclLine.ACCEPT_ALL)) .build())); Screen screen2 = new Screen("screen2"); IpAccessList screenAcl2 = buildScreen(screen2, "~SCREEN~screen2"); assertThat(screenAcl2, nullValue()); }
@Nullable @VisibleForTesting static IpAccessList buildScreen(@Nullable Screen screen, String aclName) { if (screen == null || screen.getAction() == ScreenAction.ALARM_WITHOUT_DROP) { return null; } List<AclLineMatchExpr> matches = screen.getScreenOptions().stream() .map(ScreenOption::getAclLineMatchExpr) .filter(Objects::nonNull) .collect(Collectors.toList()); if (matches.isEmpty()) { return null; } return IpAccessList.builder() .setName(aclName) .setLines( ImmutableList.of( ExprAclLine.rejecting(new OrMatchExpr(matches)), ExprAclLine.ACCEPT_ALL)) .build(); }
JuniperConfiguration extends VendorConfiguration { @Nullable @VisibleForTesting static IpAccessList buildScreen(@Nullable Screen screen, String aclName) { if (screen == null || screen.getAction() == ScreenAction.ALARM_WITHOUT_DROP) { return null; } List<AclLineMatchExpr> matches = screen.getScreenOptions().stream() .map(ScreenOption::getAclLineMatchExpr) .filter(Objects::nonNull) .collect(Collectors.toList()); if (matches.isEmpty()) { return null; } return IpAccessList.builder() .setName(aclName) .setLines( ImmutableList.of( ExprAclLine.rejecting(new OrMatchExpr(matches)), ExprAclLine.ACCEPT_ALL)) .build(); } }
JuniperConfiguration extends VendorConfiguration { @Nullable @VisibleForTesting static IpAccessList buildScreen(@Nullable Screen screen, String aclName) { if (screen == null || screen.getAction() == ScreenAction.ALARM_WITHOUT_DROP) { return null; } List<AclLineMatchExpr> matches = screen.getScreenOptions().stream() .map(ScreenOption::getAclLineMatchExpr) .filter(Objects::nonNull) .collect(Collectors.toList()); if (matches.isEmpty()) { return null; } return IpAccessList.builder() .setName(aclName) .setLines( ImmutableList.of( ExprAclLine.rejecting(new OrMatchExpr(matches)), ExprAclLine.ACCEPT_ALL)) .build(); } JuniperConfiguration(); }
JuniperConfiguration extends VendorConfiguration { @Nullable @VisibleForTesting static IpAccessList buildScreen(@Nullable Screen screen, String aclName) { if (screen == null || screen.getAction() == ScreenAction.ALARM_WITHOUT_DROP) { return null; } List<AclLineMatchExpr> matches = screen.getScreenOptions().stream() .map(ScreenOption::getAclLineMatchExpr) .filter(Objects::nonNull) .collect(Collectors.toList()); if (matches.isEmpty()) { return null; } return IpAccessList.builder() .setName(aclName) .setLines( ImmutableList.of( ExprAclLine.rejecting(new OrMatchExpr(matches)), ExprAclLine.ACCEPT_ALL)) .build(); } JuniperConfiguration(); static @Nonnull String computeFirewallFilterTermName(
      @Nonnull String filterName, @Nonnull String termName); static @Nonnull String computeSecurityPolicyTermName(
      @Nonnull String policyName, @Nonnull String termName); @VisibleForTesting static TraceElement matchingFirewallFilter(String filename, String filterName); @VisibleForTesting static TraceElement matchingFirewallFilterTerm(
      String filename, String filterName, String termName); @VisibleForTesting static TraceElement matchingSecurityPolicyTerm(
      String filename, String policyName, String termName); static String computePeerExportPolicyName(Prefix remoteAddress); static String computeOspfExportPolicyName(String vrfName); Map<String, NodeDevice> getNodeDevices(); @Override void setVendor(ConfigurationFormat format); static String computeContributorRouteFilterListName(Prefix prefix); static String computeAggregatedRouteGenerationPolicyName(Prefix prefix); static String computeGeneratedRouteGenerationPolicyName(Prefix prefix); static String computeIsisExportPolicyName(String routingInstanceName); @Override List<Configuration> toVendorIndependentConfigurations(); static String computeLogicalSystemDefaultHostname(
      String masterHostname, String logicalSystemName); @Nonnull Map<String, LogicalSystem> getLogicalSystems(); LogicalSystem getMasterLogicalSystem(); @Override String getHostname(); @Override void setHostname(String hostname); }
JuniperConfiguration extends VendorConfiguration { @Nullable @VisibleForTesting static IpAccessList buildScreen(@Nullable Screen screen, String aclName) { if (screen == null || screen.getAction() == ScreenAction.ALARM_WITHOUT_DROP) { return null; } List<AclLineMatchExpr> matches = screen.getScreenOptions().stream() .map(ScreenOption::getAclLineMatchExpr) .filter(Objects::nonNull) .collect(Collectors.toList()); if (matches.isEmpty()) { return null; } return IpAccessList.builder() .setName(aclName) .setLines( ImmutableList.of( ExprAclLine.rejecting(new OrMatchExpr(matches)), ExprAclLine.ACCEPT_ALL)) .build(); } JuniperConfiguration(); static @Nonnull String computeFirewallFilterTermName(
      @Nonnull String filterName, @Nonnull String termName); static @Nonnull String computeSecurityPolicyTermName(
      @Nonnull String policyName, @Nonnull String termName); @VisibleForTesting static TraceElement matchingFirewallFilter(String filename, String filterName); @VisibleForTesting static TraceElement matchingFirewallFilterTerm(
      String filename, String filterName, String termName); @VisibleForTesting static TraceElement matchingSecurityPolicyTerm(
      String filename, String policyName, String termName); static String computePeerExportPolicyName(Prefix remoteAddress); static String computeOspfExportPolicyName(String vrfName); Map<String, NodeDevice> getNodeDevices(); @Override void setVendor(ConfigurationFormat format); static String computeContributorRouteFilterListName(Prefix prefix); static String computeAggregatedRouteGenerationPolicyName(Prefix prefix); static String computeGeneratedRouteGenerationPolicyName(Prefix prefix); static String computeIsisExportPolicyName(String routingInstanceName); @Override List<Configuration> toVendorIndependentConfigurations(); static String computeLogicalSystemDefaultHostname(
      String masterHostname, String logicalSystemName); @Nonnull Map<String, LogicalSystem> getLogicalSystems(); LogicalSystem getMasterLogicalSystem(); @Override String getHostname(); @Override void setHostname(String hostname); static final String ACL_NAME_COMBINED_INCOMING; static final String ACL_NAME_GLOBAL_POLICY; static final String ACL_NAME_SCREEN; static final String ACL_NAME_SCREEN_INTERFACE; static final String ACL_NAME_SCREEN_ZONE; static final String ACL_NAME_SECURITY_POLICY; @VisibleForTesting static final int DEFAULT_ISIS_COST; }