- final CLinkstateDestinationBuilder builder = new CLinkstateDestinationBuilder();
- serializeCommonParts(builder, linkstate);
-
- final ChoiceNode objectType = (ChoiceNode) linkstate.findChildByArg(OBJECT_TYPE_NID).get();
- if (objectType.findChildByArg(ADVERTISING_NODE_DESCRIPTORS_NID).isPresent()) {
- serializeAdvertisedNodeDescriptor(builder, objectType);
- } else if (objectType.findChildByArg(LOCAL_NODE_DESCRIPTORS_NID).isPresent()) {
- serializeLocalNodeDescriptor(builder, objectType);
- } else if (objectType.findChildByArg(NODE_DESCRIPTORS_NID).isPresent()) {
- serializeNodeDescriptor(builder, objectType);
- } else if (AbstractTeLspNlriCodec.isTeLsp(objectType)) {
- builder.setObjectType(AbstractTeLspNlriCodec.serializeTeLsp(objectType));
- } else {
- LOG.warn("Unknown Object Type: {}.", objectType);
+ final var builder = new CLinkstateDestinationBuilder()
+ .setRouteDistinguisher(RouteDistinguisherUtil.extractRouteDistinguisher(linkstate, DISTINGUISHER_NID));
+ final var protocolId = linkstate.childByArg(PROTOCOL_ID_NID);
+ if (protocolId != null) {
+ // DOM representation contains values as are in the model, not as are in generated enum
+ builder.setProtocolId(ProtocolId.forValue(domProtocolIdValue((String) protocolId.body())));
+ }
+ final var identifier = linkstate.childByArg(IDENTIFIER_NID);
+ if (identifier != null) {
+ builder.setIdentifier(new Identifier((Uint64) identifier.body()));