private void serializeTables(final List<Tables> tables, final ByteBuf bytes) { if (tables == null) { return; } for (final Tables t : tables) { final Class<? extends AddressFamily> afi = t.getAfi(); final Integer afival = this.afiReg.numberForClass(afi); Preconditions.checkArgument(afival != null, "Unhandled address family " + afi); bytes.writeShort(afival); final Class<? extends SubsequentAddressFamily> safi = t.getSafi(); final Integer safival = this.safiReg.numberForClass(safi); Preconditions.checkArgument(safival != null, "Unhandled subsequent address family " + safi); bytes.writeByte(safival); if (t.getAfiFlags() != null && t.getAfiFlags().isForwardingState()) { bytes.writeByte(AFI_FLAG_FORWARDING_STATE); } else { bytes.writeZero(1); } } }
@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); } }