import static java.util.Objects.requireNonNull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.UpdateBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.UpdateMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.AttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpUnreachNlriBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Update;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.UpdateBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.UpdateMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.AttributesReach;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.AttributesUnreach;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.AttributesUnreachBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.attributes.unreach.MpUnreachNlriBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.Ipv4AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.UnicastSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
public final class BgpPeerUtil {
-
private BgpPeerUtil() {
- throw new UnsupportedOperationException();
+ // Hidden on purpose
}
/**
* @return UPDATE message with EOR marker
*/
public static Update createEndOfRib(final TablesKey key) {
- return key.getAfi() == Ipv4AddressFamily.class && key.getSafi() == UnicastSubsequentAddressFamily.class
- ? new UpdateBuilder().build() :
- new UpdateBuilder()
- .setAttributes(new AttributesBuilder()
- .addAugmentation(Attributes2.class, new Attributes2Builder()
- .setMpUnreachNlri(new MpUnreachNlriBuilder()
- .setAfi(key.getAfi())
- .setSafi(key.getSafi())
- .build()).build()).build()).build();
+ final var builder = new UpdateBuilder();
+ final var afi = key.getAfi();
+ final var safi = key.getSafi();
+ if (!Ipv4AddressFamily.VALUE.equals(afi) || !UnicastSubsequentAddressFamily.VALUE.equals(safi)) {
+ builder.setAttributes(new AttributesBuilder()
+ .addAugmentation(new AttributesUnreachBuilder()
+ .setMpUnreachNlri(new MpUnreachNlriBuilder()
+ .setAfi(key.getAfi())
+ .setSafi(key.getSafi())
+ .build())
+ .build())
+ .build());
+ }
+ return builder.build();
}
/**
public static boolean isEndOfRib(final UpdateMessage msg) {
if (msg.getNlri() == null && msg.getWithdrawnRoutes() == null) {
if (msg.getAttributes() != null) {
- final Attributes2 pa = msg.getAttributes().augmentation(Attributes2.class);
- if (pa != null && msg.getAttributes().augmentation(Attributes1.class) == null) {
+ final AttributesUnreach pa = msg.getAttributes().augmentation(AttributesUnreach.class);
+ if (pa != null && msg.getAttributes().augmentation(AttributesReach.class) == null) {
//only MP_UNREACH_NLRI allowed in EOR
if (pa.getMpUnreachNlri() != null && pa.getMpUnreachNlri().getWithdrawnRoutes() == null) {
// EOR message contains only MPUnreach attribute and no NLRI
}
/**
+ * DTO for transferring LLGR advertizements.
+ *
* @deprecated This class is deprecated for refactoring.
*/
// FIXME: there should be no need for this class, as we should be able to efficiently translate TableKey classes
private final int staleTime;
private final boolean forwardingFlag;
- public LlGracefulRestartDTO (final TablesKey tableKey, final int staleTime, final boolean forwardingFlag) {
+ public LlGracefulRestartDTO(final TablesKey tableKey, final int staleTime, final boolean forwardingFlag) {
this.tableKey = requireNonNull(tableKey);
this.staleTime = staleTime;
this.forwardingFlag = forwardingFlag;