blob: b261d4141a565afb8432994d3cb0c10bbce7fd6d [file] [log] [blame]
Yotam Harchold7b84202013-07-26 16:08:10 -07001package org.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4import org.openflow.exceptions.OFParseError;
5
6public enum IpEcn implements OFValueType {
7 ECN_00((byte)0),
8 ECN_01((byte)1),
9 ECN_10((byte)2),
10 ECN_11((byte)3);
11
12 static final int LENGTH = 1;
13
14 private final byte ecn;
15
16 private IpEcn(byte ecn) {
17 this.ecn = ecn;
18 }
19
20 public static IpEcn of(byte ecn) {
21 switch (ecn) {
22 case 0:
23 return ECN_00;
24 case 1:
25 return ECN_01;
26 case 2:
27 return ECN_10;
28 case 3:
29 return ECN_11;
30 default:
31 throw new IllegalArgumentException("Illegal IP ECN value: " + ecn);
32 }
33 }
34
35 @Override
36 public int getLength() {
37 return LENGTH;
38 }
39
40 @Override
41 public String toString() {
42 return (ecn < 3 ? "0" : "") + Integer.toBinaryString(ecn);
43 }
44
45 public void writeByte(ChannelBuffer c) {
46 c.writeByte(this.ecn);
47 }
48
49 public static IpEcn readByte(ChannelBuffer c) throws OFParseError {
50 return IpEcn.of((byte)(c.readUnsignedByte()));
51 }
52
53}