accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html";
+ revision 2023-01-12 {
+ description "Updated timer definitions to uint8 and split them off
+ into pcep-session-timers grouping";
+ }
+
revision 2022-03-28 {
description "Add ted-name key";
}
"Initial revision.";
}
+ grouping pcep-session-timers {
+ leaf dead-timer-value {
+ // FIXME: uint8
+ type uint16;
+ default 120;
+ units seconds;
+ }
+
+ leaf keep-alive-timer-value {
+ // FIXME: uint8
+ type uint16;
+ default 30;
+ units seconds;
+ }
+ }
+
grouping pcep-config {
container session-config {
description "PCEP topology config";
default 4189;
}
- leaf dead-timer-value {
- type uint16;
- default 120;
- units seconds;
- }
-
- leaf keep-alive-timer-value {
- type uint16;
- default 30;
- units seconds;
- }
-
leaf ted-name {
type string;
default "example-linkstate-topology";
}
+
+ uses pcep-session-timers;
}
}
*/
package org.opendaylight.protocol.pcep.impl;
+import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
-import com.google.common.base.Preconditions;
import java.net.InetSocketAddress;
import java.util.List;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.protocol.pcep.PCEPCapability;
import org.opendaylight.protocol.pcep.PCEPPeerProposal;
import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.config.rev230112.PcepSessionTimers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.Open;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.OpenBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.open.TlvsBuilder;
private static final Logger LOG = LoggerFactory.getLogger(BasePCEPSessionProposalFactory.class);
private static final int KA_TO_DEADTIMER_RATIO = 4;
+ private final @NonNull List<PCEPCapability> capabilities;
private final int keepAlive;
private final int deadTimer;
- private final List<PCEPCapability> capabilities;
+
+ public BasePCEPSessionProposalFactory(final PcepSessionTimers timers, final List<PCEPCapability> capabilities) {
+ this(timers.getDeadTimerValue().toJava(), timers.getKeepAliveTimerValue().toJava(), capabilities);
+ }
public BasePCEPSessionProposalFactory(final int deadTimer, final int keepAlive,
final List<PCEPCapability> capabilities) {
if (keepAlive != 0) {
- Preconditions.checkArgument(keepAlive >= 1, "Minimum value for keep-alive-timer-value is 1");
+ checkArgument(keepAlive >= 1, "Minimum value for keep-alive-timer-value is 1");
if (deadTimer != 0 && deadTimer / keepAlive != KA_TO_DEADTIMER_RATIO) {
LOG.warn("dead-timer-value should be {} times greater than keep-alive-timer-value",
KA_TO_DEADTIMER_RATIO);
}
private void addTlvs(final InetSocketAddress address, final TlvsBuilder builder) {
- for (final PCEPCapability capability : this.capabilities) {
+ for (final PCEPCapability capability : capabilities) {
capability.setCapabilityProposal(address, builder);
}
}
final PCEPPeerProposal peerProposal) {
final OpenBuilder oBuilder = new OpenBuilder()
.setSessionId(Uint8.valueOf(sessionId))
- .setKeepalive(Uint8.valueOf(BasePCEPSessionProposalFactory.this.keepAlive));
- if (BasePCEPSessionProposalFactory.this.keepAlive == 0) {
+ .setKeepalive(Uint8.valueOf(keepAlive));
+ if (keepAlive == 0) {
oBuilder.setDeadTimer(Uint8.ZERO);
} else {
- oBuilder.setDeadTimer(Uint8.valueOf(BasePCEPSessionProposalFactory.this.deadTimer));
+ oBuilder.setDeadTimer(Uint8.valueOf(deadTimer));
}
final TlvsBuilder builder = new TlvsBuilder();
@Override
public List<PCEPCapability> getCapabilities() {
- return this.capabilities;
+ return capabilities;
}
}
binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.app.config.rev160707.PcepSessionConfig"/>
<bean id="sessionProposalFactory" class="org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory">
- <argument>
- <bean factory-ref="pcepSessionConfig" factory-method="getDeadTimerValue"/>
- </argument>
- <argument>
- <bean factory-ref="pcepSessionConfig" factory-method="getKeepAliveTimerValue"/>
- </argument>
+ <argument ref="pcepSessionConfig"/>
<argument ref="pcepCapabilities"/>
</bean>
module pcep-app-config {
- yang-version 1;
namespace "urn:opendaylight:params:xml:ns:yang:controller:pcep:app-config";
prefix "pcep-app-config";
description
- "Configuration for the PCEP implementation.";
+ "Configuration for the PCEP implementation.
- revision "2016-07-07" {
- description
- "Initial revision.
+ Copyright (c) 2016 Brocade Communications Systems, Inc. All rights reserved.
- Copyright (c) 2016 Brocade Communications Systems, Inc. All rights reserved.
+ This program and the accompanying materials are made available
+ under the terms of the Eclipse Public License v1.0 which
+ accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html";
- This program and the accompanying materials are made available
- under the terms of the Eclipse Public License v1.0 which
- accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html";
+ revision "2016-07-07" {
+ description
+ "Initial revision.";
}
- container pcep-session-config {
- leaf dead-timer-value {
- type uint16;
- default 120;
- }
+ import pcep-config { prefix pc; }
- leaf keep-alive-timer-value {
- type uint16;
- default 30;
- }
+ container pcep-session-config {
+ // FIXME: remove this container
+ uses pc:pcep-session-timers;
}
typedef path-type {
}
}
}
-}
\ No newline at end of file
+}
import odl-network-topology { prefix ont; revision-date 2014-01-13; }
import pcep-types { prefix pcep; revision-date 2018-11-09; }
import rsvp { prefix rsvp; revision-date 2015-08-20; }
- import pcep-config { prefix pdc; revision-date 2022-03-28; }
+ import pcep-config { prefix pdc; }
organization "Cisco Systems, Inc.";
contact "Robert Varga <rovarga@cisco.com>";
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev200720.Tlvs3Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev200720.lsp.db.version.tlv.LspDbVersion;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev200720.speaker.entity.id.tlv.SpeakerEntityIdBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.config.rev220328.pcep.node.config.SessionConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.config.rev230112.pcep.node.config.SessionConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.Tlvs1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.open.TlvsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.Node1;