diff options
author | Mark J. Titorenko <mark.titorenko@alces-software.com> | 2011-11-17 20:32:43 +0000 |
---|---|---|
committer | Mark J. Titorenko <mark.titorenko@alces-software.com> | 2011-11-17 20:32:43 +0000 |
commit | 93ae0b28b4623f6c2f3d92eea021f5058d72daf3 (patch) | |
tree | 3b182242540ec68483ec1c35891c3a6a84073341 /bin | |
parent | 808f45d378773b12e9ecc5b6af1a634a96014d5a (diff) | |
download | net-dhcp-ruby-93ae0b28b4623f6c2f3d92eea021f5058d72daf3.tar.gz |
initial gemification with bueller
Diffstat (limited to 'bin')
-rw-r--r-- | bin/net-dhcp | 37 |
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 |