CORD-1015 CPR bridging alternative

- Remove workaround introduced in gerrit #12604
- Add ability to respond to IPv6 solicited-node multicast address of gateway IPs

Change-Id: I7d1c9840a51e35d471303a8f723245a5bbc809ff
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index 3bdde77..02623e2 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -35,8 +35,6 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.event.Event;
-import org.onosproject.incubator.net.config.basics.ConfigException;
-import org.onosproject.incubator.net.config.basics.InterfaceConfig;
 import org.onosproject.incubator.net.config.basics.McastConfig;
 import org.onosproject.incubator.net.intf.Interface;
 import org.onosproject.incubator.net.intf.InterfaceService;
@@ -77,7 +75,6 @@
 import org.onosproject.net.packet.PacketService;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.topology.TopologyService;
-import org.onosproject.routing.config.RouterConfig;
 import org.onosproject.segmentrouting.config.DeviceConfigNotFoundException;
 import org.onosproject.segmentrouting.config.DeviceConfiguration;
 import org.onosproject.segmentrouting.config.PwaasConfig;
@@ -725,14 +722,8 @@
                             icmp6Packet.getIcmpType() == ICMP6.ECHO_REPLY) {
                         icmpHandler.processIcmpv6(ethernet, pkt.receivedFrom());
                     } else {
-                        // XXX Neigbour hacking, to handle the ICMPv6 packet
-                        // not under our control
-                        if (icmpHandler.handleUPstreamPackets(context)) {
-                            log.debug("Rcvd pktin from UpStream: {}", ipv6Packet);
-                        } else {
-                            log.debug("Received ICMPv6 0x{} - not handled",
-                                     Integer.toHexString(icmp6Packet.getIcmpType() & 0xff));
-                        }
+                        log.debug("Received ICMPv6 0x{} - not handled",
+                                Integer.toHexString(icmp6Packet.getIcmpType() & 0xff));
                     }
                 } else {
                    // NOTE: We don't support IP learning at this moment so this
@@ -1157,35 +1148,6 @@
                     default:
                         break;
                 }
-                // XXX Neighbour hacking. This method is looking for
-                // the Internet-Router interface. In order to retrieve
-                // the upstream port.
-            } else if (event.configClass().equals(InterfaceConfig.class)) {
-                switch (event.type()) {
-                    case CONFIG_ADDED:
-                    case CONFIG_UPDATED:
-                        updateUPstreamCP();
-                    case CONFIG_REGISTERED:
-                    case CONFIG_UNREGISTERED:
-                    case CONFIG_REMOVED:
-                        break;
-                    default:
-                        break;
-                }
-                // XXX Neighbour hacking. This method is looking for
-                // the vrouter port.
-            } else if (event.configClass().equals(RouterConfig.class)) {
-                switch (event.type()) {
-                    case CONFIG_ADDED:
-                    case CONFIG_UPDATED:
-                        updateVRouterCP(event);
-                    case CONFIG_REGISTERED:
-                    case CONFIG_UNREGISTERED:
-                    case CONFIG_REMOVED:
-                        break;
-                    default:
-                        break;
-                }
             } else if (event.configClass().equals(PwaasConfig.class)) {
                 checkState(l2TunnelHandler != null, "L2TunnelHandler is not initialized");
                 switch (event.type()) {
@@ -1205,50 +1167,6 @@
         }
     }
 
-    /////////////////////////////////////////////////////////////////
-    //    XXX Neighbour hacking, temporary workaround will be      //
-    //    removed as soon as possible, when bridging based         //
-    //    control plane redirect is implemented.                   //
-    /////////////////////////////////////////////////////////////////
-
-    // XXX Neighbour hacking. To store upstream connect
-    // point and vRouter connect point
-    ConnectPoint upstreamCP = null;
-    ConnectPoint vRouterCP = null;
-
-    // XXX Neighbour hacking. To update the Upstream CP
-    public void updateUPstreamCP() {
-        Set<ConnectPoint> portSubjects = cfgService.getSubjects(ConnectPoint.class, InterfaceConfig.class);
-        upstreamCP = null;
-        portSubjects.stream().forEach(subject -> {
-            InterfaceConfig config = cfgService.getConfig(subject, InterfaceConfig.class);
-            Set<Interface> networkInterfaces;
-            try {
-                networkInterfaces = config.getInterfaces();
-            } catch (ConfigException e) {
-                log.error("Error loading port configuration");
-                return;
-            }
-            networkInterfaces.forEach(networkInterface -> {
-                if (networkInterface.name().equals("internet-router")) {
-                    upstreamCP = subject;
-                }
-            });
-        });
-
-    }
-
-    // XXX Neighbour hacking. To update the Upstream CP
-    public void updateVRouterCP(NetworkConfigEvent event) {
-        RouterConfig config = (RouterConfig) event.config().get();
-        if (config == null) {
-            log.warn("Router config not available");
-            vRouterCP = null;
-            return;
-        }
-        vRouterCP = config.getControlPlaneConnectPoint();
-    }
-
     private class InternalHostListener implements HostListener {
         @Override
         public void event(HostEvent event) {