blob: 9c0a24936b9f023ca3ccb1523755154efb46c3d7 [file] [log] [blame]
Jonathan Hartaa380972014-04-03 10:24:46 -07001package net.onrc.onos.core.intent;
Brian O'Connor7f8e3012014-02-15 23:59:29 -08002
Brian O'Connorc67f9fa2014-08-07 18:17:46 -07003import org.projectfloodlight.openflow.protocol.OFFactory;
4import org.projectfloodlight.openflow.protocol.action.OFAction;
5import org.projectfloodlight.openflow.types.OFPort;
6
Brian O'Connor7f8e3012014-02-15 23:59:29 -08007/**
Brian O'Connora84723c2014-06-13 00:26:49 -07008 * A class to represent the OpenFlow forwarding action.
Brian O'Connor7f8e3012014-02-15 23:59:29 -08009 */
10
11class ForwardAction extends Action {
Ray Milkey269ffb92014-04-03 14:43:30 -070012 protected long dstPort;
Brian O'Connor67c6e662014-02-17 15:20:44 -080013
Brian O'Connora84723c2014-06-13 00:26:49 -070014 /**
15 * Constructor.
16 *
17 * @param dstPort the destination port to forward packets
18 */
Ray Milkey269ffb92014-04-03 14:43:30 -070019 public ForwardAction(long dstPort) {
20 this.dstPort = dstPort;
21 }
Brian O'Connor6dc44e92014-02-24 21:23:46 -080022
Brian O'Connora84723c2014-06-13 00:26:49 -070023 /**
24 * Returns a String representation of this ForwardAction.
25 *
26 * @return the destination port as a String
27 */
Yuta HIGUCHIfb564502014-06-16 21:29:00 -070028 @Override
Ray Milkey269ffb92014-04-03 14:43:30 -070029 public String toString() {
30 return Long.toString(dstPort);
31 }
32
Brian O'Connorc67f9fa2014-08-07 18:17:46 -070033 @Override
34 public OFAction getOFAction(OFFactory factory) {
35 return factory.actions().output(OFPort.of((int) dstPort), Short.MAX_VALUE);
36 }
37
Brian O'Connora84723c2014-06-13 00:26:49 -070038 /**
39 * A simple hash function that just used the destination port.
40 *
41 * @return hashcode
42 */
Yuta HIGUCHIfb564502014-06-16 21:29:00 -070043 @Override
Ray Milkey269ffb92014-04-03 14:43:30 -070044 public int hashCode() {
45 return (int) dstPort;
46 }
47
Brian O'Connora84723c2014-06-13 00:26:49 -070048 /**
49 * Objects are equal if they share a destination port.
50 *
Yuta HIGUCHI441585c2014-06-16 21:49:58 -070051 * @param o another object to compare to this
Brian O'Connora84723c2014-06-13 00:26:49 -070052 * @return true if equal, false otherwise
53 */
Yuta HIGUCHIfb564502014-06-16 21:29:00 -070054 @Override
Ray Milkey269ffb92014-04-03 14:43:30 -070055 public boolean equals(Object o) {
56 if (!(o instanceof ForwardAction)) {
57 return false;
58 }
59 ForwardAction action = (ForwardAction) o;
60 return this.dstPort == action.dstPort;
61 }
Brian O'Connor6dc44e92014-02-24 21:23:46 -080062}