-
- RouteEntry entry = routeEntries.get(routeId);
- if (tc.getRootNode().getDataAfter().isPresent()) {
- if (entry == null) {
- entry = new RouteEntry();
- routeEntries.put(routeId, entry);
- }
-
- entry.addRoute(routerId, (ContainerNode) tc.getRootNode().getDataAfter().get());
- } else if (entry != null) {
- if (entry.removeRoute(routerId)) {
- routeEntries.remove(routeId);
- entry = null;
+ for (final DataTreeCandidateNode child : tc.getRootNode().getChildNodes()) {
+ tx.merge(LogicalDatastoreType.OPERATIONAL, this.locRibTarget.node(child.getIdentifier()), child.getDataAfter().get());
+ for (final DataTreeCandidateNode route : this.ribSupport.changedRoutes(child)) {
+ final PathArgument routeId = route.getIdentifier();
+ RouteEntry entry = this.routeEntries.get(routeId);
+ if (route.getDataAfter().isPresent()) {
+ if (entry == null) {
+ entry = new RouteEntry();
+ this.routeEntries.put(routeId, entry);
+ LOG.trace("Created new entry for {}", routeId);
+ }
+ LOG.trace("Find {} in {}", this.attributesIdentifier, route.getDataAfter());
+ final ContainerNode advertisedAttrs = (ContainerNode) NormalizedNodes.findNode(route.getDataAfter(), this.attributesIdentifier).orNull();
+ entry.addRoute(routerId, advertisedAttrs);
+ LOG.trace("Added route from {} attributes {}", routerId, advertisedAttrs);
+ } else if (entry != null && entry.removeRoute(routerId)) {
+ this.routeEntries.remove(routeId);
+ entry = null;
+ LOG.trace("Removed route from {}", routerId);
+ }
+ LOG.debug("Updated route {} entry {}", routeId, entry);
+ toUpdate.put(new RouteUpdateKey(peerId, routeId), entry);