blob: 27596b71f6cfd80b718ac3ef650cc933e99845ff [file] [log] [blame]
package org.projectfloodlight.openflow.types;
import org.jboss.netty.buffer.ChannelBuffer;
import org.projectfloodlight.openflow.exceptions.OFParseError;
import com.google.common.hash.PrimitiveSink;
public enum IpDscp implements OFValueType<IpDscp> {
DSCP_0((byte)0),
DSCP_1((byte)1),
DSCP_2((byte)2),
DSCP_3((byte)3),
DSCP_4((byte)4),
DSCP_5((byte)5),
DSCP_6((byte)6),
DSCP_7((byte)7),
DSCP_8((byte)8),
DSCP_9((byte)9),
DSCP_10((byte)10),
DSCP_11((byte)11),
DSCP_12((byte)12),
DSCP_13((byte)13),
DSCP_14((byte)14),
DSCP_15((byte)15),
DSCP_16((byte)16),
DSCP_17((byte)17),
DSCP_18((byte)18),
DSCP_19((byte)19),
DSCP_20((byte)20),
DSCP_21((byte)21),
DSCP_22((byte)22),
DSCP_23((byte)23),
DSCP_24((byte)24),
DSCP_25((byte)25),
DSCP_26((byte)26),
DSCP_27((byte)27),
DSCP_28((byte)28),
DSCP_29((byte)29),
DSCP_30((byte)30),
DSCP_31((byte)31),
DSCP_32((byte)32),
DSCP_33((byte)33),
DSCP_34((byte)34),
DSCP_35((byte)35),
DSCP_36((byte)36),
DSCP_37((byte)37),
DSCP_38((byte)38),
DSCP_39((byte)39),
DSCP_40((byte)40),
DSCP_41((byte)41),
DSCP_42((byte)42),
DSCP_43((byte)43),
DSCP_44((byte)44),
DSCP_45((byte)45),
DSCP_46((byte)46),
DSCP_47((byte)47),
DSCP_48((byte)48),
DSCP_49((byte)49),
DSCP_50((byte)50),
DSCP_51((byte)51),
DSCP_52((byte)52),
DSCP_53((byte)53),
DSCP_54((byte)54),
DSCP_55((byte)55),
DSCP_56((byte)56),
DSCP_57((byte)57),
DSCP_58((byte)58),
DSCP_59((byte)59),
DSCP_60((byte)60),
DSCP_61((byte)61),
DSCP_62((byte)62),
DSCP_63((byte)63),
DSCP_NO_MASK((byte)0xFF);
static final int LENGTH = 1;
public static final IpDscp NONE = DSCP_0;
public static final IpDscp NO_MASK = DSCP_NO_MASK;
public static final IpDscp FULL_MASK = DSCP_0;
private final byte dscp;
private IpDscp(byte dscp) {
this.dscp = dscp;
}
public static IpDscp of(byte dscp) {
switch (dscp) {
case 0:
return DSCP_0;
case 1:
return DSCP_1;
case 2:
return DSCP_2;
case 3:
return DSCP_3;
case 4:
return DSCP_4;
case 5:
return DSCP_5;
case 6:
return DSCP_6;
case 7:
return DSCP_7;
case 8:
return DSCP_8;
case 9:
return DSCP_9;
case 10:
return DSCP_10;
case 11:
return DSCP_11;
case 12:
return DSCP_12;
case 13:
return DSCP_13;
case 14:
return DSCP_14;
case 15:
return DSCP_15;
case 16:
return DSCP_16;
case 17:
return DSCP_17;
case 18:
return DSCP_18;
case 19:
return DSCP_19;
case 20:
return DSCP_20;
case 21:
return DSCP_21;
case 22:
return DSCP_22;
case 23:
return DSCP_23;
case 24:
return DSCP_24;
case 25:
return DSCP_25;
case 26:
return DSCP_26;
case 27:
return DSCP_27;
case 28:
return DSCP_28;
case 29:
return DSCP_29;
case 30:
return DSCP_30;
case 31:
return DSCP_31;
case 32:
return DSCP_32;
case 33:
return DSCP_33;
case 34:
return DSCP_34;
case 35:
return DSCP_35;
case 36:
return DSCP_36;
case 37:
return DSCP_37;
case 38:
return DSCP_38;
case 39:
return DSCP_39;
case 40:
return DSCP_40;
case 41:
return DSCP_41;
case 42:
return DSCP_42;
case 43:
return DSCP_43;
case 44:
return DSCP_44;
case 45:
return DSCP_45;
case 46:
return DSCP_46;
case 47:
return DSCP_47;
case 48:
return DSCP_48;
case 49:
return DSCP_49;
case 50:
return DSCP_50;
case 51:
return DSCP_51;
case 52:
return DSCP_52;
case 53:
return DSCP_53;
case 54:
return DSCP_54;
case 55:
return DSCP_55;
case 56:
return DSCP_56;
case 57:
return DSCP_57;
case 58:
return DSCP_58;
case 59:
return DSCP_59;
case 60:
return DSCP_60;
case 61:
return DSCP_61;
case 62:
return DSCP_62;
case 63:
return DSCP_63;
default:
throw new IllegalArgumentException("Illegal IPv4 DSCP value: " + dscp);
}
}
@Override
public int getLength() {
return LENGTH;
}
@Override
public String toString() {
return Integer.toHexString(dscp);
}
public void writeByte(ChannelBuffer c) {
c.writeByte(this.dscp);
}
public static IpDscp readByte(ChannelBuffer c) throws OFParseError {
return IpDscp.of((byte)(c.readUnsignedByte()));
}
@Override
public IpDscp applyMask(IpDscp mask) {
return IpDscp.of((byte)(this.dscp & mask.dscp));
}
public byte getDscpValue() {
return dscp;
}
@Override
public void putTo(PrimitiveSink sink) {
sink.putByte(dscp);
}
}