synchronized void updateTables(final BGPPeer peer, final Update message) {
final DataModificationTransaction trans = this.dps.beginTransaction();
- if (EOR.equals(message)) {
- final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
- new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
- if (ari != null) {
- ari.markUptodate(trans, peer);
- } else {
- LOG.debug("End-of-RIB for IPv4 Unicast ignored");
- }
- return;
- }
-
- final WithdrawnRoutes wr = message.getWithdrawnRoutes();
- if (wr != null) {
- final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
- new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
- if (ari != null) {
- ari.removeRoutes(
- trans,
- peer,
- new MpUnreachNlriBuilder().setAfi(Ipv4AddressFamily.class).setSafi(UnicastSubsequentAddressFamily.class).setWithdrawnRoutes(
- new WithdrawnRoutesBuilder().setDestinationType(
- new DestinationIpv4CaseBuilder().setDestinationIpv4(
- new DestinationIpv4Builder().setIpv4Prefixes(wr.getWithdrawnRoutes()).build()).build()).build()).build());
- } else {
- LOG.debug("Not removing objects from unhandled IPv4 Unicast");
+ if (!EOR.equals(message)) {
+ final WithdrawnRoutes wr = message.getWithdrawnRoutes();
+ if (wr != null) {
+ final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
+ new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
+ if (ari != null) {
+ ari.removeRoutes(
+ trans,
+ peer,
+ new MpUnreachNlriBuilder().setAfi(Ipv4AddressFamily.class).setSafi(UnicastSubsequentAddressFamily.class).setWithdrawnRoutes(
+ new WithdrawnRoutesBuilder().setDestinationType(
+ new DestinationIpv4CaseBuilder().setDestinationIpv4(
+ new DestinationIpv4Builder().setIpv4Prefixes(wr.getWithdrawnRoutes()).build()).build()).build()).build());
+ } else {
+ LOG.debug("Not removing objects from unhandled IPv4 Unicast");
+ }
}
- }
- final PathAttributes attrs = message.getPathAttributes();
- final PathAttributes2 mpu = attrs.getAugmentation(PathAttributes2.class);
- if (mpu != null) {
- final MpUnreachNlri nlri = mpu.getMpUnreachNlri();
+ final PathAttributes attrs = message.getPathAttributes();
+ final PathAttributes2 mpu = attrs.getAugmentation(PathAttributes2.class);
+ if (mpu != null) {
+ final MpUnreachNlri nlri = mpu.getMpUnreachNlri();
- final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi()));
- if (ari != null) {
- ari.removeRoutes(trans, peer, nlri);
- } else {
- LOG.debug("Not removing objects from unhandled NLRI {}", nlri);
+ final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi()));
+ if (ari != null) {
+ ari.removeRoutes(trans, peer, nlri);
+ } else {
+ LOG.debug("Not removing objects from unhandled NLRI {}", nlri);
+ }
}
- }
- final Nlri ar = message.getNlri();
- if (ar != null) {
- final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
- new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
- if (ari != null) {
- ari.addRoutes(
- trans,
- 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);
- } else {
- LOG.debug("Not adding objects from unhandled IPv4 Unicast");
+ final Nlri ar = message.getNlri();
+ if (ar != null) {
+ final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
+ new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
+ if (ari != null) {
+ ari.addRoutes(
+ trans,
+ 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);
+ } else {
+ LOG.debug("Not adding objects from unhandled IPv4 Unicast");
+ }
}
- }
-
- final PathAttributes1 mpr = message.getPathAttributes().getAugmentation(PathAttributes1.class);
- if (mpr != null) {
- final MpReachNlri nlri = mpr.getMpReachNlri();
- final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi()));
- if (ari != null) {
- if (message.equals(ari.endOfRib())) {
- ari.markUptodate(trans, peer);
+ final PathAttributes1 mpr = message.getPathAttributes().getAugmentation(PathAttributes1.class);
+ if (mpr != null) {
+ final MpReachNlri nlri = mpr.getMpReachNlri();
+
+ final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi()));
+ if (ari != null) {
+ if (message.equals(ari.endOfRib())) {
+ ari.markUptodate(trans, peer);
+ } else {
+ ari.addRoutes(trans, peer, nlri, attrs);
+ }
} else {
- ari.addRoutes(trans, peer, nlri, attrs);
+ LOG.debug("Not adding objects from unhandled NLRI {}", nlri);
}
+ }
+ } else {
+ final AdjRIBsIn ari = this.tables.getOrCreate(trans, this,
+ new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
+ if (ari != null) {
+ ari.markUptodate(trans, peer);
} else {
- LOG.debug("Not adding objects from unhandled NLRI {}", nlri);
+ LOG.debug("End-of-RIB for IPv4 Unicast ignored");
}
}