Merge "Remove "response" from yang."
[packetcable.git] / protocol_plugins.packetcable / src / main / java / org / umu / cops / stack / COPSIpv6PdpAddress.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.io.IOException;\r
10 import java.net.Socket;\r
11 import java.net.UnknownHostException;\r
12 \r
13 /**\r
14  * COPS IPv6 PDP Address\r
15  *\r
16  * @version COPSIpv6PdpAddress.java, v 1.00 2003\r
17  *\r
18  */\r
19 abstract public class COPSIpv6PdpAddress extends COPSPdpAddress {\r
20 \r
21     protected COPSObjHeader _objHdr;\r
22     protected COPSIpv6Address _addr;\r
23     private short _reserved;\r
24     protected short _tcpPort;\r
25 \r
26     protected COPSIpv6PdpAddress() {\r
27         _addr = new COPSIpv6Address();\r
28         _objHdr = new COPSObjHeader();\r
29         _objHdr.setCType((byte) 2);\r
30         // _objHdr.setDataLength((short) _addr.getDataLength() + sizeof(u_int32_t));\r
31         _objHdr.setDataLength((short) (_addr.getDataLength() + 4));\r
32     }\r
33 \r
34     protected COPSIpv6PdpAddress(byte[] dataPtr) {\r
35         _objHdr = new COPSObjHeader();\r
36         _objHdr.parse(dataPtr);\r
37         // _objHdr.checkDataLength();\r
38 \r
39         byte[] buf = new byte[16];\r
40         System.arraycopy(dataPtr,2,buf,0,16);\r
41         _addr.parse(buf);\r
42 \r
43         _reserved |= ((short) dataPtr[20]) << 8;\r
44         _reserved |= ((short) dataPtr[21]) & 0xFF;\r
45         _tcpPort |= ((short) dataPtr[22]) << 8;\r
46         _tcpPort |= ((short) dataPtr[23]) & 0xFF;\r
47 \r
48         // _objHdr.setDataLength(_addr.getDataLength() + sizeof(u_int32_t));\r
49         _objHdr.setDataLength((short) (_addr.getDataLength() + 4));\r
50     }\r
51 \r
52     /**\r
53      * Method setIpAddress\r
54      *\r
55      * @param    hostName            a  String\r
56      *\r
57      * @throws   UnknownHostException\r
58      *\r
59      */\r
60     public void setIpAddress(String hostName) throws UnknownHostException  {\r
61         _addr.setIpAddress(hostName);\r
62     }\r
63 \r
64     /**\r
65      * Method setTcpPort\r
66      *\r
67      * @param    port                a  short\r
68      *\r
69      */\r
70     public void setTcpPort(short port) {\r
71         _tcpPort = port;\r
72     }\r
73 \r
74     /**\r
75      * Method getIpName\r
76      *\r
77      * @return   a String\r
78      *\r
79      * @throws   UnknownHostException\r
80      *\r
81      */\r
82     public String getIpName() throws UnknownHostException {\r
83         return (_addr.getIpName());\r
84     }\r
85 \r
86     /**\r
87      * Method getTcpPort\r
88      *\r
89      * @return   a short\r
90      *\r
91      */\r
92     short getTcpPort() {\r
93         return _tcpPort;\r
94     };\r
95 \r
96     /**\r
97      * Returns size in number of octects, including header\r
98      *\r
99      * @return   a short\r
100      *\r
101      */\r
102     public short getDataLength() {\r
103         //Add the size of the header also\r
104         return (_objHdr.getDataLength());\r
105     }\r
106 \r
107     /**\r
108      * Method isIpv6PdpAddress\r
109      *\r
110      * @return   a boolean\r
111      *\r
112      */\r
113     public boolean isIpv6PdpAddress() {\r
114         return true;\r
115     }\r
116 \r
117     /**\r
118      * Write data on a given network socket\r
119      *\r
120      * @param    id                  a  Socket\r
121      *\r
122      * @throws   IOException\r
123      *\r
124      */\r
125     public void writeData(Socket id) throws IOException {\r
126         //\r
127         _objHdr.writeData(id);\r
128         _addr.writeData(id);\r
129 \r
130         byte[] buf = new byte[4];\r
131         buf[0] = (byte) (_reserved >> 8);\r
132         buf[1] = (byte) _reserved;\r
133         buf[2] = (byte) (_tcpPort >> 8);\r
134         buf[3] = (byte) _tcpPort ;\r
135 \r
136         COPSUtil.writeData(id, buf, 4);\r
137     }\r
138 }\r
139 \r
140 \r