lib-dhcp 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +13 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +33 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/dhcp_dump +83 -0
- data/lib-dhcp.gemspec +31 -0
- data/lib/lib/dhcp.rb +276 -0
- data/lib/lib/dhcp/exception.rb +34 -0
- data/lib/lib/dhcp/messages/ack.rb +65 -0
- data/lib/lib/dhcp/messages/decline.rb +77 -0
- data/lib/lib/dhcp/messages/discover.rb +70 -0
- data/lib/lib/dhcp/messages/inform.rb +64 -0
- data/lib/lib/dhcp/messages/lease_active.rb +65 -0
- data/lib/lib/dhcp/messages/lease_query.rb +64 -0
- data/lib/lib/dhcp/messages/lease_unassigned.rb +64 -0
- data/lib/lib/dhcp/messages/lease_unknown.rb +64 -0
- data/lib/lib/dhcp/messages/message.rb +285 -0
- data/lib/lib/dhcp/messages/nack.rb +64 -0
- data/lib/lib/dhcp/messages/offer.rb +74 -0
- data/lib/lib/dhcp/messages/release.rb +64 -0
- data/lib/lib/dhcp/messages/request.rb +71 -0
- data/lib/lib/dhcp/options.rb +73 -0
- data/lib/lib/dhcp/options/option.rb +249 -0
- data/lib/lib/dhcp/options/option0.rb +34 -0
- data/lib/lib/dhcp/options/option1.rb +24 -0
- data/lib/lib/dhcp/options/option10.rb +20 -0
- data/lib/lib/dhcp/options/option100.rb +17 -0
- data/lib/lib/dhcp/options/option101.rb +17 -0
- data/lib/lib/dhcp/options/option102.rb +17 -0
- data/lib/lib/dhcp/options/option103.rb +17 -0
- data/lib/lib/dhcp/options/option104.rb +17 -0
- data/lib/lib/dhcp/options/option105.rb +17 -0
- data/lib/lib/dhcp/options/option106.rb +17 -0
- data/lib/lib/dhcp/options/option107.rb +17 -0
- data/lib/lib/dhcp/options/option108.rb +17 -0
- data/lib/lib/dhcp/options/option109.rb +17 -0
- data/lib/lib/dhcp/options/option11.rb +20 -0
- data/lib/lib/dhcp/options/option110.rb +17 -0
- data/lib/lib/dhcp/options/option111.rb +17 -0
- data/lib/lib/dhcp/options/option112.rb +17 -0
- data/lib/lib/dhcp/options/option113.rb +17 -0
- data/lib/lib/dhcp/options/option114.rb +17 -0
- data/lib/lib/dhcp/options/option115.rb +17 -0
- data/lib/lib/dhcp/options/option116.rb +17 -0
- data/lib/lib/dhcp/options/option117.rb +17 -0
- data/lib/lib/dhcp/options/option118.rb +17 -0
- data/lib/lib/dhcp/options/option119.rb +17 -0
- data/lib/lib/dhcp/options/option12.rb +20 -0
- data/lib/lib/dhcp/options/option120.rb +17 -0
- data/lib/lib/dhcp/options/option121.rb +17 -0
- data/lib/lib/dhcp/options/option122.rb +341 -0
- data/lib/lib/dhcp/options/option123.rb +17 -0
- data/lib/lib/dhcp/options/option124.rb +17 -0
- data/lib/lib/dhcp/options/option125.rb +17 -0
- data/lib/lib/dhcp/options/option126.rb +17 -0
- data/lib/lib/dhcp/options/option127.rb +17 -0
- data/lib/lib/dhcp/options/option128.rb +17 -0
- data/lib/lib/dhcp/options/option129.rb +17 -0
- data/lib/lib/dhcp/options/option13.rb +43 -0
- data/lib/lib/dhcp/options/option130.rb +17 -0
- data/lib/lib/dhcp/options/option131.rb +17 -0
- data/lib/lib/dhcp/options/option132.rb +17 -0
- data/lib/lib/dhcp/options/option133.rb +17 -0
- data/lib/lib/dhcp/options/option134.rb +17 -0
- data/lib/lib/dhcp/options/option135.rb +17 -0
- data/lib/lib/dhcp/options/option136.rb +17 -0
- data/lib/lib/dhcp/options/option137.rb +17 -0
- data/lib/lib/dhcp/options/option138.rb +17 -0
- data/lib/lib/dhcp/options/option139.rb +17 -0
- data/lib/lib/dhcp/options/option14.rb +21 -0
- data/lib/lib/dhcp/options/option140.rb +17 -0
- data/lib/lib/dhcp/options/option141.rb +17 -0
- data/lib/lib/dhcp/options/option142.rb +17 -0
- data/lib/lib/dhcp/options/option143.rb +17 -0
- data/lib/lib/dhcp/options/option144.rb +17 -0
- data/lib/lib/dhcp/options/option145.rb +17 -0
- data/lib/lib/dhcp/options/option146.rb +17 -0
- data/lib/lib/dhcp/options/option147.rb +17 -0
- data/lib/lib/dhcp/options/option148.rb +17 -0
- data/lib/lib/dhcp/options/option149.rb +17 -0
- data/lib/lib/dhcp/options/option15.rb +20 -0
- data/lib/lib/dhcp/options/option150.rb +17 -0
- data/lib/lib/dhcp/options/option151.rb +17 -0
- data/lib/lib/dhcp/options/option152.rb +17 -0
- data/lib/lib/dhcp/options/option153.rb +17 -0
- data/lib/lib/dhcp/options/option154.rb +17 -0
- data/lib/lib/dhcp/options/option155.rb +17 -0
- data/lib/lib/dhcp/options/option156.rb +17 -0
- data/lib/lib/dhcp/options/option157.rb +17 -0
- data/lib/lib/dhcp/options/option158.rb +17 -0
- data/lib/lib/dhcp/options/option159.rb +17 -0
- data/lib/lib/dhcp/options/option16.rb +19 -0
- data/lib/lib/dhcp/options/option160.rb +17 -0
- data/lib/lib/dhcp/options/option161.rb +17 -0
- data/lib/lib/dhcp/options/option162.rb +17 -0
- data/lib/lib/dhcp/options/option163.rb +17 -0
- data/lib/lib/dhcp/options/option164.rb +17 -0
- data/lib/lib/dhcp/options/option165.rb +17 -0
- data/lib/lib/dhcp/options/option166.rb +17 -0
- data/lib/lib/dhcp/options/option167.rb +17 -0
- data/lib/lib/dhcp/options/option168.rb +17 -0
- data/lib/lib/dhcp/options/option169.rb +17 -0
- data/lib/lib/dhcp/options/option17.rb +22 -0
- data/lib/lib/dhcp/options/option170.rb +17 -0
- data/lib/lib/dhcp/options/option171.rb +17 -0
- data/lib/lib/dhcp/options/option172.rb +17 -0
- data/lib/lib/dhcp/options/option173.rb +17 -0
- data/lib/lib/dhcp/options/option174.rb +17 -0
- data/lib/lib/dhcp/options/option175.rb +17 -0
- data/lib/lib/dhcp/options/option176.rb +17 -0
- data/lib/lib/dhcp/options/option177.rb +17 -0
- data/lib/lib/dhcp/options/option178.rb +17 -0
- data/lib/lib/dhcp/options/option179.rb +17 -0
- data/lib/lib/dhcp/options/option18.rb +23 -0
- data/lib/lib/dhcp/options/option180.rb +17 -0
- data/lib/lib/dhcp/options/option181.rb +17 -0
- data/lib/lib/dhcp/options/option182.rb +17 -0
- data/lib/lib/dhcp/options/option183.rb +17 -0
- data/lib/lib/dhcp/options/option184.rb +17 -0
- data/lib/lib/dhcp/options/option185.rb +17 -0
- data/lib/lib/dhcp/options/option186.rb +17 -0
- data/lib/lib/dhcp/options/option187.rb +17 -0
- data/lib/lib/dhcp/options/option188.rb +17 -0
- data/lib/lib/dhcp/options/option189.rb +17 -0
- data/lib/lib/dhcp/options/option19.rb +20 -0
- data/lib/lib/dhcp/options/option190.rb +17 -0
- data/lib/lib/dhcp/options/option191.rb +17 -0
- data/lib/lib/dhcp/options/option192.rb +17 -0
- data/lib/lib/dhcp/options/option193.rb +17 -0
- data/lib/lib/dhcp/options/option194.rb +17 -0
- data/lib/lib/dhcp/options/option195.rb +17 -0
- data/lib/lib/dhcp/options/option196.rb +17 -0
- data/lib/lib/dhcp/options/option197.rb +17 -0
- data/lib/lib/dhcp/options/option198.rb +17 -0
- data/lib/lib/dhcp/options/option199.rb +17 -0
- data/lib/lib/dhcp/options/option2.rb +45 -0
- data/lib/lib/dhcp/options/option20.rb +22 -0
- data/lib/lib/dhcp/options/option200.rb +17 -0
- data/lib/lib/dhcp/options/option201.rb +17 -0
- data/lib/lib/dhcp/options/option202.rb +17 -0
- data/lib/lib/dhcp/options/option203.rb +17 -0
- data/lib/lib/dhcp/options/option204.rb +17 -0
- data/lib/lib/dhcp/options/option205.rb +17 -0
- data/lib/lib/dhcp/options/option206.rb +17 -0
- data/lib/lib/dhcp/options/option207.rb +17 -0
- data/lib/lib/dhcp/options/option208.rb +17 -0
- data/lib/lib/dhcp/options/option209.rb +17 -0
- data/lib/lib/dhcp/options/option21.rb +87 -0
- data/lib/lib/dhcp/options/option210.rb +17 -0
- data/lib/lib/dhcp/options/option211.rb +17 -0
- data/lib/lib/dhcp/options/option212.rb +17 -0
- data/lib/lib/dhcp/options/option213.rb +17 -0
- data/lib/lib/dhcp/options/option214.rb +17 -0
- data/lib/lib/dhcp/options/option215.rb +17 -0
- data/lib/lib/dhcp/options/option216.rb +17 -0
- data/lib/lib/dhcp/options/option217.rb +17 -0
- data/lib/lib/dhcp/options/option218.rb +17 -0
- data/lib/lib/dhcp/options/option219.rb +17 -0
- data/lib/lib/dhcp/options/option22.rb +43 -0
- data/lib/lib/dhcp/options/option220.rb +17 -0
- data/lib/lib/dhcp/options/option221.rb +17 -0
- data/lib/lib/dhcp/options/option222.rb +17 -0
- data/lib/lib/dhcp/options/option223.rb +17 -0
- data/lib/lib/dhcp/options/option224.rb +17 -0
- data/lib/lib/dhcp/options/option225.rb +17 -0
- data/lib/lib/dhcp/options/option226.rb +17 -0
- data/lib/lib/dhcp/options/option227.rb +17 -0
- data/lib/lib/dhcp/options/option228.rb +17 -0
- data/lib/lib/dhcp/options/option229.rb +17 -0
- data/lib/lib/dhcp/options/option23.rb +44 -0
- data/lib/lib/dhcp/options/option230.rb +17 -0
- data/lib/lib/dhcp/options/option231.rb +17 -0
- data/lib/lib/dhcp/options/option232.rb +17 -0
- data/lib/lib/dhcp/options/option233.rb +17 -0
- data/lib/lib/dhcp/options/option234.rb +17 -0
- data/lib/lib/dhcp/options/option235.rb +17 -0
- data/lib/lib/dhcp/options/option236.rb +17 -0
- data/lib/lib/dhcp/options/option237.rb +17 -0
- data/lib/lib/dhcp/options/option238.rb +17 -0
- data/lib/lib/dhcp/options/option239.rb +17 -0
- data/lib/lib/dhcp/options/option24.rb +45 -0
- data/lib/lib/dhcp/options/option240.rb +17 -0
- data/lib/lib/dhcp/options/option241.rb +17 -0
- data/lib/lib/dhcp/options/option242.rb +17 -0
- data/lib/lib/dhcp/options/option243.rb +17 -0
- data/lib/lib/dhcp/options/option244.rb +17 -0
- data/lib/lib/dhcp/options/option245.rb +17 -0
- data/lib/lib/dhcp/options/option246.rb +17 -0
- data/lib/lib/dhcp/options/option247.rb +17 -0
- data/lib/lib/dhcp/options/option248.rb +17 -0
- data/lib/lib/dhcp/options/option249.rb +17 -0
- data/lib/lib/dhcp/options/option25.rb +20 -0
- data/lib/lib/dhcp/options/option250.rb +17 -0
- data/lib/lib/dhcp/options/option251.rb +17 -0
- data/lib/lib/dhcp/options/option252.rb +17 -0
- data/lib/lib/dhcp/options/option253.rb +17 -0
- data/lib/lib/dhcp/options/option254.rb +17 -0
- data/lib/lib/dhcp/options/option255.rb +29 -0
- data/lib/lib/dhcp/options/option26.rb +45 -0
- data/lib/lib/dhcp/options/option27.rb +16 -0
- data/lib/lib/dhcp/options/option28.rb +21 -0
- data/lib/lib/dhcp/options/option29.rb +16 -0
- data/lib/lib/dhcp/options/option3.rb +22 -0
- data/lib/lib/dhcp/options/option30.rb +16 -0
- data/lib/lib/dhcp/options/option31.rb +16 -0
- data/lib/lib/dhcp/options/option32.rb +18 -0
- data/lib/lib/dhcp/options/option33.rb +20 -0
- data/lib/lib/dhcp/options/option34.rb +16 -0
- data/lib/lib/dhcp/options/option35.rb +43 -0
- data/lib/lib/dhcp/options/option36.rb +16 -0
- data/lib/lib/dhcp/options/option37.rb +43 -0
- data/lib/lib/dhcp/options/option38.rb +43 -0
- data/lib/lib/dhcp/options/option39.rb +16 -0
- data/lib/lib/dhcp/options/option4.rb +21 -0
- data/lib/lib/dhcp/options/option40.rb +18 -0
- data/lib/lib/dhcp/options/option41.rb +18 -0
- data/lib/lib/dhcp/options/option42.rb +22 -0
- data/lib/lib/dhcp/options/option43.rb +16 -0
- data/lib/lib/dhcp/options/option44.rb +17 -0
- data/lib/lib/dhcp/options/option45.rb +18 -0
- data/lib/lib/dhcp/options/option46.rb +43 -0
- data/lib/lib/dhcp/options/option47.rb +17 -0
- data/lib/lib/dhcp/options/option48.rb +17 -0
- data/lib/lib/dhcp/options/option49.rb +17 -0
- data/lib/lib/dhcp/options/option5.rb +23 -0
- data/lib/lib/dhcp/options/option50.rb +16 -0
- data/lib/lib/dhcp/options/option51.rb +43 -0
- data/lib/lib/dhcp/options/option52.rb +45 -0
- data/lib/lib/dhcp/options/option53.rb +50 -0
- data/lib/lib/dhcp/options/option54.rb +16 -0
- data/lib/lib/dhcp/options/option55.rb +52 -0
- data/lib/lib/dhcp/options/option56.rb +20 -0
- data/lib/lib/dhcp/options/option57.rb +52 -0
- data/lib/lib/dhcp/options/option58.rb +45 -0
- data/lib/lib/dhcp/options/option59.rb +45 -0
- data/lib/lib/dhcp/options/option6.rb +23 -0
- data/lib/lib/dhcp/options/option60.rb +16 -0
- data/lib/lib/dhcp/options/option61.rb +37 -0
- data/lib/lib/dhcp/options/option62.rb +16 -0
- data/lib/lib/dhcp/options/option63.rb +16 -0
- data/lib/lib/dhcp/options/option64.rb +20 -0
- data/lib/lib/dhcp/options/option65.rb +17 -0
- data/lib/lib/dhcp/options/option66.rb +20 -0
- data/lib/lib/dhcp/options/option67.rb +20 -0
- data/lib/lib/dhcp/options/option68.rb +19 -0
- data/lib/lib/dhcp/options/option69.rb +17 -0
- data/lib/lib/dhcp/options/option7.rb +22 -0
- data/lib/lib/dhcp/options/option70.rb +17 -0
- data/lib/lib/dhcp/options/option71.rb +17 -0
- data/lib/lib/dhcp/options/option72.rb +17 -0
- data/lib/lib/dhcp/options/option73.rb +17 -0
- data/lib/lib/dhcp/options/option74.rb +17 -0
- data/lib/lib/dhcp/options/option75.rb +17 -0
- data/lib/lib/dhcp/options/option76.rb +17 -0
- data/lib/lib/dhcp/options/option77.rb +16 -0
- data/lib/lib/dhcp/options/option78.rb +16 -0
- data/lib/lib/dhcp/options/option79.rb +16 -0
- data/lib/lib/dhcp/options/option8.rb +22 -0
- data/lib/lib/dhcp/options/option80.rb +16 -0
- data/lib/lib/dhcp/options/option81.rb +16 -0
- data/lib/lib/dhcp/options/option82.rb +20 -0
- data/lib/lib/dhcp/options/option83.rb +16 -0
- data/lib/lib/dhcp/options/option84.rb +16 -0
- data/lib/lib/dhcp/options/option85.rb +16 -0
- data/lib/lib/dhcp/options/option86.rb +17 -0
- data/lib/lib/dhcp/options/option87.rb +16 -0
- data/lib/lib/dhcp/options/option88.rb +16 -0
- data/lib/lib/dhcp/options/option89.rb +16 -0
- data/lib/lib/dhcp/options/option9.rb +21 -0
- data/lib/lib/dhcp/options/option90.rb +16 -0
- data/lib/lib/dhcp/options/option91.rb +17 -0
- data/lib/lib/dhcp/options/option92.rb +17 -0
- data/lib/lib/dhcp/options/option93.rb +17 -0
- data/lib/lib/dhcp/options/option94.rb +17 -0
- data/lib/lib/dhcp/options/option95.rb +17 -0
- data/lib/lib/dhcp/options/option96.rb +17 -0
- data/lib/lib/dhcp/options/option97.rb +17 -0
- data/lib/lib/dhcp/options/option98.rb +17 -0
- data/lib/lib/dhcp/options/option99.rb +17 -0
- data/lib/lib/dhcp/options/sub_option.rb +32 -0
- data/lib/lib/dhcp/options/type/bool.rb +55 -0
- data/lib/lib/dhcp/options/type/ip_address.rb +73 -0
- data/lib/lib/dhcp/options/type/ip_array.rb +41 -0
- data/lib/lib/dhcp/options/type/netmask.rb +56 -0
- data/lib/lib/dhcp/options/type/raw.rb +51 -0
- data/lib/lib/dhcp/options/type/string.rb +49 -0
- data/lib/lib/dhcp/options/type/sub_option.rb +83 -0
- data/lib/lib/dhcp/packet.rb +96 -0
- data/lib/lib/dhcp/version.rb +5 -0
- metadata +409 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/ip_array'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option48 < Option
|
12
|
+
# X Window System Font Server Option, The code for this option is 48.
|
13
|
+
# The minimum length of this option is 4 octets, and the length MUST be a multiple of 4.
|
14
|
+
include Type::IPArray
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/ip_array'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option49 < Option
|
12
|
+
# X Window System Display Manager Option, The code for the this option is 49.
|
13
|
+
# The minimum length of this optionis 4, and the length MUST be a multiple of 4.
|
14
|
+
include Type::IPArray
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/ip_array'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option5 < Option
|
12
|
+
# Name Server Option, The minimum length for the router option is 4 octets, and the length MUST always be
|
13
|
+
# a multiple of 4 Multiple IP ADDRESS
|
14
|
+
|
15
|
+
include Type::IPArray
|
16
|
+
|
17
|
+
alias_method :name_server, :payload
|
18
|
+
alias_method :ns, :payload
|
19
|
+
alias_method :name_server=, :payload=
|
20
|
+
alias_method :ns=, :payload=
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/ip_address'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option50 < Option
|
12
|
+
# Requested IP Address The code for this option is 50, and its length is 4.
|
13
|
+
include Type::IPAddress
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option51 < Option
|
11
|
+
# IP Address Lease Time The code for this option is 51, and its length is 4.
|
12
|
+
|
13
|
+
def_delegators :@payload, :to_s
|
14
|
+
|
15
|
+
def initialize(leasetime)
|
16
|
+
super LEASE_TIME, leasetime.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def payload=(leasetime)
|
20
|
+
@payload = leasetime.to_i
|
21
|
+
end
|
22
|
+
|
23
|
+
def pack
|
24
|
+
[@oid, 4, @payload].pack('C2N')
|
25
|
+
end
|
26
|
+
|
27
|
+
def len
|
28
|
+
4
|
29
|
+
end
|
30
|
+
|
31
|
+
alias_method :leasetime, :payload
|
32
|
+
alias_method :leasetime=, :payload=
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.unpack(oid, len, payload)
|
37
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == LEASE_TIME
|
38
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 4
|
39
|
+
self.new payload.unpack('N').first.to_i
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option52 < Option
|
11
|
+
# Option Overload The code for this option is 52, and its length is 1. Legal values 1,2,3
|
12
|
+
|
13
|
+
def_delegators :@payload, :to_s
|
14
|
+
|
15
|
+
def initialize(overload)
|
16
|
+
raise ArgumentError, "Illegal value for OPTION OVERLOAD = #{overload}" unless (1..3).include? overload.to_i
|
17
|
+
super OPTION_OVERLOAD, overload.to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
def payload=(overload)
|
21
|
+
raise ArgumentError, "Illegal value for OPTION OVERLOAD = #{overload}" unless (1..3).include? overload.to_i
|
22
|
+
@payload = overload.to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
def pack
|
26
|
+
[@oid, 1, @payload].pack('C3')
|
27
|
+
end
|
28
|
+
|
29
|
+
def len
|
30
|
+
1
|
31
|
+
end
|
32
|
+
|
33
|
+
alias_method :overload, :payload
|
34
|
+
alias_method :overload=, :payload=
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def self.unpack(oid, len, payload)
|
39
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == OPTION_OVERLOAD
|
40
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 1
|
41
|
+
self.new payload.unpack('C').first.to_i
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option53 < Option
|
11
|
+
# DHCP MESSAGE TYPE - This option is used to convey the type of the DHCP message.
|
12
|
+
# The code for this option is 53, and its length is 1.
|
13
|
+
|
14
|
+
def_delegators :@payload, :to_s
|
15
|
+
|
16
|
+
def initialize(message_type)
|
17
|
+
raise ArgumentError, "Illegal value for DHCP Message Type = #{message_type}" unless (1..255).include? message_type.to_i
|
18
|
+
super MESSAGE_TYPE, message_type.to_i
|
19
|
+
end
|
20
|
+
|
21
|
+
def payload=(message_type)
|
22
|
+
raise ArgumentError, "Illegal value for DHCP Message Type = #{message_type}" unless (1..255).include? message_type.to_i
|
23
|
+
@payload = message_type.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
def pack
|
27
|
+
[@oid, 1, @payload].pack('C3')
|
28
|
+
end
|
29
|
+
|
30
|
+
def len
|
31
|
+
1
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
Lib::DHCP::Message::NAME[@payload.to_i].to_s.upcase
|
36
|
+
end
|
37
|
+
|
38
|
+
alias_method :message_type, :payload
|
39
|
+
alias_method :message_type=, :payload=
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def self.unpack(oid, len, payload)
|
44
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == MESSAGE_TYPE
|
45
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 1
|
46
|
+
self.new payload.unpack('C').first.to_i
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/ip_address'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option54 < Option
|
12
|
+
# Server Identifier The code for this option is 54, and its length is 4.
|
13
|
+
include Type::IPAddress
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option55 < Option
|
11
|
+
# Parameter Request List The code for this option is 55. Its minimum length is 1.
|
12
|
+
|
13
|
+
def_delegators :@payload, :map, :map!, :[], :[]=, :each, :<<, :shift, :pop
|
14
|
+
|
15
|
+
def initialize(*request_option)
|
16
|
+
super PARAMETER_REQUEST, request_option
|
17
|
+
end
|
18
|
+
|
19
|
+
def pack
|
20
|
+
[@oid, @payload.size, *@payload].pack('C*')
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
@payload.join(', ')
|
25
|
+
end
|
26
|
+
|
27
|
+
def len
|
28
|
+
@payload.size
|
29
|
+
end
|
30
|
+
|
31
|
+
def payload=(*request_option)
|
32
|
+
@payload = request_option
|
33
|
+
end
|
34
|
+
|
35
|
+
# def <<(request_option)
|
36
|
+
# @payload << request_option
|
37
|
+
# end
|
38
|
+
|
39
|
+
alias_method :request_option, :payload
|
40
|
+
alias_method :request_option=, :payload=
|
41
|
+
alias_method :add, :<<
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def self.unpack(oid, len, payload)
|
46
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == PARAMETER_REQUEST
|
47
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len > 1
|
48
|
+
self.new *payload.unpack('C*')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
require_relative 'type/string'
|
8
|
+
|
9
|
+
module Lib
|
10
|
+
module DHCP
|
11
|
+
class Option56 < Option
|
12
|
+
# Message The code for this option is 56 and its minimum length is 1.
|
13
|
+
|
14
|
+
include Type::String
|
15
|
+
|
16
|
+
alias_method :message, :payload
|
17
|
+
alias_method :message=, :payload=
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option57 < Option
|
11
|
+
# Maximum DHCP Message Size. The code for this option is 57, and its length is 2.
|
12
|
+
# The minimum legal value is 576 octets.
|
13
|
+
|
14
|
+
def_delegators :@payload, :to_s
|
15
|
+
|
16
|
+
def initialize(message_size)
|
17
|
+
# raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576
|
18
|
+
super MAX_MESSAGE_SIZE, message_size.to_i
|
19
|
+
end
|
20
|
+
|
21
|
+
def pack
|
22
|
+
[@oid, 2, @payload.to_i].pack('C2n')
|
23
|
+
end
|
24
|
+
|
25
|
+
def len
|
26
|
+
2
|
27
|
+
end
|
28
|
+
|
29
|
+
def payload=(message_size)
|
30
|
+
# raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576
|
31
|
+
@payload = message_size.to_i
|
32
|
+
end
|
33
|
+
|
34
|
+
alias_method :max_message_size, :payload
|
35
|
+
alias_method :max_message_size=, :payload=
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def self.unpack(oid, len, payload)
|
40
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == MAX_MESSAGE_SIZE
|
41
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 2
|
42
|
+
|
43
|
+
message_size = payload.unpack('n').first.to_i
|
44
|
+
|
45
|
+
#raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576
|
46
|
+
|
47
|
+
self.new message_size
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option58 < Option
|
11
|
+
# Renewal (T1) Time Value The code for this option is 58, and its length is 4.
|
12
|
+
|
13
|
+
def_delegators :@payload, :to_s
|
14
|
+
|
15
|
+
def initialize(renewal_time)
|
16
|
+
super RENEW_TIME, renewal_time.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def pack
|
20
|
+
[@oid, 4, @payload.to_i].pack('C2N')
|
21
|
+
end
|
22
|
+
|
23
|
+
def len
|
24
|
+
4
|
25
|
+
end
|
26
|
+
|
27
|
+
def payload=(renewal_time)
|
28
|
+
@payload = renewal_time.to_i
|
29
|
+
end
|
30
|
+
|
31
|
+
alias_method :renewal_time, :payload
|
32
|
+
alias_method :renewal_time=, :payload=
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.unpack(oid, len, payload)
|
37
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == RENEW_TIME
|
38
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len.to_i == 4
|
39
|
+
|
40
|
+
self.new payload.unpack('N').first.to_i
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#Author: Piotr Wojcieszonek
|
2
|
+
#e-mail: piotr@wojcieszonek.pl
|
3
|
+
# Copyright 22.03.2016 by Piotr Wojcieszonek
|
4
|
+
|
5
|
+
|
6
|
+
require_relative 'option'
|
7
|
+
|
8
|
+
module Lib
|
9
|
+
module DHCP
|
10
|
+
class Option59 < Option
|
11
|
+
# Rebinding (T2) Time Value The code for this option is 59, and its length is 4.
|
12
|
+
|
13
|
+
def_delegators :@payload, :to_s
|
14
|
+
|
15
|
+
def initialize(rebinding_time)
|
16
|
+
super REBIND_TIME, rebinding_time.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def pack
|
20
|
+
[@oid, 4, @payload.to_i].pack('C2N')
|
21
|
+
end
|
22
|
+
|
23
|
+
def len
|
24
|
+
4
|
25
|
+
end
|
26
|
+
|
27
|
+
def payload=(rebinding_time)
|
28
|
+
@payload = rebinding_time.to_i
|
29
|
+
end
|
30
|
+
|
31
|
+
alias_method :rebinding_time, :payload
|
32
|
+
alias_method :rebinding_time=, :payload=
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.unpack(oid, len, payload)
|
37
|
+
raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == REBIND_TIME
|
38
|
+
raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 4
|
39
|
+
|
40
|
+
self.new payload.unpack('N').first.to_i
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|