@Override public Ipv6Address getPolicyBsid(@Nonnull Long color, @Nonnull Ipv6Address endpoint, @Nonnull final MappingContext ctx) { Optional<Srv6PolicyMappings> read = ctx.read(ctxIid); if (read.isPresent()) { return read.get().getSrv6PolicyMapping().stream() .filter(srv6PolicyMapping -> srv6PolicyMapping.getColor().equals(color) && srv6PolicyMapping.getEndpoint().equals(endpoint)) .map(Srv6PolicyMapping::getBsid).findFirst().orElse(null); } return null; }
return false; } else if(!_ipv6Address.equals(other._ipv6Address)) { return false;
private void updateNAResponse(NeighborSolicitationPacket pdu, VirtualPort port, NeighborAdvertisePacketBuilder naPacket) { long flag = 0; if (!pdu.getSourceIpv6().equals(ipv6Utils.UNSPECIFIED_ADDR)) { naPacket.setDestinationIpv6(pdu.getSourceIpv6()); flag = 0xE0; // Set Router, Solicited and Override Flag. } else { naPacket.setDestinationIpv6(ipv6Utils.ALL_NODES_MCAST_ADDR); flag = 0xA0; // Set Router and Override Flag. } naPacket.setDestinationMac(pdu.getSourceMac()); naPacket.setEthertype(pdu.getEthertype()); naPacket.setSourceIpv6(pdu.getTargetIpAddress()); naPacket.setSourceMac(new MacAddress(port.getMacAddress())); naPacket.setHopLimit(Ipv6Constants.ICMP_V6_MAX_HOP_LIMIT); naPacket.setIcmp6Type(Ipv6Constants.ICMP_V6_NA_CODE); naPacket.setIcmp6Code(pdu.getIcmp6Code()); flag = flag << 24; naPacket.setFlags(flag); naPacket.setFlowLabel(pdu.getFlowLabel()); naPacket.setIpv6Length(32); naPacket.setNextHeader(pdu.getNextHeader()); naPacket.setOptionType((short)2); naPacket.setTargetAddrLength((short)1); naPacket.setTargetAddress(pdu.getTargetIpAddress()); naPacket.setTargetLlAddress(new MacAddress(port.getMacAddress())); naPacket.setVersion(pdu.getVersion()); naPacket.setIcmp6Chksum(0); return; }