blob: c2097f22006bb2504bc51cf5fd7c405b77af8ab2 [file] [log] [blame]
package net.onrc.onos.apps.proxyarp;
// TODO This class is too generic to be handled by ProxyArpService.
// TODO The generic broadcast packet shouldn't contain an IP address which is
// only for ARP packets.
/**
* Notification to all ONOS instances to broadcast this packet out the edge of
* the network. The edge is defined as any port that doesn't have a link to
* another switch. The one exception is the port that the packet was received
* on.
*
*/
public class BroadcastPacketOutNotification extends PacketOutNotification {
private static final long serialVersionUID = 1L;
private final int address;
private final long inSwitch;
private final short inPort;
protected BroadcastPacketOutNotification() {
super();
this.address = -1;
this.inSwitch = -1;
this.inPort = -1;
}
/**
* Class constructor.
*
* @param packet
* packet data to send in the packet-out
* @param address
* target IP address if the packet is an ARP packet
* @param inSwitch
* dpid of the switch the packet was received on
* @param inPort
* port number of the receiving port
*/
public BroadcastPacketOutNotification(byte[] packet, int address,
long inSwitch, short inPort) {
super(packet);
this.address = address;
this.inSwitch = inSwitch;
this.inPort = inPort;
}
/**
* Get the dpid of the switch the packet was received on.
*
* @return receiving switch dpid
*/
public long getInSwitch() {
return inSwitch;
}
/**
* Get the port number of the port the packet was received on.
*
* @return receiving port number
*/
public short getInPort() {
return inPort;
}
/**
* Get the target IP address if the packet is an ARP packet.
*
* @return the target IP address for ARP packets, or null if the packet is
* not an ARP packet
*/
public int getTargetAddress() {
return address;
}
}