blob: a6544c99f5c75823f7a9134a9465abb31a4fb89c [file] [log] [blame]
Yotam Harcholf3f11152013-09-05 16:47:16 -07001package org.projectfloodlight.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4
5/**
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -07006 *
Yotam Harcholf3f11152013-09-05 16:47:16 -07007 * @author Yotam Harchol (yotam.harchol@bigswitch.com)
8 *
9 */
10public class ICMPv4Code implements OFValueType<ICMPv4Code> {
11
12 final static int LENGTH = 1;
13 final static short MAX_CODE = 0xFF;
14
15 private final short code;
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070016
17 private static final short NONE_VAL = 0;
18 public static final ICMPv4Code NONE = new ICMPv4Code(NONE_VAL);
19
Yotam Harcholf3f11152013-09-05 16:47:16 -070020 public static final ICMPv4Code NO_MASK = new ICMPv4Code((short)0xFFFF);
21 public static final ICMPv4Code FULL_MASK = new ICMPv4Code((short)0x0000);
22
23 private ICMPv4Code(short code) {
24 this.code = code;
25 }
26
27 public static ICMPv4Code of(short code) {
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070028 if(code == NONE_VAL)
29 return NONE;
30
Yotam Harcholf3f11152013-09-05 16:47:16 -070031 if (code > MAX_CODE || code < 0)
32 throw new IllegalArgumentException("Illegal ICMPv4 code: " + code);
33 return new ICMPv4Code(code);
34 }
35
36 @Override
37 public int getLength() {
38 return LENGTH;
39 }
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070040
Yotam Harcholf3f11152013-09-05 16:47:16 -070041 public short getCode() {
42 return code;
43 }
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070044
Yotam Harcholf3f11152013-09-05 16:47:16 -070045 public void writeByte(ChannelBuffer c) {
46 c.writeByte(this.code);
47 }
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070048
Yotam Harcholf3f11152013-09-05 16:47:16 -070049 public static ICMPv4Code readByte(ChannelBuffer c) {
50 return ICMPv4Code.of(c.readUnsignedByte());
51 }
52
53 @Override
54 public ICMPv4Code applyMask(ICMPv4Code mask) {
55 return ICMPv4Code.of((short)(this.code & mask.code));
56 }
57
Andreas Wundsamb75c4ad2013-09-23 14:45:35 -070058
Yotam Harcholf3f11152013-09-05 16:47:16 -070059}