Source for file docsis_common.php

Documentation is available at docsis_common.php

  1. <?php
  2. /**
  3. * DOCSIS Common Encoders
  4. *
  5. * @author David Eder <david@eder.us>
  6. * @copyright 2004 David Eder
  7. * @package docsis_config
  8. * @version .1
  9. */
  10.  
  11. /**
  12. */
  13. require('../phpsnmp/snmp.php');
  14.  
  15. /**
  16. * DOCSIS Base Encoder
  17. *
  18. * @package docsis_config
  19. * @subpackage docsis_encoder
  20. */
  21. class docsis_encoder
  22. {
  23. var $code = NULL;
  24. var $value = NULL;
  25.  
  26. /**
  27. * Constructor
  28. *
  29. * @param int $code docsis code
  30. * @param mixed $value
  31. */
  32. function docsis_encoder($code, $value)
  33. {
  34. $this->code = $code;
  35. $this->value = $value;
  36. }
  37.  
  38. /**
  39. * Encode value
  40. *
  41. * @return string encoded value
  42. */
  43. function encode()
  44. {
  45. return chr($this->code) . chr(strlen($this->value)) . $this->value;
  46. }
  47. }
  48.  
  49. /**
  50. * DOCSIS Unsigned Integer Encoder
  51. *
  52. * @package docsis_config
  53. * @subpackage docsis_encoder
  54. */
  55. class docsis_encoder_uint extends docsis_encoder
  56. {
  57. /**
  58. * Constructor
  59. *
  60. * @param int $code docsis code
  61. * @param int $value
  62. */
  63. function docsis_encoder_uint($code, $value)
  64. {
  65. parent::docsis_encoder($code, $value);
  66. }
  67.  
  68. /**
  69. * Encode value
  70. *
  71. * @return string encoded value
  72. */
  73. function encode()
  74. {
  75. return chr($this->code) . chr(4) . pack('N', $this->value);
  76. }
  77. }
  78.  
  79. /**
  80. * DOCSIS Unsigned Short Encoder
  81. *
  82. * @package docsis_config
  83. * @subpackage docsis_encoder
  84. */
  85. class docsis_encoder_ushort extends docsis_encoder
  86. {
  87. /**
  88. * Constructor
  89. *
  90. * @param int $code docsis code
  91. * @param int $value
  92. */
  93. function docsis_encoder_ushort($code, $value)
  94. {
  95. parent::docsis_encoder($code, $value);
  96. }
  97.  
  98. /**
  99. * Encode value
  100. *
  101. * @return string encoded value
  102. */
  103. function encode()
  104. {
  105. return chr($this->code) . chr(2) . pack('n', $this->value);
  106. }
  107. }
  108.  
  109. /**
  110. * DOCSIS Unsigned Char Encoder
  111. *
  112. * @package docsis_config
  113. * @subpackage docsis_encoder
  114. */
  115. class docsis_encoder_uchar extends docsis_encoder
  116. {
  117. /**
  118. * Constructor
  119. *
  120. * @param int $code docsis code
  121. * @param int $value
  122. */
  123. function docsis_encoder_uchar($code, $value)
  124. {
  125. parent::docsis_encoder($code, $value);
  126. }
  127.  
  128. /**
  129. * Encode value
  130. *
  131. * @return string encoded value
  132. */
  133. function encode()
  134. {
  135. return chr($this->code) . chr(1) . chr($this->value);
  136. }
  137. }
  138.  
  139. /**
  140. * DOCSIS IP Encoder
  141. *
  142. * @package docsis_config
  143. * @subpackage docsis_encoder
  144. */
  145. class docsis_encoder_ip extends docsis_encoder
  146. {
  147. /**
  148. * Constructor
  149. *
  150. * @param int $code docsis code
  151. * @param string $value ip address
  152. */
  153. function docsis_encoder_ip($code, $value)
  154. {
  155. parent::docsis_encoder($code, $value);
  156. }
  157.  
  158. /**
  159. * Encode value
  160. *
  161. * @return string encoded value
  162. */
  163. function encode()
  164. {
  165. $ip = explode('.', $this->value);
  166. return chr($this->code) . chr(4) . chr($ip[0]) . chr($ip[1]) . chr($ip[2]) . chr($ip[3]);
  167. }
  168. }
  169.  
  170. /**
  171. * DOCSIS OID Encoder
  172. *
  173. * @package docsis_config
  174. * @subpackage docsis_encoder
  175. */
  176. class docsis_encoder_oid extends docsis_encoder
  177. {
  178. /**
  179. * Constructor
  180. *
  181. * @param int $code docsis code
  182. * @param string $value OID
  183. */
  184. function docsis_encoder_oid($code, $value)
  185. {
  186. parent::docsis_encoder($code, $value);
  187. }
  188.  
  189. /**
  190. * Encode value
  191. *
  192. * @return string encoded value
  193. */
  194. function encode()
  195. {
  196. $oid = new rfc1155_ObjectID($this->value);
  197. $encoded = $oid->encodeContents();
  198. return chr($this->code) . chr(strlen($encoded)) . $encoded;
  199. }
  200. }
  201.  
  202. /**
  203. * DOCSIS MAC Encoder
  204. *
  205. * @package docsis_config
  206. * @subpackage docsis_encoder
  207. */
  208. class docsis_encoder_mac extends docsis_encoder
  209. {
  210. /**
  211. * Constructor
  212. *
  213. * @param int $code docsis code
  214. * @param string $value mac address
  215. */
  216. function docsis_encoder_mac($code, $value)
  217. {
  218. parent::docsis_encoder($code, $value);
  219. }
  220.  
  221. /**
  222. * Encode value
  223. *
  224. * @return string encoded value
  225. */
  226. function encode()
  227. {
  228. $ip = explode(':', $this->value);
  229. return chr($this->code) . chr(6) . chr($ip[0]) . chr($ip[1]) . chr($ip[2]) . chr($ip[3]) . chr($ip[4]) . chr($ip[5]);
  230. }
  231. }
  232.  
  233. /**
  234. * DOCSIS String Encoder
  235. *
  236. * @package docsis_config
  237. * @subpackage docsis_encoder
  238. */
  239. class docsis_encoder_string extends docsis_encoder
  240. {
  241. /**
  242. * Constructor
  243. *
  244. * @param int $code docsis code
  245. * @param string $value
  246. */
  247. function docsis_encoder_string($code, $value)
  248. {
  249. parent::docsis_encoder($code, $value);
  250. }
  251. }
  252.  
  253. /**
  254. * DOCSIS Hex String Encoder
  255. *
  256. * @package docsis_config
  257. * @subpackage docsis_encoder
  258. */
  259. class docsis_encoder_hex_string extends docsis_encoder
  260. {
  261. /**
  262. * Constructor
  263. *
  264. * @param int $code docsis code
  265. * @param string $value
  266. */
  267. function docsis_encoder_hex_string($code, $value)
  268. {
  269. parent::docsis_encoder($code, $value);
  270. }
  271.  
  272. /**
  273. * Encode value
  274. *
  275. * @return string encoded value
  276. */
  277. function encode()
  278. {
  279. $string = pack('H*', $this->value);
  280. return chr($this->code) . chr(strlen($string)) . $string;
  281. }
  282. }
  283.  
  284. /**
  285. * DOCSIS Complex (multipart) Encoder
  286. *
  287. * @package docsis_config
  288. * @subpackage docsis_encoder
  289. */
  290. class docsis_encoder_complex extends docsis_encoder
  291. {
  292. /**
  293. * Constructor
  294. *
  295. * @param int $code docsis code
  296. * @param array $value
  297. */
  298. function docis_encoder_complex($code, $value=array())
  299. {
  300. parent::docsis_encoder($code, $value);
  301. }
  302.  
  303. /**
  304. * Encode value
  305. *
  306. * @return string encoded value
  307. */
  308. function encode()
  309. {
  310. $content = '';
  311. foreach($this->value as $tlv)
  312. {
  313. if(is_array($tlv))
  314. {
  315. foreach($tlv as $t)
  316. $content .= $t->encode();
  317. }
  318. else
  319. $content .= $tlv->encode();
  320. }
  321. return chr($this->code) . chr(strlen($content)) . $content;
  322. }
  323. }
  324. ?>

Documentation generated on Mon, 14 Nov 2005 17:59:51 -0700 by phpDocumentor 1.3.0RC3