@Override public void serializeCapability(final CParameters capability, final ByteBuf byteAggregator) { if ( capability.getAugmentation(CParameters1.class) == null || capability.getAugmentation(CParameters1.class).getMultiprotocolCapability() == null ) { return; } final MultiprotocolCapability mp = capability.getAugmentation(CParameters1.class).getMultiprotocolCapability(); final ByteBuf capBuffer = Unpooled.buffer(); MultiprotocolCapabilitiesUtil.serializeMPAfiSafi(this.afiReg, this.safiReg, mp.getAfi(), mp.getSafi(), capBuffer); CapabilityUtil.formatCapability(CODE, capBuffer, byteAggregator); }
@Override public void serializeCapability(final CParameters capability, final ByteBuf byteAggregator) { if ( (capability.getAugmentation(CParameters1.class) == null) || (capability.getAugmentation(CParameters1.class).getAddPathCapability() == null) ) { return; } final AddPathCapability addPathCap = capability.getAugmentation(CParameters1.class).getAddPathCapability(); final List<AddressFamilies> families = addPathCap.getAddressFamilies(); if (families != null) { final ByteBuf capBuffer = Unpooled.buffer(families.size() * TRIPLET_BYTE_SIZE); for (final AddressFamilies addressFamily : families) { final Class<? extends AddressFamily> afi = addressFamily.getAfi(); final Integer afival = this.afiReg.numberForClass(afi); Preconditions.checkArgument(afival != null, "Unhandled address family " + afi); capBuffer.writeShort(afival); final Class<? extends SubsequentAddressFamily> safi = addressFamily.getSafi(); final Integer safival = this.safiReg.numberForClass(safi); Preconditions.checkArgument(safival != null, "Unhandled subsequent address family " + safi); capBuffer.writeByte(safival); final SendReceive sendReceive = addressFamily.getSendReceive(); Preconditions.checkArgument(sendReceive != null, "Unhandled Send/Receive value"); capBuffer.writeByte(sendReceive.getIntValue()); } CapabilityUtil.formatCapability(CODE, capBuffer, byteAggregator); } }
@Override public void serializeCapability(final CParameters capability, final ByteBuf byteAggregator) { if (capability.getAugmentation(CParameters1.class) == null || capability.getAugmentation(CParameters1.class).getGracefulRestartCapability() == null) { return; } final GracefulRestartCapability grace = capability.getAugmentation(CParameters1.class).getGracefulRestartCapability(); final ByteBuf bytes = serializeCapability(grace); CapabilityUtil.formatCapability(CODE, bytes, byteAggregator); }
final CParameters1 capabilities = cParam.getAugmentation(CParameters1.class); if (capabilities != null) { final MultiprotocolCapability mc = capabilities.getMultiprotocolCapability(); if (mc != null) { final AdvertizedTableTypes att = new AdvertizedTableTypes(); tt.add(att); if (capabilities.getGracefulRestartCapability() != null) { pref.setGrCapability(true); if (capabilities.getAddPathCapability() != null) { final List<AdvertisedAddPathTableTypes> addPathTableTypeList = capabilities.getAddPathCapability() .getAddressFamilies() .stream() attList.addAll(addPathTableTypeList); if (capabilities.getRouteRefreshCapability() != null) { pref.setRouteRefreshCapability(true);
continue; if (cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability() != null) { final MultiprotocolCapability p = cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability(); LOG.debug("Adding open parameter {}", p); final BgpTableType type = new BgpTableTypeImpl(p.getAfi(), p.getSafi()); tts.add(type); } else if (cParam.getAugmentation(CParameters1.class).getAddPathCapability() != null) { final AddPathCapability addPathCap = cParam.getAugmentation(CParameters1.class).getAddPathCapability(); addPathCapabilitiesList.addAll(addPathCap.getAddressFamilies());
if (capabilities.getGracefulRestartCapability() != null) { pref.setGrCapability(true); if (capabilities.getAddPathCapability() != null) { pref.setAddPathCapability(true); if (capabilities.getRouteRefreshCapability() != null) { pref.setRouteRefreshCapability(true);
@Override public void serializeCapability(final CParameters capability, final ByteBuf byteAggregator) { if (capability == null || (capability.getAugmentation(CParameters1.class) == null) || (capability.getAugmentation(CParameters1.class).getRouteRefreshCapability() == null) ) { return; } CapabilityUtil.formatCapability(CODE, Unpooled.EMPTY_BUFFER, byteAggregator); }
continue; if(cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability() != null) { final MultiprotocolCapability multi = cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability(); final TablesKey tt = new TablesKey(multi.getAfi(), multi.getSafi()); LOG.trace("Added table type to sync {}", tt); tts.add(tt); tats.add(new BgpTableTypeImpl(tt.getAfi(), tt.getSafi())); } else if (cParam.getAugmentation(CParameters1.class).getAddPathCapability() != null) { final AddPathCapability addPathCap = cParam.getAugmentation(CParameters1.class).getAddPathCapability(); addPathCapabilitiesList.addAll(addPathCap.getAddressFamilies());
private Set<TablesKey> setPeerTables(final ReceivedOpen open) { final Set<TablesKey> tables = Sets.newHashSet(DEFAULT_TABLE); for (final BgpParameters param : open.getBgpParameters()) { for (final OptionalCapabilities optCapa : param.getOptionalCapabilities()) { final CParameters cParam = optCapa.getCParameters(); if ( cParam.getAugmentation(CParameters1.class) == null || cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability() == null ) { continue; } final MultiprotocolCapability multi = cParam.getAugmentation(CParameters1.class).getMultiprotocolCapability(); final TablesKey tt = new TablesKey(multi.getAfi(), multi.getSafi()); tables.add(tt); } } return tables; }