summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorMark J. Titorenko <mark.titorenko@alces-software.com>2011-11-17 20:32:43 +0000
committerMark J. Titorenko <mark.titorenko@alces-software.com>2011-11-17 20:32:43 +0000
commit93ae0b28b4623f6c2f3d92eea021f5058d72daf3 (patch)
tree3b182242540ec68483ec1c35891c3a6a84073341 /bin
parent808f45d378773b12e9ecc5b6af1a634a96014d5a (diff)
downloadnet-dhcp-ruby-93ae0b28b4623f6c2f3d92eea021f5058d72daf3.tar.gz
initial gemification with bueller
Diffstat (limited to 'bin')
-rw-r--r--bin/net-dhcp37
1 files changed, 37 insertions, 0 deletions
diff --git a/bin/net-dhcp b/bin/net-dhcp
new file mode 100644
index 0000000..9eaa3c5
--- /dev/null
+++ b/bin/net-dhcp
@@ -0,0 +1,37 @@
+# main.rb
+# 4 de octubre de 2007
+#
+
+require 'dhcp'
+require 'socket'
+require 'pcaplet'
+
+server_thread = Thread.new do
+ s = "Packets received by the filter:\n"
+ s << '-'*s.size + "\n"
+
+ dhcpdump = Pcaplet.new('-s 4096')
+
+ DHCP_PACKET = Pcap::Filter.new('port 67 or port 68', dhcpdump.capture)
+
+ dhcpdump.add_filter(DHCP_PACKET)
+ dhcpdump.each_packet {|pkt|
+ msg = DHCP::Message.from_udp_payload(pkt.udp_data)
+
+ s << "#{pkt.src}:#{pkt.sport} > #{pkt.dst}:#{pkt.dport}\n"
+ s << msg.to_s
+ puts s if s
+ }
+end
+
+discover = DHCP::Discover.new
+payload = discover.pack
+
+
+sckt = UDPSocket.new
+sckt.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST,true)
+sckt.bind('', 68)
+sckt.send(payload, 0, "<broadcast>", 67)
+
+trap('INT') {server_thread.kill}
+server_thread.join \ No newline at end of file