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 .3
  9. */
  10.  
  11. /**
  12. */
  13. require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../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 Signed Integer Encoder
  81. *
  82. * HUGE ENDIAN BUG HERE, SO WATCH OUT!!!!!
  83. *
  84. * @package docsis_config
  85. * @subpackage docsis_encoder
  86. */
  87. class docsis_encoder_int extends docsis_encoder
  88. {
  89. /**
  90. * Constructor
  91. *
  92. * @param int $code docsis code
  93. * @param int $value
  94. */
  95. function docsis_encoder_int($code, $value)
  96. {
  97. parent::docsis_encoder($code, $value);
  98. }
  99.  
  100. /**
  101. * Encode value
  102. *
  103. * @return string encoded value
  104. */
  105. function encode()
  106. {
  107. $z = pack('l', $this->value);
  108. return chr($this->code) . chr(4) . $z{3} . $z{2} . $z{1} . $z{0};
  109. }
  110. }
  111.  
  112. /**
  113. * DOCSIS Unsigned Short Encoder
  114. *
  115. * @package docsis_config
  116. * @subpackage docsis_encoder
  117. */
  118. class docsis_encoder_ushort extends docsis_encoder
  119. {
  120. /**
  121. * Constructor
  122. *
  123. * @param int $code docsis code
  124. * @param int $value
  125. */
  126. function docsis_encoder_ushort($code, $value)
  127. {
  128. parent::docsis_encoder($code, $value);
  129. }
  130.  
  131. /**
  132. * Encode value
  133. *
  134. * @return string encoded value
  135. */
  136. function encode()
  137. {
  138. return chr($this->code) . chr(2) . pack('n', $this->value);
  139. }
  140. }
  141.  
  142. /**
  143. * DOCSIS Unsigned Char Encoder
  144. *
  145. * @package docsis_config
  146. * @subpackage docsis_encoder
  147. */
  148. class docsis_encoder_uchar extends docsis_encoder
  149. {
  150. /**
  151. * Constructor
  152. *
  153. * @param int $code docsis code
  154. * @param int $value
  155. */
  156. function docsis_encoder_uchar($code, $value)
  157. {
  158. parent::docsis_encoder($code, $value);
  159. }
  160.  
  161. /**
  162. * Encode value
  163. *
  164. * @return string encoded value
  165. */
  166. function encode()
  167. {
  168. return chr($this->code) . chr(1) . chr($this->value);
  169. }
  170. }
  171.  
  172. /**
  173. * DOCSIS IP Encoder
  174. *
  175. * @package docsis_config
  176. * @subpackage docsis_encoder
  177. */
  178. class docsis_encoder_ip extends docsis_encoder
  179. {
  180. /**
  181. * Constructor
  182. *
  183. * @param int $code docsis code
  184. * @param string $value ip address
  185. */
  186. function docsis_encoder_ip($code, $value)
  187. {
  188. parent::docsis_encoder($code, $value);
  189. }
  190.  
  191. /**
  192. * Encode value
  193. *
  194. * @return string encoded value
  195. */
  196. function encode()
  197. {
  198. $ip = explode('.', $this->value);
  199. return chr($this->code) . chr(4) . chr($ip[0]) . chr($ip[1]) . chr($ip[2]) . chr($ip[3]);
  200. }
  201. }
  202.  
  203. /**
  204. * DOCSIS OID Encoder
  205. *
  206. * @package docsis_config
  207. * @subpackage docsis_encoder
  208. */
  209. class docsis_encoder_oid extends docsis_encoder
  210. {
  211. /**
  212. * Constructor
  213. *
  214. * @param int $code docsis code
  215. * @param string $value OID
  216. */
  217. function docsis_encoder_oid($code, $value)
  218. {
  219. parent::docsis_encoder($code, $value);
  220. }
  221.  
  222. /**
  223. * Encode value
  224. *
  225. * @return string encoded value
  226. */
  227. function encode()
  228. {
  229. $oid = new rfc1155_ObjectID($this->value);
  230. $encoded = $oid->encodeContents();
  231. return chr($this->code) . chr(strlen($encoded)) . $encoded;
  232. }
  233. }
  234.  
  235. /**
  236. * DOCSIS MAC Encoder
  237. *
  238. * @package docsis_config
  239. * @subpackage docsis_encoder
  240. */
  241. class docsis_encoder_mac extends docsis_encoder
  242. {
  243. /**
  244. * Constructor
  245. *
  246. * @param int $code docsis code
  247. * @param string $value mac address
  248. */
  249. function docsis_encoder_mac($code, $value)
  250. {
  251. parent::docsis_encoder($code, $value);
  252. }
  253.  
  254. /**
  255. * Encode value
  256. *
  257. * @return string encoded value
  258. */
  259. function encode()
  260. {
  261. $value = '';
  262. foreach(explode(':', $this->value) as $hex)
  263. $value .= chr(hexdec($hex));
  264. return chr($this->code) . chr(6) . $value;
  265. }
  266. }
  267.  
  268. /**
  269. * DOCSIS String Encoder
  270. *
  271. * @package docsis_config
  272. * @subpackage docsis_encoder
  273. */
  274. class docsis_encoder_string extends docsis_encoder
  275. {
  276. /**
  277. * Constructor
  278. *
  279. * @param int $code docsis code
  280. * @param string $value
  281. */
  282. function docsis_encoder_string($code, $value)
  283. {
  284. parent::docsis_encoder($code, $value);
  285. }
  286. }
  287.  
  288. /**
  289. * DOCSIS Hex String Encoder
  290. *
  291. * @package docsis_config
  292. * @subpackage docsis_encoder
  293. */
  294. class docsis_encoder_hex_string extends docsis_encoder
  295. {
  296. /**
  297. * Constructor
  298. *
  299. * @param int $code docsis code
  300. * @param string $value
  301. */
  302. function docsis_encoder_hex_string($code, $value)
  303. {
  304. parent::docsis_encoder($code, $value);
  305. }
  306.  
  307. /**
  308. * Encode value
  309. *
  310. * @return string encoded value
  311. */
  312. function encode()
  313. {
  314. $string = pack('H*', $this->value);
  315. return chr($this->code) . chr(strlen($string)) . $string;
  316. }
  317. }
  318.  
  319. /**
  320. * DOCSIS Complex (multipart) Encoder
  321. *
  322. * @package docsis_config
  323. * @subpackage docsis_encoder
  324. */
  325. class docsis_encoder_complex extends docsis_encoder
  326. {
  327. /**
  328. * Constructor
  329. *
  330. * @param int $code docsis code
  331. * @param array $value
  332. */
  333. function docis_encoder_complex($code, $value=array())
  334. {
  335. parent::docsis_encoder($code, $value);
  336. }
  337.  
  338. /**
  339. * Encode value
  340. *
  341. * @return string encoded value
  342. */
  343. function encode()
  344. {
  345. $content = '';
  346. foreach($this->value as $tlv)
  347. {
  348. if(is_array($tlv))
  349. {
  350. foreach($tlv as $t)
  351. $content .= $t->encode();
  352. }
  353. else
  354. $content .= $tlv->encode();
  355. }
  356. return chr($this->code) . chr(strlen($content)) . $content;
  357. }
  358. }
  359. ?>

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