Merge "Remove "response" from yang."
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / gates / impl / IPv6Classifier.java
1 /**
2
3  * Copyright (c) 2014 CableLabs.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8
9  */
10 package org.pcmm.gates.impl;
11
12 import org.pcmm.base.impl.PCMMBaseObject;
13 import org.pcmm.gates.IIPv6Classifier;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 import java.net.InetAddress;
18 import java.net.UnknownHostException;
19
20 /**
21  *
22  */
23 public class IPv6Classifier extends PCMMBaseObject implements
24         IIPv6Classifier {
25
26     private Logger logger = LoggerFactory.getLogger(IPv6Classifier.class);
27
28     public IPv6Classifier() {
29         this(LENGTH, STYPE, SNUM);
30     }
31
32     /**
33      * @param data - the data bytes to parse
34      */
35     public IPv6Classifier(byte[] data) {
36         super(data);
37     }
38
39     /**
40      * @param len - the classifier's length
41      * @param sType - the sType value
42      * @param sNum - the sNum value
43      */
44     public IPv6Classifier(short len, byte sType, byte sNum) {
45         super(len, sType, sNum);
46     }
47
48     // offset:length Field Name: Description
49     // 00:01 Flags: 0000.0001 Flow Label enable match
50     // 01:01 Tc-low
51     // 02:01 Tc-high
52     // 03:01 Tc-mask
53     // 04:04 Flow Label: low order 20 bits; high order 12 bits ignored
54     // 08:02 Next Header Type
55     // 10:01 Source Prefix Length
56     // 11:01 Destination Prefix Length
57     // 12:16 IPv6 Source Address
58     // 28:16 IPv6 Destination Address
59     // 44:02 Source Port Start
60     // 46:02 Source Port End
61     // 48:02 Destination Port Start
62     // 50:02 Destination Port End
63     // 52:02 ClassifierID
64     // 54:01 Priority
65     // 55:01 Activation State
66     // 56:01 Action
67     // 57:03 Reserved
68
69     // 00:01 Flags: 0000.0001 Flow Label enable match
70     @Override
71     public void setFlowLabelEnableFlag(byte flag) {
72         setByte(flag, (short) 0);
73     }
74     @Override
75     public byte getFlowLabelEnableFlag() {
76         return getByte((short) 0);
77     }
78
79     // 01:01 Tc-low
80     @Override
81     public void setTcLow(byte tcLow) {
82         setByte(tcLow, (short) 1);
83     }
84     @Override
85     public byte getTcLow() {
86         return getByte((short) 1);
87     }
88
89     // 02:01 Tc-high
90     @Override
91     public void setTcHigh(byte tcHigh) {
92         setByte(tcHigh, (short) 2);
93     }
94     @Override
95     public byte getTcHigh() {
96         return getByte((short) 2);
97     }
98
99     // 03:01 Tc-mask
100     @Override
101     public void setTcMask(byte tcMask) {
102         setByte(tcMask, (short) 3);
103     }
104     @Override
105     public byte getTcMask() {
106         return getByte((short) 3);
107     }
108
109     // 04:04 Flow Label: low order 20 bits; high order 12 bits ignored
110     @Override
111     public void setFlowLabel(Long flowLabel) {
112         setInt(flowLabel.intValue(), (short) 4);
113     }
114     @Override
115     public int getFlowLabel() {
116         return getInt((short) 4);
117     }
118
119     // 08:02 Next Header Type
120     @Override
121     public void setNextHdr(short nxtHdr) {
122         setShort(nxtHdr, (short) 8);
123     }
124     @Override
125     public short getNextHdr() {
126         return getShort((short) 8);
127     }
128
129     // 10:01 Source Prefix Length
130     @Override
131     public void setSourcePrefixLen(byte srcPrefixLen) {
132         setByte(srcPrefixLen, (short) 10);
133     }
134     @Override
135     public byte getSourcePrefixLen() {
136         return getByte((short) 10);
137     }
138
139     // 11:01 Destination Prefix Length
140     @Override
141     public void setDestinationPrefixLen(byte dstPrefixLen) {
142         setByte(dstPrefixLen, (short) 11);
143     }
144     @Override
145     public byte getDestinationPrefixLen() {
146         return getByte((short) 11);
147     }
148
149     // 12:16 IPv6 Source Address
150     @Override
151     public void setSourceIPAddress(InetAddress a) {
152         setBytes(a.getAddress(), (short) 12);
153     }
154     @Override
155     public InetAddress getSourceIPAddress() {
156         try {
157             return InetAddress.getByAddress(getBytes((short) 12, (short) 16));
158         } catch (UnknownHostException e) {
159             logger.error("getSourceIPAddress(): Malformed IPv6 address: {}", e.getMessage());
160         }
161         return null;
162     }
163
164     // 28:16 IPv6 Destination Address
165     @Override
166     public void setDestinationIPAddress(InetAddress a) {
167         setBytes(a.getAddress(), (short) 28);
168     }
169     @Override
170     public InetAddress getDestinationIPAddress() {
171         try {
172             return InetAddress.getByAddress(getBytes((short) 28, (short) 16));
173         } catch (UnknownHostException e) {
174             logger.error("getDestinationIPAddress(): Malformed IPv6 address: {}", e.getMessage());
175         }
176         return null;
177     }
178     // 44:02 Source Port Start
179     @Override
180     public short getSourcePortStart() {
181         return getShort((short) 44);
182     }
183     @Override
184     public void setSourcePortStart(short p) {
185         setShort(p, (short) 44);
186     }
187
188     // 46:02 Source Port End
189     @Override
190     public short getSourcePortEnd() {
191         return getShort((short) 46);
192     }
193     @Override
194     public void setSourcePortEnd(short p) {
195         setShort(p, (short) 46);
196     }
197
198     // 48:02 Destination Port Start
199     @Override
200     public short getDestinationPortStart() {
201         return getShort((short) 48);
202     }
203     @Override
204     public void setDestinationPortStart(short p) {
205         setShort(p, (short) 48);
206     }
207
208     // 50:02 Destination Port End
209     @Override
210     public short getDestinationPortEnd() {
211         return getShort((short) 50);
212     }
213     @Override
214     public void setDestinationPortEnd(short p) {
215         setShort(p, (short) 50);
216     }
217
218     // 52:02 ClassifierID
219     @Override
220     public short getClassifierID() {
221         return getShort((short) 52);
222     }
223
224     @Override
225     public void setClassifierID(short p) {
226         setShort(p, (short) 52);
227     }
228
229     // 54:01 Priority
230     @Override
231     public void setPriority(byte p) {
232         setByte(p, (short) 54);
233     }
234     @Override
235     public byte getPriority() {
236         return getByte((short) 54);
237     }
238
239     // 55:01 Activation State
240     @Override
241     public void setActivationState(byte s) {
242         setByte(s, (short) 55);
243     }
244     @Override
245     public byte getActivationState() {
246         return getByte((short) 55);
247     }
248
249     // 56:01 Action
250     @Override
251     public void setAction(byte a) {
252         setByte(a, (short) 56);
253     }
254     @Override
255     public byte getAction() {
256         return getByte((short) 56);
257     }
258
259
260
261     // baggage from IExtendedClassifier
262     // not used in IPv6 classifiers
263     @Override
264     public void setIPSourceMask(InetAddress a) {
265         // TODO Auto-generated method stub
266
267     }
268
269     @Override
270     public void setIPDestinationMask(InetAddress m) {
271         // TODO Auto-generated method stub
272
273     }
274
275     @Override
276     public InetAddress getIPSourceMask() {
277         // TODO Auto-generated method stub
278         return null;
279     }
280
281     @Override
282     public InetAddress getIPDestinationMask() {
283         // TODO Auto-generated method stub
284         return null;
285     }
286
287     @Override
288     public short getDestinationPort() {
289         // TODO Auto-generated method stub
290         return 0;
291     }
292
293     @Override
294     public void setDestinationPort(short p) {
295         // TODO Auto-generated method stub
296
297     }
298
299     @Override
300     public short getSourcePort() {
301         // TODO Auto-generated method stub
302         return 0;
303     }
304
305     @Override
306     public void setSourcePort(short p) {
307         // TODO Auto-generated method stub
308
309     }
310
311     @Override
312     public short getProtocol() {
313         // TODO Auto-generated method stub
314         return 0;
315     }
316
317     @Override
318     public void setProtocol(short p) {
319         // TODO Auto-generated method stub
320
321     }
322
323     @Override
324     public byte getDSCPTOS() {
325         // TODO Auto-generated method stub
326         return 0;
327     }
328
329     @Override
330     public void setDSCPTOS(byte v) {
331         // TODO Auto-generated method stub
332
333     }
334
335     @Override
336     public byte getDSCPTOSMask() {
337         // TODO Auto-generated method stub
338         return 0;
339     }
340
341     @Override
342     public void setDSCPTOSMask(byte v) {
343         // TODO Auto-generated method stub
344
345     }
346
347 }