if (msg == null) {
throw new BGPDocumentedException("Unhandled message type " + messageType, BGPError.BAD_MSG_TYPE, new byte[] { bs[MessageUtil.LENGTH_FIELD_LENGTH] });
}
-
+ LOG.debug("Message parsed: {}", msg);
return msg;
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Notify;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.NotifyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Open;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.BgpParameters;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.CParameters;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
final Set<BgpTableType> tats = Sets.newHashSet();
if (remoteOpen.getBgpParameters() != null) {
for (final BgpParameters param : remoteOpen.getBgpParameters()) {
- if (param instanceof CParameters) {
- final CParameters cp = (CParameters) param;
+ final CParameters cp = param.getCParameters();
+ if (cp instanceof MultiprotocolCase) {
final TablesKey tt = new TablesKey(((MultiprotocolCase) cp).getMultiprotocolCapability().getAfi(), ((MultiprotocolCase) cp).getMultiprotocolCapability().getSafi());
+ LOG.trace("Added table type to sync {}", tt);
tts.add(tt);
tats.add(new BgpTableTypeImpl(tt.getAfi(), tt.getSafi()));
}
} else {
// All others are passed up
this.listener.onMessage(this, msg);
+ this.sync.updReceived((Update) msg);
}
}
peer,
new MpReachNlriBuilder().setAfi(Ipv4AddressFamily.class).setSafi(UnicastSubsequentAddressFamily.class).setCNextHop(
attrs.getCNextHop()).setAdvertizedRoutes(
- new AdvertizedRoutesBuilder().setDestinationType(
- new DestinationIpv4CaseBuilder().setDestinationIpv4(
- new DestinationIpv4Builder().setIpv4Prefixes(ar.getNlri()).build()).build()).build()).build(),
- attrs);
+ new AdvertizedRoutesBuilder().setDestinationType(
+ new DestinationIpv4CaseBuilder().setDestinationIpv4(
+ new DestinationIpv4Builder().setIpv4Prefixes(ar.getNlri()).build()).build()).build()).build(),
+ attrs);
} else {
LOG.debug("Not adding objects from unhandled IPv4 Unicast");
}
final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi()));
if (ari != null) {
- ari.addRoutes(trans, peer, nlri, attrs);
if (message.equals(ari.endOfRib())) {
ari.markUptodate(trans, peer);
+ } else {
+ ari.addRoutes(trans, peer, nlri, attrs);
}
} else {
LOG.debug("Not adding objects from unhandled NLRI {}", nlri);
@GuardedBy("this")
private final Map<Peer, Boolean> peers = new HashMap<>();
- protected AbstractAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator<PathAttributes> comparator, final TablesKey key) {
+ protected AbstractAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib,
+ final Comparator<PathAttributes> comparator, final TablesKey key) {
this.comparator = Preconditions.checkNotNull(comparator);
this.basePath = InstanceIdentifier.builder(rib.getInstanceIdentifier()).child(LocRib.class).child(Tables.class, key).toInstance();
private void setUptodate(final DataModificationTransaction trans, final Boolean uptodate) {
final Tables t = (Tables) trans.readOperationalData(this.basePath);
if (t == null || !uptodate.equals(t.isUptodate())) {
- LOG.debug("Table {} switching uptodate to {}", uptodate);
+ LOG.debug("Table {} switching uptodate to {}", t, uptodate);
trans.putOperationalData(this.basePath, new TablesBuilder(t).setUptodate(uptodate).build());
}
}