Skip to content
Snippets Groups Projects
Commit 24d259e9 authored by Andrew Ferguson's avatar Andrew Ferguson
Browse files

Add support for max-rate OF extension as implemented by Indigo1 firmware

parent 3e41d2f1
No related branches found
No related tags found
No related merge requests found
...@@ -21,11 +21,12 @@ import org.openflow.util.U16; ...@@ -21,11 +21,12 @@ import org.openflow.util.U16;
public class OFQueueProp { public class OFQueueProp {
private int NONE_MINIMUM_LENGTH = 8; private int NONE_MINIMUM_LENGTH = 8;
private int MIN_RATE_MINIMUM_LENGTH = 16; private int RATE_MINIMUM_LENGTH = 16;
public enum OFQueuePropType { public enum OFQueuePropType {
OFPQT_NONE (0), OFPQT_NONE (0),
OFPQT_MIN_RATE (1); OFPQT_MIN_RATE (1),
OFPQT_MAX_RATE (2);
protected int value; protected int value;
...@@ -46,6 +47,8 @@ public class OFQueueProp { ...@@ -46,6 +47,8 @@ public class OFQueueProp {
return OFPQT_NONE; return OFPQT_NONE;
case 1: case 1:
return OFPQT_MIN_RATE; return OFPQT_MIN_RATE;
case 2:
return OFPQT_MAX_RATE;
} }
return null; return null;
} }
...@@ -53,7 +56,7 @@ public class OFQueueProp { ...@@ -53,7 +56,7 @@ public class OFQueueProp {
protected OFQueuePropType type; protected OFQueuePropType type;
protected short length; protected short length;
protected short rate = -1; // not valid unless type == OFPQT_MIN_RATE protected short rate = -1; // not valid if type == OFPQT_NONE
public OFQueueProp() { public OFQueueProp() {
this.type = OFQueuePropType.OFPQT_NONE; this.type = OFQueuePropType.OFPQT_NONE;
...@@ -78,7 +81,10 @@ public class OFQueueProp { ...@@ -78,7 +81,10 @@ public class OFQueueProp {
this.length = U16.t(NONE_MINIMUM_LENGTH); this.length = U16.t(NONE_MINIMUM_LENGTH);
break; break;
case OFPQT_MIN_RATE: case OFPQT_MIN_RATE:
this.length = U16.t(MIN_RATE_MINIMUM_LENGTH); this.length = U16.t(RATE_MINIMUM_LENGTH);
break;
case OFPQT_MAX_RATE:
this.length = U16.t(RATE_MINIMUM_LENGTH);
break; break;
} }
} }
...@@ -109,8 +115,9 @@ public class OFQueueProp { ...@@ -109,8 +115,9 @@ public class OFQueueProp {
this.length = data.readShort(); this.length = data.readShort();
data.readInt(); // pad data.readInt(); // pad
if (this.type == OFQueuePropType.OFPQT_MIN_RATE) { if (this.type == OFQueuePropType.OFPQT_MIN_RATE ||
assert(this.length == MIN_RATE_MINIMUM_LENGTH); this.type == OFQueuePropType.OFPQT_MAX_RATE) {
assert(this.length == RATE_MINIMUM_LENGTH);
this.rate = data.readShort(); this.rate = data.readShort();
data.readInt(); // pad data.readInt(); // pad
...@@ -125,7 +132,8 @@ public class OFQueueProp { ...@@ -125,7 +132,8 @@ public class OFQueueProp {
data.writeShort(this.length); data.writeShort(this.length);
data.writeInt(0); // pad data.writeInt(0); // pad
if (this.type == OFQueuePropType.OFPQT_MIN_RATE) { if (this.type == OFQueuePropType.OFPQT_MIN_RATE ||
this.type == OFQueuePropType.OFPQT_MAX_RATE) {
data.writeShort(this.rate); data.writeShort(this.rate);
data.writeInt(0); // pad data.writeInt(0); // pad
data.writeShort(0); // pad data.writeShort(0); // pad
...@@ -156,7 +164,8 @@ public class OFQueueProp { ...@@ -156,7 +164,8 @@ public class OFQueueProp {
if (type != other.type) { if (type != other.type) {
return false; return false;
} }
if (type == OFQueuePropType.OFPQT_MIN_RATE) { if (type == OFQueuePropType.OFPQT_MIN_RATE ||
type == OFQueuePropType.OFPQT_MAX_RATE) {
if (rate != other.rate) { if (rate != other.rate) {
return false; return false;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment