@Override public boolean matchAnyCommunity(Environment environment, Set<Long> communityCandidates) { return resolve(environment).matchAnyCommunity(environment, communityCandidates); }
@Override protected boolean matchesSafely(CommunitySetExpr item, Description mismatchDescription) { if (!item.matchAnyCommunity(_environment, _communityCandidates)) { mismatchDescription.appendText( String.format( "CommunitySetExpr: '%s' did not match any community in: %s", item, CommunitySetExprMatchers.toString(_communityCandidates))); return false; } return true; } }
@Override public Result evaluate(Environment environment) { Result result = new Result(); boolean match = false; SortedSet<Long> inputCommunities = null; if (environment.getUseOutputAttributes() && environment.getOutputRoute() instanceof BgpRoute.Builder) { BgpRoute.Builder bgpRouteBuilder = (BgpRoute.Builder) environment.getOutputRoute(); inputCommunities = bgpRouteBuilder.getCommunities(); } else if (environment.getReadFromIntermediateBgpAttributes()) { inputCommunities = environment.getIntermediateBgpAttributes().getCommunities(); } else if (environment.getOriginalRoute() instanceof BgpRoute) { BgpRoute bgpRoute = (BgpRoute) environment.getOriginalRoute(); inputCommunities = bgpRoute.getCommunities(); } if (inputCommunities != null) { match = _expr.matchAnyCommunity(environment, inputCommunities); } result.setBooleanValue(match); return result; }