| package net.floodlightcontroller.util; |
| |
| import org.codehaus.jackson.annotate.JsonProperty; |
| |
| /** |
| * The class representing a network port of a switch. |
| */ |
| |
| public class Port { |
| /** |
| * Special port values. |
| * |
| * Those values are taken as-is from the OpenFlow-v1.0.0 specification |
| * (pp 18-19). |
| */ |
| public enum PortValues { |
| /* Maximum number of physical switch ports. */ |
| PORT_MAX ((short)0xff00), |
| |
| /* Fake output "ports". */ |
| |
| /* Send the packet out the input port. This |
| virtual port must be explicitly used |
| in order to send back out of the input |
| port. */ |
| PORT_IN_PORT ((short)0xfff8), |
| |
| /* Perform actions in flow table. |
| NB: This can only be the destination |
| port for packet-out messages. */ |
| PORT_TABLE ((short)0xfff9), |
| |
| /* Process with normal L2/L3 switching. */ |
| PORT_NORMAL ((short)0xfffa), |
| |
| /* All physical ports except input port and |
| those disabled by STP. */ |
| PORT_FLOOD ((short)0xfffb), |
| |
| /* All physical ports except input port. */ |
| PORT_ALL ((short)0xfffc), |
| |
| /* Send to controller. */ |
| PORT_CONTROLLER ((short)0xfffd), |
| |
| /* Local openflow "port". */ |
| PORT_LOCAL ((short)0xfffe), |
| |
| /* Not associated with a physical port. */ |
| PORT_NONE ((short)0xffff); |
| |
| private final short value; // The value |
| |
| /** |
| * Constructor for a given value. |
| * |
| * @param value the value to use for the initialization. |
| */ |
| private PortValues(short value) { |
| this.value = value; |
| } |
| |
| /** |
| * Get the value as a short integer. |
| * |
| * @return the value as a short integer. |
| */ |
| private short value() { return this.value; } |
| } |
| |
| private short value; |
| |
| /** |
| * Default constructor. |
| */ |
| public Port() { |
| this.value = 0; |
| } |
| |
| /** |
| * Constructor from another entry. |
| * |
| * @param other the other entry to use. |
| */ |
| public Port(Port other) { |
| this.value = other.value(); |
| } |
| |
| /** |
| * Constructor from a short integer value. |
| * |
| * @param value the value to use. |
| */ |
| public Port(short value) { |
| this.value = value; |
| } |
| |
| /** |
| * Constructor from a PortValues enum value. |
| * |
| * @param value the value to use. |
| */ |
| public Port(PortValues value) { |
| this.value = value.value(); |
| } |
| |
| /** |
| * Get the value of the port. |
| * |
| * @return the value of the port. |
| */ |
| @JsonProperty("value") |
| public short value() { return value; } |
| |
| /** |
| * Set the value of the port. |
| * |
| * @param value the value to set. |
| */ |
| @JsonProperty("value") |
| public void setValue(short value) { |
| this.value = value; |
| } |
| |
| /** |
| * Convert the port value to a string. |
| * |
| * @return the port value as a string. |
| */ |
| @Override |
| public String toString() { |
| return Short.toString(this.value); |
| } |
| } |