}
}
+ grouping originator-id {
+ leaf originator {
+ type inet:ipv4-address;
+ }
+ }
+
+ grouping cluster-id {
+ leaf-list cluster {
+ type bgp-t:cluster-identifier;
+ }
+ }
+
notification open {
description "Open Message";
reference "http://tools.ietf.org/html/rfc4271#section-4.2";
list extended-communities {
uses bgp-t:extended-community;
}
- leaf originator-id {
- type inet:ipv4-address;
+ container originator-id {
+ uses originator-id;
}
- leaf-list cluster-id {
- type bgp-t:cluster-identifier;
+ container cluster-id {
+ uses cluster-id;
}
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Aggregator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPath;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AtomicAggregate;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Communities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPref;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDisc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Origin;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.WithdrawnRoutes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.GracefulRestartCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.MultiprotocolCase;
regs.add(context.registerAttributeParser(CommunitiesAttributeParser.TYPE, communitiesAttributeParser));
final OriginatorIdAttributeParser originatorIdAttributeParser = new OriginatorIdAttributeParser();
+ regs.add(context.registerAttributeSerializer(OriginatorId.class, originatorIdAttributeParser));
regs.add(context.registerAttributeParser(OriginatorIdAttributeParser.TYPE, originatorIdAttributeParser));
final ClusterIdAttributeParser clusterIdAttributeParser = new ClusterIdAttributeParser();
+ regs.add(context.registerAttributeSerializer(ClusterId.class, clusterIdAttributeParser));
regs.add(context.registerAttributeParser(ClusterIdAttributeParser.TYPE, clusterIdAttributeParser));
MPReachAttributeParser mpReachAttributeParser = new MPReachAttributeParser(nlriReg);
import com.google.common.base.Preconditions;
+
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
+
import java.util.Arrays;
import java.util.List;
+
import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
import org.opendaylight.protocol.bgp.parser.BGPError;
import org.opendaylight.protocol.bgp.parser.BGPParsingException;
-import org.opendaylight.protocol.bgp.parser.impl.message.update.ClusterIdAttributeParser;
-import org.opendaylight.protocol.bgp.parser.impl.message.update.OriginatorIdAttributeParser;
import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
if (update.getPathAttributes() != null) {
ByteBuf pathAttributesBuf = Unpooled.buffer();
this.reg.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
- ClusterIdAttributeParser clusterIdAttributeParser = new ClusterIdAttributeParser();
- clusterIdAttributeParser.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
-
- OriginatorIdAttributeParser originatorIdAttributeParser = new OriginatorIdAttributeParser();
- originatorIdAttributeParser.serializeAttribute(update.getPathAttributes(), pathAttributesBuf);
-
messageBody.writeShort(pathAttributesBuf.writerIndex());
messageBody.writeBytes(pathAttributesBuf);
} else {
import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil;
import org.opendaylight.protocol.util.Ipv4Util;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.ClusterIdentifier;
import org.opendaylight.yangtools.yang.binding.DataObject;
while (buffer.isReadable()) {
list.add(new ClusterIdentifier(Ipv4Util.addressForByteBuf(buffer)));
}
- builder.setClusterId(list);
+ builder.setClusterId(new ClusterIdBuilder().setCluster(list).build());
}
@Override
public void serializeAttribute(final DataObject attribute, final ByteBuf byteAggregator) {
- final PathAttributes pathAttributes = (PathAttributes) attribute;
- if (pathAttributes.getClusterId() == null) {
+ final ClusterId cid = ((PathAttributes) attribute).getClusterId();
+ if (cid == null) {
return;
}
final ByteBuf clusterIdBuffer = Unpooled.buffer();
- for (final ClusterIdentifier clusterIdentifier : pathAttributes.getClusterId()) {
+ for (final ClusterIdentifier clusterIdentifier : cid.getCluster()) {
clusterIdBuffer.writeBytes(Ipv4Util.bytesForAddress(clusterIdentifier));
}
AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, TYPE, clusterIdBuffer, byteAggregator);
import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil;
import org.opendaylight.protocol.util.Ipv4Util;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.OriginatorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
import org.opendaylight.yangtools.yang.binding.DataObject;
-
public final class OriginatorIdAttributeParser implements AttributeParser,AttributeSerializer {
public static final int TYPE = 9;
@Override
public void parseAttribute(final ByteBuf buffer, final PathAttributesBuilder builder) {
Preconditions.checkArgument(buffer.readableBytes() == Ipv4Util.IP4_LENGTH, "Length of byte array for ORIGINATOR_ID should be %s, but is %s", Ipv4Util.IP4_LENGTH, buffer.readableBytes());
- builder.setOriginatorId(Ipv4Util.addressForByteBuf(buffer));
+ builder.setOriginatorId(new OriginatorIdBuilder().setOriginator(Ipv4Util.addressForByteBuf(buffer)).build());
}
@Override
public void serializeAttribute(final DataObject attribute, final ByteBuf byteAggregator) {
- final Ipv4Address originator = ((PathAttributes) attribute).getOriginatorId();
+ final OriginatorId originator = ((PathAttributes) attribute).getOriginatorId();
if (originator == null) {
return;
}
final ByteBuf originatorIdBuf = Unpooled.buffer();
- originatorIdBuf.writeBytes(Ipv4Util.bytesForAddress(originator));
+ originatorIdBuf.writeBytes(Ipv4Util.bytesForAddress(originator.getOriginator()));
AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, TYPE, originatorIdBuf, byteAggregator);
}
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AggregatorBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPathBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AtomicAggregateBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Communities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPrefBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDiscBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginatorIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.as.path.Segments;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.as.path.SegmentsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.Nlri;
paBuilder.setMultiExitDisc(new MultiExitDiscBuilder().setMed((long) 0).build());
assertEquals(paBuilder.getMultiExitDisc(), attrs.getMultiExitDisc());
- paBuilder.setOriginatorId(new Ipv4Address("127.0.0.1"));
+ paBuilder.setOriginatorId(new OriginatorIdBuilder().setOriginator(new Ipv4Address("127.0.0.1")).build());
assertEquals(paBuilder.getOriginatorId(), attrs.getOriginatorId());
- paBuilder.setClusterId(clusters);
+ paBuilder.setClusterId(new ClusterIdBuilder().setCluster(clusters).build());
assertEquals(paBuilder.getClusterId(), attrs.getClusterId());
final MpReachNlriBuilder mpBuilder = new MpReachNlriBuilder();
assertEquals(left.getAtomicAggregate() != null, right.getAtomicAggregate() != null);
}
if (left.getClusterId() != null) {
- assertEqualsClusterId(left.getClusterId(), right.getClusterId());
+ assertEqualsClusterId(left.getClusterId().getCluster(), right.getClusterId().getCluster());
}
if (left.getLocalPref() != null) {
assertEquals(left.getLocalPref().getPref(), right.getLocalPref().getPref());
assertEquals(left.getOrigin().getValue().getIntValue(), right.getOrigin().getValue().getIntValue());
}
if (left.getOriginatorId() != null) {
- assertEquals(left.getOriginatorId().getValue(), right.getOriginatorId().getValue());
+ assertEquals(left.getOriginatorId().getOriginator().getValue(), right.getOriginatorId().getOriginator().getValue());
}
if (left.getAugmentation(PathAttributes1.class) != null) {
assertNotNull(right.getAugmentation(PathAttributes1.class));
byte[] oid1 = this.localId;
byte[] oid2 = this.remoteId;
if (o1.getOriginatorId() != null) {
- oid1 = InetAddresses.forString(o1.getOriginatorId().getValue()).getAddress();
+ oid1 = InetAddresses.forString(o1.getOriginatorId().getOriginator().getValue()).getAddress();
}
if (o2.getOriginatorId() != null) {
- oid2 = InetAddresses.forString(o2.getOriginatorId().getValue()).getAddress();
+ oid2 = InetAddresses.forString(o2.getOriginatorId().getOriginator().getValue()).getAddress();
}
if (!Arrays.equals(oid1, oid2)) {
return compareByteArrays(oid1, oid2);
int cluster1 = 0;
int cluster2 = 0;
if (o1.getClusterId() != null) {
- cluster1 = o1.getClusterId().size();
+ cluster1 = o1.getClusterId().getCluster().size();
}
if (o2.getClusterId() != null) {
- cluster2 = o2.getClusterId().size();
+ cluster2 = o2.getClusterId().getCluster().size();
}
if (cluster1 != cluster2) {
return ((Integer) cluster1).compareTo(cluster2);
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AsPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ClusterIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.LocalPrefBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.MultiExitDiscBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.OriginBuilder;
builder.setMultiExitDisc(new MultiExitDiscBuilder().setMed(12L).build());
this.attr5 = builder.build();
builder.setAsPath(new AsPathBuilder().setSegments(new ArrayList<Segments>()).build());
- builder.setClusterId(new ArrayList<ClusterIdentifier>());
+ builder.setClusterId(new ClusterIdBuilder().setCluster(new ArrayList<ClusterIdentifier>()).build());
this.attr6 = builder.build();
- builder.setClusterId(clusters);
+ builder.setClusterId(new ClusterIdBuilder().setCluster(clusters).build());
this.attr7 = builder.build();
}