Bug 5061: Support remote port number configuration 82/44082/1
authorMilos Fabian <milfabia@cisco.com>
Wed, 27 Jul 2016 16:00:13 +0000 (18:00 +0200)
committerMilos Fabian <milfabia@cisco.com>
Tue, 16 Aug 2016 16:05:46 +0000 (16:05 +0000)
Augment OpenConfig Neighbor transport configuraton to
support remote port configuration (default 179).

Change-Id: I0ab2f34aa5faa522d343a168e7c164696b31177f
Signed-off-by: Milos Fabian <milfabia@cisco.com>
(cherry picked from commit 75396514e3d8c9088c76f0d3aaa5a537424f83a0)

bgp/openconfig-api/src/main/yang/bgp-openconfig-extensions.yang
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/BGPOpenConfigMappingServiceImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtil.java

index 6b6390d358c6854a610f0ef0570db1f4fd72c733..c767c5ef831047ed81201f597b5846917e9f7660 100644 (file)
@@ -6,6 +6,7 @@ module bgp-openconfig-extensions {
     import openconfig-bgp-types { prefix bgp-types; }
     import openconfig-network-instance { prefix netinst; }
     import openconfig-bgp { prefix openconfig-bgp; }
+    import ietf-inet-types { prefix inet; }
 
     organization "Cisco Systems, Inc.";
     contact "Milos Fabian <milfabia@cisco.com>";
@@ -65,6 +66,16 @@ module bgp-openconfig-extensions {
         reference "https://tools.ietf.org/html/rfc7752";
     }
 
+    grouping transport-config {
+        leaf remote-port {
+            type inet:port-number;
+            default 179;
+            description
+                "Remote port being used by the peer for the TCP session
+                 supporting the BGP session";
+        }
+    }
+
     augment /netinst:network-instances/netinst:network-instance/netinst:protocols/netinst:protocol {
         uses openconfig-bgp:bgp-top {
             augment bgp/neighbors/neighbor/afi-safis/afi-safi {
@@ -73,6 +84,9 @@ module bgp-openconfig-extensions {
             augment bgp/global/afi-safis/afi-safi {
                 uses openconfig-bgp:bgp-neighbor-add-paths_config;
             }
+            augment bgp/neighbors/neighbor/transport/config {
+                uses transport-config;
+            }
         }
     }
 
index 1d11044c8a7e4282016b72b52a450f95bafe1771..8bbd14001cc4a43a8d2290922836973756ef7fe5 100644 (file)
@@ -177,6 +177,9 @@ public final class BGPOpenConfigMappingServiceImpl implements BGPOpenConfigMappi
         neighborBuilder.setTransport(new TransportBuilder().setConfig(
                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.transport.ConfigBuilder()
                 .setPassiveMode(!isActive)
+                .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.Config1.class,
+                        new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.Config1Builder()
+                .setRemotePort(portNumber).build())
                 .build()).build());
         neighborBuilder.setConfig(
                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.ConfigBuilder()
index 19279574d999d1650c8b96cc2395761a6a14160b..7159c704b41c9f5ad4996c4d126618d5dfb2f4a7 100644 (file)
@@ -32,7 +32,6 @@ import org.opendaylight.protocol.concepts.KeyMapping;
 import org.opendaylight.protocol.util.Ipv4Util;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParametersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.OptionalCapabilities;
@@ -52,9 +51,6 @@ import org.slf4j.LoggerFactory;
 
 public class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
 
-    //FIXME make configurable
-    private static final PortNumber PORT = new PortNumber(179);
-
     private static final Logger LOG = LoggerFactory.getLogger(BgpPeer.class);
 
     private final RpcProviderRegistry rpcRegistry;
@@ -85,7 +81,7 @@ public class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
         this.peerRegistry.addPeer(neighborAddress, this.bgpPeer, prefs);
         if (OpenConfigMappingUtil.isActive(neighbor)) {
             this.connection = rib.getDispatcher().createReconnectingClient(
-                    Ipv4Util.toInetSocketAddress(neighborAddress, PORT), this.peerRegistry,
+                    Ipv4Util.toInetSocketAddress(neighborAddress, OpenConfigMappingUtil.getPort(neighbor)), this.peerRegistry,
                     OpenConfigMappingUtil.getRetryTimer(neighbor), Optional.fromNullable(key));
         }
 
index 8632f3506a7015813f3c7b420508b87d8198479d..4ce3f9bb9d07b2a66fbc56e5a99b26a8b3d96c70 100644 (file)
@@ -19,6 +19,8 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.t
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.Neighbors;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.network.instance.protocols.Protocol;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.Config1;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 final class OpenConfigMappingUtil {
@@ -68,4 +70,8 @@ final class OpenConfigMappingUtil {
         return Ipv4Util.toStringIP(rootIdentifier.firstKeyOf(Neighbor.class).getNeighborAddress());
     }
 
+    public static PortNumber getPort(final Neighbor neighbor) {
+        return neighbor.getTransport().getConfig().getAugmentation(Config1.class).getRemotePort();
+    }
+
 }