Start of the COPS message refactoring to make all of these classes more semantic...
[packetcable.git] / packetcable-driver / src / main / java / org / umu / cops / stack / COPSIpv6Interface.java
1 /*\r
2  * Copyright (c) 2003 University of Murcia.  All rights reserved.\r
3  * --------------------------------------------------------------\r
4  * For more information, please see <http://www.umu.euro6ix.org/>.\r
5  */\r
6 \r
7 package org.umu.cops.stack;\r
8 \r
9 import java.net.UnknownHostException;\r
10 \r
11 /**\r
12  * COPS IPv6 Interface\r
13  *\r
14  * @version COPSIpv6Interface.java, v 1.00 2003\r
15  *\r
16  */\r
17 public abstract class COPSIpv6Interface extends COPSInterface {\r
18 \r
19     /**\r
20      * Method isIpv6Address\r
21      *\r
22      * @return   a boolean\r
23      *\r
24      */\r
25     public boolean isIpv6Address() {\r
26         return true;\r
27     }\r
28 \r
29     /**\r
30      * Method setIpAddress\r
31      *\r
32      * @param    hostName            a  String\r
33      *\r
34      * @throws   UnknownHostException\r
35      *\r
36      */\r
37     public void setIpAddress(String hostName) throws UnknownHostException {\r
38         _addr.setIpAddress(hostName);\r
39     }\r
40 \r
41     /**\r
42      * Method getIpName\r
43      *\r
44      * @return   a String\r
45      *\r
46      * @throws   UnknownHostException\r
47      *\r
48      */\r
49     public String getIpName() throws UnknownHostException {\r
50         return (_addr.getIpName());\r
51     }\r
52 \r
53     /**\r
54      * Returns size in number of octects, including header\r
55      *\r
56      * @return   a short\r
57      *\r
58      */\r
59     public short getDataLength() {\r
60         //Add the size of the header also\r
61         return (_objHdr.getDataLength());\r
62     }\r
63 \r
64     protected COPSIpv6Interface(COPSObjHeader hdr) {\r
65         _objHdr = hdr;\r
66 //        _objHdr.setCType((byte) 2);\r
67         _objHdr.setDataLength((short) (_addr.getDataLength() + 4));\r
68     }\r
69 \r
70     protected COPSIpv6Interface(byte[] dataPtr) {\r
71         _objHdr = COPSObjHeader.parse(dataPtr);\r
72         _objHdr.parse(dataPtr);\r
73         // _objHdr.checkDataLength();\r
74 \r
75         byte[] buf = new byte[4];\r
76         System.arraycopy(dataPtr,4,buf,0,16);\r
77 \r
78         _addr.parse(buf);\r
79 \r
80         _ifindex |= ((int) dataPtr[20]) << 24;\r
81         _ifindex |= ((int) dataPtr[21]) << 16;\r
82         _ifindex |= ((int) dataPtr[22]) << 8;\r
83         _ifindex |= ((int) dataPtr[23]) & 0xFF;\r
84 \r
85         _objHdr.setDataLength((short) (_addr.getDataLength() + 4));\r
86     }\r
87 \r
88     private COPSObjHeader _objHdr;\r
89     private COPSIpv6Address _addr;\r
90     private int _ifindex;\r
91 }\r
92 \r
93 \r
94 \r
95 \r