blob: ec78315f7620752234ffeffd44ffa2f97589c9b8 [file] [log] [blame]
Yotam Harcholf3f11152013-09-05 16:47:16 -07001package org.projectfloodlight.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4import org.projectfloodlight.openflow.exceptions.OFParseError;
5
6public enum IpDscp implements OFValueType<IpDscp> {
7 DSCP_0((byte)0),
8 DSCP_1((byte)1),
9 DSCP_2((byte)2),
10 DSCP_3((byte)3),
11 DSCP_4((byte)4),
12 DSCP_5((byte)5),
13 DSCP_6((byte)6),
14 DSCP_7((byte)7),
15 DSCP_8((byte)8),
16 DSCP_9((byte)9),
17 DSCP_10((byte)10),
18 DSCP_11((byte)11),
19 DSCP_12((byte)12),
20 DSCP_13((byte)13),
21 DSCP_14((byte)14),
22 DSCP_15((byte)15),
23 DSCP_16((byte)16),
24 DSCP_17((byte)17),
25 DSCP_18((byte)18),
26 DSCP_19((byte)19),
27 DSCP_20((byte)20),
28 DSCP_21((byte)21),
29 DSCP_22((byte)22),
30 DSCP_23((byte)23),
31 DSCP_24((byte)24),
32 DSCP_25((byte)25),
33 DSCP_26((byte)26),
34 DSCP_27((byte)27),
35 DSCP_28((byte)28),
36 DSCP_29((byte)29),
37 DSCP_30((byte)30),
38 DSCP_31((byte)31),
39 DSCP_32((byte)32),
40 DSCP_33((byte)33),
41 DSCP_34((byte)34),
42 DSCP_35((byte)35),
43 DSCP_36((byte)36),
44 DSCP_37((byte)37),
45 DSCP_38((byte)38),
46 DSCP_39((byte)39),
47 DSCP_40((byte)40),
48 DSCP_41((byte)41),
49 DSCP_42((byte)42),
50 DSCP_43((byte)43),
51 DSCP_44((byte)44),
52 DSCP_45((byte)45),
53 DSCP_46((byte)46),
54 DSCP_47((byte)47),
55 DSCP_48((byte)48),
56 DSCP_49((byte)49),
57 DSCP_50((byte)50),
58 DSCP_51((byte)51),
59 DSCP_52((byte)52),
60 DSCP_53((byte)53),
61 DSCP_54((byte)54),
62 DSCP_55((byte)55),
63 DSCP_56((byte)56),
64 DSCP_57((byte)57),
65 DSCP_58((byte)58),
66 DSCP_59((byte)59),
67 DSCP_60((byte)60),
68 DSCP_61((byte)61),
69 DSCP_62((byte)62),
70 DSCP_63((byte)63),
71 DSCP_NO_MASK((byte)0xFF);
72
73 static final int LENGTH = 1;
74
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070075 public static final IpDscp NONE = DSCP_0;
76
Yotam Harcholf3f11152013-09-05 16:47:16 -070077 public static final IpDscp NO_MASK = DSCP_NO_MASK;
78 public static final IpDscp FULL_MASK = DSCP_0;
79
80 private final byte dscp;
81
82 private IpDscp(byte dscp) {
83 this.dscp = dscp;
84 }
85
86 public static IpDscp of(byte dscp) {
87 switch (dscp) {
88 case 0:
89 return DSCP_0;
90 case 1:
91 return DSCP_1;
92 case 2:
93 return DSCP_2;
94 case 3:
95 return DSCP_3;
96 case 4:
97 return DSCP_4;
98 case 5:
99 return DSCP_5;
100 case 6:
101 return DSCP_6;
102 case 7:
103 return DSCP_7;
104 case 8:
105 return DSCP_8;
106 case 9:
107 return DSCP_9;
108 case 10:
109 return DSCP_10;
110 case 11:
111 return DSCP_11;
112 case 12:
113 return DSCP_12;
114 case 13:
115 return DSCP_13;
116 case 14:
117 return DSCP_14;
118 case 15:
119 return DSCP_15;
120 case 16:
121 return DSCP_16;
122 case 17:
123 return DSCP_17;
124 case 18:
125 return DSCP_18;
126 case 19:
127 return DSCP_19;
128 case 20:
129 return DSCP_20;
130 case 21:
131 return DSCP_21;
132 case 22:
133 return DSCP_22;
134 case 23:
135 return DSCP_23;
136 case 24:
137 return DSCP_24;
138 case 25:
139 return DSCP_25;
140 case 26:
141 return DSCP_26;
142 case 27:
143 return DSCP_27;
144 case 28:
145 return DSCP_28;
146 case 29:
147 return DSCP_29;
148 case 30:
149 return DSCP_30;
150 case 31:
151 return DSCP_31;
152 case 32:
153 return DSCP_32;
154 case 33:
155 return DSCP_33;
156 case 34:
157 return DSCP_34;
158 case 35:
159 return DSCP_35;
160 case 36:
161 return DSCP_36;
162 case 37:
163 return DSCP_37;
164 case 38:
165 return DSCP_38;
166 case 39:
167 return DSCP_39;
168 case 40:
169 return DSCP_40;
170 case 41:
171 return DSCP_41;
172 case 42:
173 return DSCP_42;
174 case 43:
175 return DSCP_43;
176 case 44:
177 return DSCP_44;
178 case 45:
179 return DSCP_45;
180 case 46:
181 return DSCP_46;
182 case 47:
183 return DSCP_47;
184 case 48:
185 return DSCP_48;
186 case 49:
187 return DSCP_49;
188 case 50:
189 return DSCP_50;
190 case 51:
191 return DSCP_51;
192 case 52:
193 return DSCP_52;
194 case 53:
195 return DSCP_53;
196 case 54:
197 return DSCP_54;
198 case 55:
199 return DSCP_55;
200 case 56:
201 return DSCP_56;
202 case 57:
203 return DSCP_57;
204 case 58:
205 return DSCP_58;
206 case 59:
207 return DSCP_59;
208 case 60:
209 return DSCP_60;
210 case 61:
211 return DSCP_61;
212 case 62:
213 return DSCP_62;
214 case 63:
215 return DSCP_63;
216 default:
217 throw new IllegalArgumentException("Illegal IPv4 DSCP value: " + dscp);
218 }
219 }
220
221 @Override
222 public int getLength() {
223 return LENGTH;
224 }
225
226 @Override
227 public String toString() {
228 return Integer.toHexString(dscp);
229 }
230
231 public void writeByte(ChannelBuffer c) {
232 c.writeByte(this.dscp);
233 }
234
235 public static IpDscp readByte(ChannelBuffer c) throws OFParseError {
236 return IpDscp.of((byte)(c.readUnsignedByte()));
237 }
238
239 @Override
240 public IpDscp applyMask(IpDscp mask) {
241 return IpDscp.of((byte)(this.dscp & mask.dscp));
242 }
243
244 public byte getDscpValue() {
245 return dscp;
246 }
247}