<exclude>opendaylight/plugins/org.opendaylight.controller.sal.implementation*.jar</exclude>
<exclude>opendaylight/plugins/org.opendaylight.controller.sal.connection.implementation*.jar</exclude>
<exclude>opendaylight/plugins/org.opendaylight.controller.sal.networkconfiguration.implementation*.jar</exclude>
- <exclude>opendaylight/plugins/org.opendaylight.controller.sal-remote*.jar</exclude>
+ <!-- <exclude>opendaylight/plugins/org.opendaylight.controller.sal-remote*.jar</exclude> -->
<exclude>opendaylight/plugins/org.opendaylight.controller.sal-restconf-broker*.jar</exclude>
<exclude>opendaylight/plugins/org.opendaylight.controller.statisticsmanager*.jar</exclude>
<exclude>opendaylight/plugins/org.opendaylight.controller.statistics.northbound*.jar</exclude>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
.setMac(macAddress)
.setFirstSeen(now)
.setLastSeen(now)
- .setKey(new AddressesKey(now));
+ //FIXME: fix to use an internally generated key that is guaranteed to be unique
+ .setKey(new AddressesKey(bigIntFromMacAddr(macAddress)));
List<Addresses> addresses = null;
// Read existing address observations from data tree
readWriteTransaction.commit();
}
}
-}
+ private BigInteger bigIntFromMacAddr(MacAddress addr) {
+ return new BigInteger(addr.getValue().replace(":", ""), 16);
+ }
+}
* store these address observations for each node-connector.
* These packets are returned to the network after the addresses are learned.
*/
-public class AddressObserver implements ArpPacketListener, Ipv4PacketListener, Ipv6PacketListener {
+public class AddressObserver implements ArpPacketListener {//, Ipv4PacketListener, Ipv6PacketListener {
private final static Logger _logger = LoggerFactory.getLogger(AddressObserver.class);
private AddressObservationWriter addressObservationWriter;
* The handler function for IPv4 packets.
* @param packetReceived The incoming packet.
*/
- @Override
+ /* @Override
public void onIpv4PacketReceived(Ipv4PacketReceived packetReceived) {
if(packetReceived==null || packetReceived.getPacketChain()==null) {
return;
packetDispatcher.dispatchPacket(packetReceived.getPayload(), rawPacket.getIngress(), ethernetPacket.getSourceMac(), ethernetPacket.getDestinationMac());
}
}
-
+*/
/**
* The handler function for IPv6 packets.
* @param packetReceived The incoming packet.
*/
- @Override
+ /*@Override
public void onIpv6PacketReceived(Ipv6PacketReceived packetReceived) {
if(packetReceived==null || packetReceived.getPacketChain()==null) {
return;
packetDispatcher.dispatchPacket(packetReceived.getPayload(), rawPacket.getIngress(), ethernetPacket.getSourceMac(), ethernetPacket.getDestinationMac());
}
}
+ */
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.AddressCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.address.tracker.rev140617.address.node.connector.Addresses;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
NodeConnectorRef ncRef = new NodeConnectorRef(
InstanceIdentifier.<Nodes>builder(Nodes.class).<Node, NodeKey>child(Node.class, node.getKey())
.<NodeConnector, NodeConnectorKey>child(NodeConnector.class, nodeConnector.getKey()).toInstance());
- if(nodeConnector.getKey().toString().contains("LOCAL")) {
- controllerSwitchConnectors.put(node.getId().getValue(), ncRef);
- } else {
+ if(!nodeConnector.getKey().toString().contains("LOCAL")) {
nodeConnectorRefs.add(ncRef);
}
-
// Read STP status for this NodeConnector
- try {
- readOnlyTransaction = dataService.newReadOnlyTransaction();
- Optional<NodeConnector> dataObjectOptional =
- readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, (InstanceIdentifier<NodeConnector>) ncRef.getValue()).get();
- if(dataObjectOptional.isPresent()) {
- NodeConnector configNodeConnector = (NodeConnector) dataObjectOptional.get();
- StpStatusAwareNodeConnector saNodeConnector = configNodeConnector.getAugmentation(StpStatusAwareNodeConnector.class);
- if(saNodeConnector != null && StpStatus.Discarding.equals(saNodeConnector.getStatus())) {
- discardingNodeConnectors.add(nodeConnector.getId().getValue());
- }
- }
- } catch(InterruptedException | ExecutionException e) {
- _logger.error("Failed to read nodes from Operational data store.");
- throw new RuntimeException("Failed to read nodes from Operational data store.", e);
+ StpStatusAwareNodeConnector saNodeConnector = nodeConnector.getAugmentation(StpStatusAwareNodeConnector.class);
+ if(saNodeConnector != null && StpStatus.Discarding.equals(saNodeConnector.getStatus())) {
+ discardingNodeConnectors.add(nodeConnector.getId().getValue());
}
}
}
+
switchNodeConnectors.put(node.getId().getValue(), nodeConnectorRefs);
+ NodeConnectorRef ncRef = new NodeConnectorRef(
+ InstanceIdentifier.<Nodes>builder(Nodes.class).<Node, NodeKey>child(Node.class, node.getKey())
+ .<NodeConnector, NodeConnectorKey>child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId(node.getId()+":LOCAL"))).toInstance());
+ _logger.info("Local port for node {} is {}",node.getKey(),ncRef);
+ controllerSwitchConnectors.put(node.getId().getValue(), ncRef);
}
}
refreshData = false;