blob: 42cc5be89b3d3099f68020f0f9d91a6d0ed75203 [file] [log] [blame]
Yotam Harchold7b84202013-07-26 16:08:10 -07001package org.openflow.types;
2
3import org.jboss.netty.buffer.ChannelBuffer;
4
5/**
6 *
7 * @author Yotam Harchol (yotam.harchol@bigswitch.com)
8 *
9 */
Yotam Harchol5c9d6f42013-08-01 11:09:20 -070010public class ICMPv4Code implements OFValueType<ICMPv4Code> {
Yotam Harchold7b84202013-07-26 16:08:10 -070011
12 final static int LENGTH = 1;
13 final static short MAX_CODE = 0xFF;
14
15 private final short code;
16
17 private ICMPv4Code(short code) {
18 this.code = code;
19 }
20
21 public static ICMPv4Code of(short code) {
22 if (code > MAX_CODE || code < 0)
23 throw new IllegalArgumentException("Illegal ICMPv4 code: " + code);
24 return new ICMPv4Code(code);
25 }
26
27 @Override
28 public int getLength() {
29 return LENGTH;
30 }
31
32 public short getCode() {
33 return code;
34 }
35
36 public void writeByte(ChannelBuffer c) {
37 c.writeByte(this.code);
38 }
39
40 public static ICMPv4Code readByte(ChannelBuffer c) {
41 return ICMPv4Code.of(c.readUnsignedByte());
42 }
43
Yotam Harchol5c9d6f42013-08-01 11:09:20 -070044 @Override
45 public ICMPv4Code applyMask(ICMPv4Code mask) {
46 return ICMPv4Code.of((short)(this.code & mask.code));
47 }
48
49
Yotam Harchold7b84202013-07-26 16:08:10 -070050}