2 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.bgp.parser;
10 import com.google.common.annotations.Beta;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1Builder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapability;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapability.RestartFlags;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapabilityBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.LlGracefulRestartCapability;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.LlGracefulRestartCapabilityBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.Tables;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.Tables.AfiFlags;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.TablesBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.TablesKey;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.AddressFamily;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.SubsequentAddressFamily;
27 import org.opendaylight.yangtools.yang.common.Uint16;
30 * Utility class for dealing with Graceful Restart.
32 public final class GracefulRestartUtil {
34 * GR capability advertizing inactive GR.
36 public static final @NonNull GracefulRestartCapability EMPTY_GR_CAPABILITY = new GracefulRestartCapabilityBuilder()
37 .setRestartFlags(new RestartFlags(Boolean.FALSE))
38 .setRestartTime(Uint16.ZERO)
42 * LLGR capability advertizing no tables.
44 public static final @NonNull LlGracefulRestartCapability EMPTY_LLGR_CAPABILITY =
45 new LlGracefulRestartCapabilityBuilder().build();
47 private GracefulRestartUtil() {
52 public static @NonNull Tables gracefulRestartTable(final @NonNull Class<? extends AddressFamily> afi,
53 final @NonNull Class<? extends SubsequentAddressFamily> safi, final boolean forwardingState) {
54 return gracefulRestartTable(new TablesKey(afi, safi), forwardingState);
58 public static @NonNull Tables gracefulRestartTable(final @NonNull TablesKey table, final boolean forwardingState) {
59 return new TablesBuilder().withKey(table).setAfiFlags(new AfiFlags(forwardingState)).build();
63 public static @NonNull CParameters gracefulRestartCapability(final Map<TablesKey, Tables> tables,
64 final int restartTime, final boolean localRestarting) {
65 return new CParametersBuilder().addAugmentation(new CParameters1Builder()
66 .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder()
67 .setRestartFlags(new RestartFlags(localRestarting))
68 .setRestartTime(Uint16.valueOf(restartTime))