+ .rev180329.bgp.rib.rib.Peer, PeerKey> peerIId = getInstanceIdentifier().child(org.opendaylight.yang.gen
+ .v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.rib.Peer.class,
+ new PeerKey(peerId));
+ peerPath = createPeerPath(peerId);
+ peerRibOutIId = peerPath.node(ADJRIBOUT_NID);
+ trackerRegistration = rib.getPeerTracker().registerPeer(this);
+ createEffRibInWriter();
+ registerPrefixesCounters(effRibInWriter, effRibInWriter);
+
+ effRibInWriter.init();
+ ribWriter = ribWriter.transform(peerId, peerPath, rib.getRibSupportContext(),
+ tables, addPathTableMaps);
+
+ if (rpcRegistry != null) {
+ final var bgpPeerHandler = new BgpPeerRpc(this, session, tables);
+ rpcRegistration = rpcRegistry.registerRpcImplementations(List.of(
+ (ResetSession) bgpPeerHandler::resetSession,
+ (RestartGracefully) bgpPeerHandler::restartGracefully,
+ (RouteRefreshRequest) bgpPeerHandler::routeRefreshRequest), ImmutableSet.of(
+ rib.getInstanceIdentifier().child(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib
+ .rib.Peer.class, new PeerKey(peerId))));
+ }
+ } else {
+ final Set<TablesKey> forwardingTables;
+ if (advertisedTables == null) {
+ forwardingTables = Collections.emptySet();
+ } else {
+ forwardingTables = advertisedTables.values().stream()
+ .filter(table -> table.getAfiFlags() != null)
+ .filter(table -> table.getAfiFlags().getForwardingState())
+ .map(table -> new TablesKey(table.getAfi(), table.getSafi()))
+ .collect(Collectors.toSet());
+ }
+ ribWriter.clearTables(Sets.difference(tables, forwardingTables));
+ if (restartingLocally) {
+ effRibInWriter.close();
+ peerRestartStopwatch = Stopwatch.createStarted();
+ handleSelectionReferralTimer();
+ missingEOT.addAll(tables);
+ }
+ }
+ if (advertisedTables == null || advertisedTables.isEmpty()) {
+ setAdvertizedGracefulRestartTableTypes(Collections.emptyList());
+ } else {
+ setAdvertizedGracefulRestartTableTypes(advertisedTables.values().stream()
+ .map(t -> new TablesKey(t.getAfi(), t.getSafi())).collect(Collectors.toList()));