import io.netty.buffer.ByteBuf;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.redirect.as4.extended.community.RedirectAs4;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.redirect.as4.extended.community.RedirectAs4Builder;
"The extended community %s is not RedirectAs4ExtendedCommunityCase type.", extendedCommunity);
final RedirectAs4 redirect = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec
.rev180329.RedirectAs4ExtendedCommunity) extendedCommunity).getRedirectAs4();
- ByteBufWriteUtil.writeUnsignedInt(redirect.getGlobalAdministrator().getValue(), byteAggregator);
- ByteBufWriteUtil.writeUnsignedShort(redirect.getLocalAdministrator(), byteAggregator);
+ ByteBufUtils.write(byteAggregator, redirect.getGlobalAdministrator().getValue());
+ ByteBufUtils.writeOrZero(byteAggregator, redirect.getLocalAdministrator());
}
@Override
public ExtendedCommunity parseExtendedCommunity(final ByteBuf buffer) {
- final RedirectAs4Builder builder = new RedirectAs4Builder();
- builder.setGlobalAdministrator(new AsNumber(ByteBufUtils.readUint32(buffer)));
- builder.setLocalAdministrator(ByteBufUtils.readUint16(buffer));
- return new RedirectAs4ExtendedCommunityCaseBuilder().setRedirectAs4(builder.build()).build();
+ return new RedirectAs4ExtendedCommunityCaseBuilder()
+ .setRedirectAs4(new RedirectAs4Builder()
+ .setGlobalAdministrator(new AsNumber(ByteBufUtils.readUint32(buffer)))
+ .setLocalAdministrator(ByteBufUtils.readUint16(buffer))
+ .build())
+ .build();
}
@Override
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.redirect.extended.community.RedirectExtendedCommunity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.redirect.extended.community.RedirectExtendedCommunityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.update.attributes.extended.communities.extended.community.RedirectExtendedCommunityCaseBuilder;
"The extended community %s is not RedirectExtendedCommunityCase type.", extendedCommunity);
final RedirectExtendedCommunity redirect = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
.bgp.flowspec.rev180329.RedirectExtendedCommunity) extendedCommunity).getRedirectExtendedCommunity();
- ByteBufWriteUtil.writeUnsignedShort(redirect.getGlobalAdministrator().getValue().intValue(), byteAggregator);
+ byteAggregator.writeShort(redirect.getGlobalAdministrator().getValue().intValue());
byteAggregator.writeBytes(redirect.getLocalAdministrator());
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.extended.community.ExtendedCommunity;
public class RedirectIpNextHopEcHandler implements ExtendedCommunityParser, ExtendedCommunitySerializer {
-
//https://tools.ietf.org/html/draft-ietf-idr-flowspec-redirect-ip-00#section-7
private static final int TYPE = 8;
-
private static final int SUBTYPE = 0;
-
private static final byte COPY = 0x1;
@Override
} else {
ByteBufWriteUtil.writeIpv6Address(nextHopAddress.getIpv6Address(), byteAggregator);
}
- ByteBufWriteUtil.writeUnsignedShort(redirect.isCopy() == null || !redirect.isCopy() ? 0 : 1, byteAggregator);
+ byteAggregator.writeShort(Boolean.TRUE.equals(redirect.isCopy()) ? 1 : 0);
}
@Override
final RedirectIpv4 redirect = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec
.rev180329.RedirectIpv4ExtendedCommunity) extendedCommunity).getRedirectIpv4();
ByteBufWriteUtil.writeIpv4Address(redirect.getGlobalAdministrator(), byteAggregator);
- ByteBufWriteUtil.writeUnsignedShort(redirect.getLocalAdministrator(), byteAggregator);
+ ByteBufUtils.writeOrZero(byteAggregator, redirect.getLocalAdministrator());
}
@Override
public ExtendedCommunity parseExtendedCommunity(final ByteBuf buffer) {
- final RedirectIpv4Builder builder = new RedirectIpv4Builder();
- builder.setGlobalAdministrator(Ipv4Util.addressForByteBuf(buffer));
- builder.setLocalAdministrator(ByteBufUtils.readUint16(buffer));
- return new RedirectIpv4ExtendedCommunityCaseBuilder().setRedirectIpv4(builder.build()).build();
+ return new RedirectIpv4ExtendedCommunityCaseBuilder()
+ .setRedirectIpv4(new RedirectIpv4Builder()
+ .setGlobalAdministrator(Ipv4Util.addressForByteBuf(buffer))
+ .setLocalAdministrator(ByteBufUtils.readUint16(buffer))
+ .build())
+ .build();
}
@Override
import io.netty.buffer.ByteBuf;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
import org.opendaylight.protocol.util.Ipv6Util;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.RedirectIpv6ExtendedCommunity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.redirect.ipv6.extended.community.RedirectIpv6;
"The extended community %s is not RedirectIpv6ExtendedCommunity type.", extendedCommunity);
final RedirectIpv6 redirectIpv6 = ((RedirectIpv6ExtendedCommunity) extendedCommunity).getRedirectIpv6();
byteAggregator.writeBytes(Ipv6Util.byteBufForAddress(redirectIpv6.getGlobalAdministrator()));
- ByteBufWriteUtil.writeUnsignedShort(redirectIpv6.getLocalAdministrator(), byteAggregator);
+ ByteBufUtils.writeOrZero(byteAggregator, redirectIpv6.getLocalAdministrator());
}
@Override
import io.netty.buffer.ByteBuf;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.Dscp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.traffic.marking.extended.community.TrafficMarkingExtendedCommunity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.traffic.marking.extended.community.TrafficMarkingExtendedCommunityBuilder;
.xml.ns.yang.bgp.flowspec.rev180329.TrafficMarkingExtendedCommunity) extendedCommunity)
.getTrafficMarkingExtendedCommunity();
byteAggregator.writeZero(RESERVED);
- ByteBufWriteUtil.writeUnsignedByte(trafficMarking.getGlobalAdministrator().getValue(), byteAggregator);
+ ByteBufUtils.write(byteAggregator, trafficMarking.getGlobalAdministrator().getValue());
}
@Override
@Override
public ExtendedCommunity parseExtendedCommunity(final ByteBuf buffer) {
buffer.skipBytes(RESERVED);
- final Dscp dscp = new Dscp(ByteBufUtils.readUint8(buffer));
return new TrafficMarkingExtendedCommunityCaseBuilder()
.setTrafficMarkingExtendedCommunity(new TrafficMarkingExtendedCommunityBuilder()
- .setGlobalAdministrator(dscp)
+ .setGlobalAdministrator(new Dscp(ByteBufUtils.readUint8(buffer)))
.build())
.build();
}
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.protocol.util.ByteBufWriteUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.traffic.rate.extended.community.TrafficRateExtendedCommunity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.traffic.rate.extended.community.TrafficRateExtendedCommunityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.update.attributes.extended.communities.extended.community.TrafficRateExtendedCommunityCaseBuilder;
final TrafficRateExtendedCommunity trafficRate = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns
.yang.bgp.flowspec.rev180329.TrafficRateExtendedCommunity) extendedCommunity)
.getTrafficRateExtendedCommunity();
- ByteBufWriteUtil.writeShort(trafficRate.getInformativeAs().getValue().shortValue(), byteAggregator);
+ byteAggregator.writeShort(trafficRate.getInformativeAs().getValue().intValue());
byteAggregator.writeBytes(trafficRate.getLocalAdministrator().getValue());
}
@Override
public ExtendedCommunity parseExtendedCommunity(final ByteBuf buffer) {
- final ShortAsNumber as = new ShortAsNumber(Uint32.valueOf(buffer.readUnsignedShort()));
- final Bandwidth value = new Bandwidth(ByteArray.readBytes(buffer, TRAFFIC_RATE_SIZE));
- return new TrafficRateExtendedCommunityCaseBuilder().setTrafficRateExtendedCommunity(
- new TrafficRateExtendedCommunityBuilder()
- .setInformativeAs(as)
- .setLocalAdministrator(value)
- .build()).build();
+ return new TrafficRateExtendedCommunityCaseBuilder()
+ .setTrafficRateExtendedCommunity(new TrafficRateExtendedCommunityBuilder()
+ .setInformativeAs(new ShortAsNumber(Uint32.valueOf(buffer.readUnsignedShort())))
+ .setLocalAdministrator(new Bandwidth(ByteArray.readBytes(buffer, TRAFFIC_RATE_SIZE)))
+ .build())
+ .build();
}
}