net-dhcp 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ *1.1.1
2
+
3
+ * Replace incorrect equality check with assignment in Message#from_udp_payload to correct behaviour when an unrecognised option or message is encountered [mjtko]
4
+ * Allow callers to disable the debug output emitted in Message#from_udp_payload for unrecognised options or messages [mjtko]
5
+ * Added rake test task [mjtko]
6
+ * Correct test_from_udp_payload test assertion [mjtko]
7
+ * Default to 00:00:00:00:00:00 in Message#initialize if local MAC address can't be read [mjtko]
8
+
1
9
  *1.1.0
2
10
 
3
11
  * Added BroadcastAddressOption and cleaned up the output for some options to make them more readable [rakshasa]
data/Rakefile CHANGED
@@ -40,3 +40,10 @@ Rake::RDocTask.new do |rdoc|
40
40
  rdoc.rdoc_files.include('README*')
41
41
  rdoc.rdoc_files.include('lib/**/*.rb')
42
42
  end
43
+
44
+ require 'rake/testtask'
45
+ Rake::TestTask.new do |t|
46
+ t.libs << "test"
47
+ t.test_files = FileList['test/test*.rb']
48
+ t.verbose = true
49
+ end
@@ -1,5 +1,5 @@
1
1
  module Net
2
2
  module Dhcp
3
- VERSION = "1.1.0"
3
+ VERSION = "1.1.1"
4
4
  end
5
5
  end
@@ -33,7 +33,8 @@ module DHCP
33
33
 
34
34
  alias == eql?
35
35
 
36
- def Message.from_udp_payload(data)
36
+ def Message.from_udp_payload(data, opts={})
37
+ opts = {:debug => true}.merge(opts)
37
38
  values = data.unpack('C4Nn2N4C16C192NC*')
38
39
 
39
40
  params = {
@@ -74,11 +75,13 @@ module DHCP
74
75
 
75
76
  # check what is the type of dhcp option
76
77
  opt_class = $DHCP_MSG_OPTIONS[p[:type]]
77
- if(opt_class.nil?)
78
- puts '-------------------- please further investigate!!'
79
- puts p[:type]
80
- puts '-------------------- /'
81
- opt_class == Option
78
+ if opt_class.nil?
79
+ if opts[:debug]
80
+ puts '-------------------- please further investigate!!'
81
+ puts p[:type]
82
+ puts '-------------------- /'
83
+ end
84
+ opt_class = Option
82
85
  end
83
86
  if (opt_class == MessageTypeOption)
84
87
  msg_class = $DHCP_MSG_CLASSES[p[:payload].first]
@@ -87,11 +90,13 @@ module DHCP
87
90
  next_opt = values.shift
88
91
  end
89
92
 
90
- if(msg_class.nil?)
91
- puts '-------------------- please further investigate!!'
92
- p params[:options]
93
- puts '-------------------- /'
94
- opt_class == Option
93
+ if msg_class.nil?
94
+ if opts[:debug]
95
+ puts '-------------------- please further investigate!!'
96
+ p params[:options]
97
+ puts '-------------------- /'
98
+ end
99
+ msg_class = Message
95
100
  end
96
101
  msg_class.new(params)
97
102
  end
@@ -139,6 +144,7 @@ module DHCP
139
144
  raise 'chaddr field should be of 16 bytes' unless self.chaddr.size == 16
140
145
  else
141
146
  mac = `/sbin/ifconfig | grep HWaddr | cut -c39- | head -1`.chomp.strip.gsub(/:/,'')
147
+ mac = '000000000000' if mac.empty?
142
148
  self.chaddr = [mac].pack('H*').unpack('CCCCCC')
143
149
  self.chaddr += [0x00]*(16-self.chaddr.size)
144
150
  end
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.name = 'net-dhcp'
6
6
  s.version = Net::Dhcp::VERSION
7
7
  s.platform = Gem::Platform::RUBY
8
- s.date = "2011-12-08"
8
+ s.date = "2012-01-21"
9
9
  s.authors = ['daniel martin gomez (etd)', 'syonbori', 'Mark J. Titorenko']
10
10
  s.email = 'mark.titorenko@alces-software.com'
11
11
  s.homepage = 'http://github.com/mjtko/net-dhcp-ruby'
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  # dhcp_test.rb
2
3
  # 4 de octubre de 2007
3
4
  #
@@ -6,7 +7,7 @@ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
6
7
 
7
8
  require 'test/unit'
8
9
 
9
- require 'dhcp'
10
+ require 'net-dhcp'
10
11
 
11
12
  class TestDhcp_test < Test::Unit::TestCase
12
13
  # def setup
@@ -63,9 +64,7 @@ class TestDhcp_test < Test::Unit::TestCase
63
64
  d1 = DHCP::Discover.new
64
65
  d2 = DHCP::Message.from_udp_payload(d1.pack)
65
66
 
66
- #assert_equal d1, d2, 'udp data is not correctly parsed'
67
- puts d1.eql?(d2)
68
- puts(d1 == d2)
67
+ assert d1.eql?(d2), 'udp data is not correctly parsed'
69
68
  end
70
69
 
71
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-dhcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-12-08 00:00:00.000000000 Z
14
+ date: 2012-01-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70241335055920 !ruby/object:Gem::Requirement
18
+ requirement: &70354871060620 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70241335055920
26
+ version_requirements: *70354871060620
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
- requirement: &70241335055440 !ruby/object:Gem::Requirement
29
+ requirement: &70354871060140 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70241335055440
37
+ version_requirements: *70354871060140
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: bueller
40
- requirement: &70241335054900 !ruby/object:Gem::Requirement
40
+ requirement: &70354871059700 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70241335054900
48
+ version_requirements: *70354871059700
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rake
51
- requirement: &70241335054440 !ruby/object:Gem::Requirement
51
+ requirement: &70354871059240 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70241335054440
59
+ version_requirements: *70354871059240
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rcov
62
- requirement: &70241335054000 !ruby/object:Gem::Requirement
62
+ requirement: &70354871058740 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70241335054000
70
+ version_requirements: *70354871058740
71
71
  description: The aim of Net::DHCP is to provide a set of classes to low level handle
72
72
  the DHCP protocol (rfc2131, rfc2132, etc.). With Net::DHCP you will be able to craft
73
73
  custom DHCP packages and have access to all the fields defined for the protocol.
@@ -99,7 +99,7 @@ files:
99
99
  - net-dhcp.gemspec
100
100
  - spec/net-dhcp_spec.rb
101
101
  - spec/spec_helper.rb
102
- - test/dhcp_test.rb
102
+ - test/test_dhcp.rb
103
103
  homepage: http://github.com/mjtko/net-dhcp-ruby
104
104
  licenses: []
105
105
  post_install_message:
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  segments:
116
116
  - 0
117
- hash: 2925178242952011714
117
+ hash: -2659112004771839654
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
@@ -130,4 +130,4 @@ summary: set of classes to low level handle the DHCP protocol
130
130
  test_files:
131
131
  - spec/net-dhcp_spec.rb
132
132
  - spec/spec_helper.rb
133
- - test/dhcp_test.rb
133
+ - test/test_dhcp.rb