Fixed BGP synchronization. 43/3743/3
authorDana Kutenicsova <dkutenic@cisco.com>
Mon, 16 Dec 2013 15:49:21 +0000 (16:49 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Mon, 16 Dec 2013 15:49:21 +0000 (16:49 +0100)
Change-Id: I95ece0d4d9cf28df71acaebe6367ddd1b20fa3ba
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractMessageRegistry.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractAdjRIBsIn.java

index 3891c5776242c5d5bc3d56143629ecc235a5bc1f..066caff44be814cee13ed0fc5a6d898a20169091 100644 (file)
@@ -69,7 +69,7 @@ abstract class AbstractMessageRegistry implements MessageRegistry {
                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;
        }
 
index 3a68dcecc06ea4d70655a006e6c86dddc5ba9fec..e37130dfb4c41087248ca79f26c675ac66fafc58 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 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;
@@ -121,9 +122,10 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
                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()));
                                }
@@ -191,6 +193,7 @@ public class BGPSessionImpl extends AbstractProtocolSession<Notification> implem
                } else {
                        // All others are passed up
                        this.listener.onMessage(this, msg);
+                       this.sync.updReceived((Update) msg);
                }
        }
 
index 9f6ff1fea8a53cd0d2592ff30d803fe08515158d..d2531b3bb68b53370890f51f0fa15b8518f24d37 100644 (file)
@@ -116,10 +116,10 @@ public class RIBImpl extends DefaultRibReference {
                                                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");
                        }
@@ -131,9 +131,10 @@ public class RIBImpl extends DefaultRibReference {
 
                        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);
index ea44284dd2311dd644b5d70ce1873023c5852fbc..e10fd08e54301409bc3fd83ba69a75aa4a435563 100644 (file)
@@ -133,7 +133,8 @@ public abstract class AbstractAdjRIBsIn<I, D extends DataObject> implements AdjR
        @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();
 
@@ -150,7 +151,7 @@ public abstract class AbstractAdjRIBsIn<I, D extends DataObject> implements AdjR
        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());
                }
        }