Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. module Docsis
  2. class DhcpLog < Docsis::ApplicationRecord
  3.  
  4. self.table_name = :dhcp_log
  5. self.primary_key = false
  6.  
  7.  
  8. self.store_full_sti_class = false
  9.  
  10. after_initialize :readonly!
  11.  
  12. scope :ack, -> {where(sending: :ack)}
  13. scope :nak, -> {where(sending: :nak)}
  14. scope :offer, -> {where(sending: :offer)}
  15. scope :q_ack, -> {where(sending: :q_ack)}
  16. scope :q_nak, -> {where(sending: :q_nak)}
  17.  
  18. enum sending: {
  19. ack: 'ACK',
  20. nak: 'NAK',
  21. offer: 'OFFER',
  22. q_ack: 'Q_ACK',
  23. q_nak: 'Q_NAK'
  24. }
  25. enum type: {
  26. CM: 'CM',
  27. CPE: 'CPE',
  28. MTA: 'MTA',
  29. 'NO-AUTH': 'NO-AUTH'
  30. }
  31. enum dynamic_flag: {
  32. yes: 'YES' ,
  33. no: 'NO'
  34. }, _prefix: :dynamic_flag
  35. enum mcache_flag: {
  36. yes: 'YES',
  37. no: 'NO'
  38. }, _prefix: :mcache_flag
  39.  
  40. def modem_macaddr
  41. macaddr_ntoa(b_modem_macaddr)
  42. end
  43.  
  44. def macaddr
  45. macaddr_ntoa(b_macaddr)
  46. end
  47.  
  48. def ipaddr
  49. IPAddr.new(b_ipaddr, Socket::AF_INET).to_s
  50. end
  51.  
  52. # Return Docsis::Modem corresponding to this log entry
  53. def modem
  54. Docsis::Modem.find(modem_macaddr)
  55. end
  56.  
  57. protected
  58.  
  59.  
  60. def self.sti_name
  61. case self.name.demodulize
  62. when 'ModemLog'
  63. 'CM'
  64. when 'CustomerPremisesEquipmentLog'
  65. 'CPE'
  66. when 'MultimediaTerminalAdapterLog'
  67. 'MTA'
  68. else
  69. super
  70. end
  71. end
  72.  
  73.  
  74. def self.compute_type(type_name) # :nodoc
  75. case type_name
  76. when 'CM'
  77. ModemLog
  78. when 'CPE'
  79. CustomerPremisesEquipmentLog
  80. when 'MTA'
  81. MultimediaTerminalAdapterLog
  82. else
  83. super
  84. end
  85. end
  86.  
  87.  
  88. private
  89.  
  90.  
  91. def macaddr_ntoa(b_addr)
  92. MacAddress.new('%012X' % b_addr).to_s
  93. end
  94.  
  95.  
  96. end
  97.  
  98. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement