[BGPCEP-329] updateLsp () in class org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener doesnt match "PCEP Extensions for Stateful PCE draft-ietf-pce-stateful-pce-11" Created: 09/Dec/15  Updated: 03/Mar/19  Resolved: 20/Jan/16

Status: Resolved
Project: bgpcep
Component/s: PCEP
Affects Version/s: Bugzilla Migration
Fix Version/s: Bugzilla Migration

Type: Bug
Reporter: Geng Xingyuan Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 4744

 Description   

R(Remove - 1 bit): On PCRpt messages the R Flag indicates that the
LSP has been removed from the PCC and the PCE SHOULD remove all
state from its database. Upon receiving an LSP State Report with
the R Flag set to 1 for an RSVP-signaled LSP, the PCE SHOULD
remove all state for the path identified by the LSP Identifiers
TLV from its database. When the all-zeros LSP-IDENTIFIERS TLV is
used, the PCE SHOULD remove all state for the PLSP-ID from its
database.



 Comments   
Comment by Geng Xingyuan [ 24/Dec/15 ]

protected final synchronized void updateLsp(final MessageContext ctx, final L id, final String lspName,
final ReportedLspBuilder rlb, final boolean solicited, final boolean remove) {

final String name;
if (lspName == null) {
name = this.lsps.get(id);
if (name == null) {
LOG.error("PLSPID {} seen for the first time, not reporting the LSP", id);
return;
}
} else

{ name = lspName; }

LOG.debug("Saved LSP {} with name {}", id, name);
this.lsps.put(id, name);

final ReportedLsp previous = this.lspData.get(name);
// if no previous report about the lsp exist, just proceed
if (previous != null) {
final List<Path> updatedPaths = makeBeforeBreak(rlb, previous, name, remove);
// if all paths or the last path were deleted, delete whole tunnel
if (updatedPaths == null || updatedPaths.isEmpty()) {
LOG.debug("All paths were removed, removing LSP with {}.", id);
removeLsp(ctx, id);
return;
}
rlb.setPath(updatedPaths);
}
rlb.setKey(new ReportedLspKey(name));
rlb.setName(name);

// If this is an unsolicited update. We need to make sure we retain the metadata already present
if (solicited)

{ this.nodeState.setLspMetadata(name, rlb.getMetadata()); }

else

{ rlb.setMetadata(this.nodeState.getLspMetadata(name)); }

//FIX!!! should check R flag in this place!!!!!!!!
final ReportedLsp rl = rlb.build();
ctx.trans.put(LogicalDatastoreType.OPERATIONAL, this.pccIdentifier.child(ReportedLsp.class, rlb.getKey()), rl);
this.lspData.put(name, rl);

}

Comment by Milos Fabian [ 05/Jan/16 ]

Input parameter "remove" represents "R" flag. The flag is later treated in "makeBeforeBreak(...)" as described in pce-stateful draft.

Are you experiencing any problems with LSP removal? If so, could you please describe the use-case?

Comment by Milos Fabian [ 20/Jan/16 ]

Insufficient information provided in a bug report.

Generated at Wed Feb 07 19:12:43 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.