Refactor the AddressTracker & PacketHandler classes -- separation of functionality...
[l2switch.git] / l2switch-main / src / main / java / org / opendaylight / l2switch / packet / PacketDispatcher.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.l2switch.packet;
10
11 import org.opendaylight.l2switch.flow.FlowWriterService;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.rev140528.ArpPacketListener;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.rev140528.ArpPacketOverEthernetReceived;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.ipv4.rev140528.Ipv4PacketListener;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.ipv4.rev140528.Ipv4PacketOverEthernetReceived;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.*;
21 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 /**
26  * PacketDispatcher sends packets out to the network.
27  */
28 public class PacketDispatcher  {
29
30   private final static Logger _logger = LoggerFactory.getLogger(PacketDispatcher.class);
31   private PacketProcessingService packetProcessingService;
32   private FlowWriterService flowWriterService;
33
34   public void setPacketProcessingService(PacketProcessingService packetProcessingService) {
35     this.packetProcessingService = packetProcessingService;
36   }
37
38   public void setFlowWriterService(FlowWriterService flowWriterService) {
39     this.flowWriterService = flowWriterService;
40   }
41
42   /**
43    * Sends the specified packet on the specified port.
44    * @param payload  The payload to be sent.
45    * @param ingress  The NodeConnector where the payload came from.
46    * @param egress  The NodeConnector where the payload will go.
47    */
48   private void sendPacketOut(byte[] payload, NodeConnectorRef ingress, NodeConnectorRef egress) {
49     if (ingress == null || egress == null)  return;
50     /*InstanceIdentifier<Node> egressNodePath = InstanceIdentifierUtils.getNodePath(egress.getValue());
51     TransmitPacketInput input = new TransmitPacketInputBuilder() //
52       .setPayload(payload) //
53       .setNode(new NodeRef(egressNodePath)) //
54       .setEgress(egress) //
55       .setIngress(ingress) //
56       .build();
57     packetProcessingService.transmitPacket(input);*/
58   }
59
60 }