net-dhcp 1.0.0
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/.document +11 -0
- data/.gitignore +40 -0
- data/Gemfile +4 -0
- data/LICENSE +12 -0
- data/README +14 -0
- data/README.etd.original +9 -0
- data/Rakefile +42 -0
- data/bin/net-dhcp +37 -0
- data/lib/net-dhcp.rb +2 -0
- data/lib/net-dhcp/version.rb +5 -0
- data/lib/net/dhcp.rb +48 -0
- data/lib/net/dhcp/constants.rb +182 -0
- data/lib/net/dhcp/core.rb +322 -0
- data/lib/net/dhcp/options.rb +621 -0
- data/lib/net/dhcp/oui.txt +68928 -0
- data/net-dhcp.gemspec +35 -0
- data/spec/net-dhcp_spec.rb +7 -0
- data/spec/spec_helper.rb +19 -0
- data/test/dhcp_test.rb +71 -0
- metadata +142 -0
data/net-dhcp.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require 'net-dhcp/version'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'net-dhcp'
|
6
|
+
s.version = Net::Dhcp::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.date = '2011-11-17'
|
9
|
+
s.authors = ['daniel martin gomez (etd)', 'syonbori', 'Mark J. Titorenko']
|
10
|
+
s.email = 'mark.titorenko@alces-software.com'
|
11
|
+
s.homepage = 'http://github.com/mjtko/net-dhcp'
|
12
|
+
s.summary = %Q{set of classes to low level handle the DHCP protocol}
|
13
|
+
s.description = %Q{The aim of Net::DHCP is to provide a set of classes to low level handle the DHCP protocol (rfc2131, rfc2132, etc.). With Net::DHCP you will be able to craft custom DHCP packages and have access to all the fields defined for the protocol.}
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
'LICENSE',
|
16
|
+
'README',
|
17
|
+
]
|
18
|
+
|
19
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 1.3.7')
|
20
|
+
s.rubygems_version = '1.3.7'
|
21
|
+
s.specification_version = 3
|
22
|
+
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ['lib']
|
27
|
+
|
28
|
+
s.add_runtime_dependency 'pcap', '~> 0.7.0'
|
29
|
+
s.add_development_dependency 'rspec'
|
30
|
+
s.add_development_dependency 'bundler'
|
31
|
+
s.add_development_dependency 'bueller'
|
32
|
+
s.add_development_dependency 'rake'
|
33
|
+
s.add_development_dependency 'rcov'
|
34
|
+
end
|
35
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
begin
|
3
|
+
Bundler.setup
|
4
|
+
rescue Bundler::BundlerError => e
|
5
|
+
$stderr.puts e.message
|
6
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
7
|
+
exit e.status_code
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'rspec'
|
11
|
+
require 'net-dhcp'
|
12
|
+
|
13
|
+
# Requires supporting files with custom matchers and macros, etc,
|
14
|
+
# in ./support/ and its subdirectories.
|
15
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
|
19
|
+
end
|
data/test/dhcp_test.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# dhcp_test.rb
|
2
|
+
# 4 de octubre de 2007
|
3
|
+
#
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
|
9
|
+
require 'dhcp'
|
10
|
+
|
11
|
+
class TestDhcp_test < Test::Unit::TestCase
|
12
|
+
# def setup
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# def teardown
|
16
|
+
# end
|
17
|
+
|
18
|
+
def test_packing
|
19
|
+
# assert_equal("foo", bar)
|
20
|
+
|
21
|
+
# assert, assert_block, assert_equal, assert_in_delta, assert_instance_of,
|
22
|
+
# assert_kind_of, assert_match, assert_nil, assert_no_match, assert_not_equal,
|
23
|
+
# assert_not_nil, assert_not_same, assert_nothing_raised, assert_nothing_thrown,
|
24
|
+
# assert_operator, assert_raise, assert_raises, assert_respond_to, assert_same,
|
25
|
+
# assert_send, assert_throws
|
26
|
+
|
27
|
+
d = DHCP::Discover.new
|
28
|
+
expected = [
|
29
|
+
d.op, d.htype, d.hlen, d.hops,
|
30
|
+
d.xid,
|
31
|
+
d.secs, d.flags,
|
32
|
+
d.ciaddr,
|
33
|
+
d.yiaddr,
|
34
|
+
d.siaddr,
|
35
|
+
d.giaddr,
|
36
|
+
]
|
37
|
+
expected += d.chaddr
|
38
|
+
expected += [0x00]*192
|
39
|
+
expected << $DHCP_MAGIC
|
40
|
+
|
41
|
+
payload = d.pack
|
42
|
+
|
43
|
+
actual = payload.unpack('C4Nn2N4C16C192N')
|
44
|
+
|
45
|
+
assert_equal expected, actual, 'pack does not work'
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_size
|
49
|
+
d = DHCP::Discover.new
|
50
|
+
payload = d.pack
|
51
|
+
assert_equal 300, payload.size, 'size of the payload does not match'
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_eql?
|
55
|
+
d1 = DHCP::Discover.new
|
56
|
+
d2 = DHCP::Discover.new
|
57
|
+
|
58
|
+
assert_not_equal d1, d2, '.eql? two messages with different xid field are considered equal'
|
59
|
+
assert_equal true, d1.options.eql?(d1.options), 'eql? is not working for comparing option arrays'
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_from_udp_payload
|
63
|
+
d1 = DHCP::Discover.new
|
64
|
+
d2 = DHCP::Message.from_udp_payload(d1.pack)
|
65
|
+
|
66
|
+
#assert_equal d1, d2, 'udp data is not correctly parsed'
|
67
|
+
puts d1.eql?(d2)
|
68
|
+
puts(d1 == d2)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: net-dhcp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- daniel martin gomez (etd)
|
9
|
+
- syonbori
|
10
|
+
- Mark J. Titorenko
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2011-11-17 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: pcap
|
18
|
+
requirement: &70274399157680 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.7.0
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *70274399157680
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: &70274399157220 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *70274399157220
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: bundler
|
40
|
+
requirement: &70274399156680 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
type: :development
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *70274399156680
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: bueller
|
51
|
+
requirement: &70274399156240 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *70274399156240
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rake
|
62
|
+
requirement: &70274399155780 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *70274399155780
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rcov
|
73
|
+
requirement: &70274399155240 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *70274399155240
|
82
|
+
description: The aim of Net::DHCP is to provide a set of classes to low level handle
|
83
|
+
the DHCP protocol (rfc2131, rfc2132, etc.). With Net::DHCP you will be able to craft
|
84
|
+
custom DHCP packages and have access to all the fields defined for the protocol.
|
85
|
+
email: mark.titorenko@alces-software.com
|
86
|
+
executables:
|
87
|
+
- net-dhcp
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files:
|
90
|
+
- LICENSE
|
91
|
+
- README
|
92
|
+
files:
|
93
|
+
- .document
|
94
|
+
- .gitignore
|
95
|
+
- Gemfile
|
96
|
+
- LICENSE
|
97
|
+
- README
|
98
|
+
- README.etd.original
|
99
|
+
- Rakefile
|
100
|
+
- bin/net-dhcp
|
101
|
+
- lib/net-dhcp.rb
|
102
|
+
- lib/net-dhcp/version.rb
|
103
|
+
- lib/net/dhcp.rb
|
104
|
+
- lib/net/dhcp/constants.rb
|
105
|
+
- lib/net/dhcp/core.rb
|
106
|
+
- lib/net/dhcp/options.rb
|
107
|
+
- lib/net/dhcp/oui.txt
|
108
|
+
- net-dhcp.gemspec
|
109
|
+
- spec/net-dhcp_spec.rb
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
- test/dhcp_test.rb
|
112
|
+
homepage: http://github.com/mjtko/net-dhcp
|
113
|
+
licenses: []
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
hash: 518742913826632758
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.3.7
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 1.8.10
|
136
|
+
signing_key:
|
137
|
+
specification_version: 3
|
138
|
+
summary: set of classes to low level handle the DHCP protocol
|
139
|
+
test_files:
|
140
|
+
- spec/net-dhcp_spec.rb
|
141
|
+
- spec/spec_helper.rb
|
142
|
+
- test/dhcp_test.rb
|