Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'cleanup'

  • Loading branch information...
commit 25e26ebb2b10357af8122abc28d364355dac0d53 2 parents be946a5 + 3e79ba0
@msantos authored
Showing with 68 additions and 39 deletions.
  1. +55 −0 include/packet.hrl
  2. +2 −2 src/bpf.erl
  3. +11 −37 src/packet.erl
View
55 include/packet.hrl
@@ -0,0 +1,55 @@
+%% Copyright (c) 2012, Michael Santos <michael.santos@gmail.com>
+%% All rights reserved.
+%%
+%% Redistribution and use in source and binary forms, with or without
+%% modification, are permitted provided that the following conditions
+%% are met:
+%%
+%% Redistributions of source code must retain the above copyright
+%% notice, this list of conditions and the following disclaimer.
+%%
+%% Redistributions in binary form must reproduce the above copyright
+%% notice, this list of conditions and the following disclaimer in the
+%% documentation and/or other materials provided with the distribution.
+%%
+%% Neither the name of the author nor the names of its contributors
+%% may be used to endorse or promote products derived from this software
+%% without specific prior written permission.
+%%
+%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+%% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+%% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+%% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+%% COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+%% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+%% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+%% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+%% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+%% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+%% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+%% POSSIBILITY OF SUCH DAMAGE.
+-define(SIOCGIFINDEX, 16#8933).
+-define(PF_PACKET, 17).
+
+% Options for retrieving device IP
+-define(SIOCGIFADDR, 16#8915).
+-define(PF_INET, 2).
+
+% Options for retrieving dev MAC address
+-define(SIOCGIFHWADDR, 16#8927).
+
+% Options for promiscuous mode
+-define(SOL_PACKET, 263).
+-define(PACKET_ADD_MEMBERSHIP, 1).
+-define(PACKET_DROP_MEMBERSHIP, 2).
+-define(PACKET_MR_PROMISC, 1).
+
+% Options for binding to interfaces
+-define(SOL_SOCKET, 1).
+-define(SO_BINDTODEVICE, 25).
+
+% Options for BPF filtering
+-define(SO_ATTACH_FILTER, 26).
+-define(SO_DETACH_FILTER, 27).
+
+-define(ETH_P_IP, 16#0800).
View
4 src/bpf.erl
@@ -1,4 +1,4 @@
-%% Copyright (c) 2011, Michael Santos <michael.santos@gmail.com>
+%% Copyright (c) 2011-2012, Michael Santos <michael.santos@gmail.com>
%% All rights reserved.
%%
%% Redistribution and use in source and binary forms, with or without
@@ -368,7 +368,7 @@ init(Socket, Dev) ->
% Return packets sent from the interface
{ok, _} = ctl(Socket, seesent, true),
- % Return packets immediately (do wait until full buffer)
+ % Return packets immediately (do not wait until buffer full)
{ok, _} = ctl(Socket, immediate, true),
% Get bpf buf len
View
48 src/packet.erl
@@ -1,4 +1,4 @@
-%% Copyright (c) 2010-2011, Michael Santos <michael.santos@gmail.com>
+%% Copyright (c) 2010-2012, Michael Santos <michael.santos@gmail.com>
%% All rights reserved.
%%
%% Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,7 @@
%% specific interfaces.
%%
-module(packet).
+-include("packet.hrl").
-export([
socket/0, socket/1,
iflist/0,
@@ -52,33 +53,6 @@
]).
--define(SIOCGIFINDEX, 16#8933).
--define(PF_PACKET, 17).
-
-% Options for retrieving device IP
--define(SIOCGIFADDR, 16#8915).
--define(PF_INET, 2).
-
-% Options for retrieving dev MAC address
--define(SIOCGIFHWADDR, 16#8927).
-
-% Options for promiscuous mode
--define(SOL_PACKET, 263).
--define(PACKET_ADD_MEMBERSHIP, 1).
--define(PACKET_DROP_MEMBERSHIP, 2).
--define(PACKET_MR_PROMISC, 1).
-
-% Options for binding to interfaces
--define(SOL_SOCKET, 1).
--define(SO_BINDTODEVICE, 25).
-
-% Options for BPF filtering
--define(SO_ATTACH_FILTER, 26).
--define(SO_DETACH_FILTER, 27).
-
--define(ETH_P_IP, 16#0800).
-
-
%%-------------------------------------------------------------------------
%% Convenience function to return a raw socket
%%-------------------------------------------------------------------------
@@ -104,9 +78,9 @@ arplookup(IPaddr) when is_list(IPaddr) ->
MAC.
arplookup_iter(FH, IPaddr) ->
- arplookup_iter1(FH, IPaddr, file:read_line(FH)).
+ arplookup_iter_1(FH, IPaddr, file:read_line(FH)).
-arplookup_iter1(FH, IPaddr, {ok, Line}) ->
+arplookup_iter_1(FH, IPaddr, {ok, Line}) ->
case string:tokens(Line, "\s\n") of
[IPaddr, _HWType, _Flags, MAC|_] ->
list_to_tuple([ erlang:list_to_integer(E, 16) ||
@@ -114,7 +88,7 @@ arplookup_iter1(FH, IPaddr, {ok, Line}) ->
_ ->
arplookup_iter(FH, IPaddr)
end;
-arplookup_iter1(_FH, _IPaddr, eof) ->
+arplookup_iter_1(_FH, _IPaddr, eof) ->
false.
@@ -128,9 +102,9 @@ gateway(Dev) ->
gateway_res(gateway_addr(Dev)).
gateway_res(false) -> false;
-gateway_res(IP) -> gateway_res1(arplookup(IP), IP).
-gateway_res1(false, _) -> false;
-gateway_res1(MAC, IP) -> {ok, MAC, IP}.
+gateway_res(IP) -> gateway_res_1(arplookup(IP), IP).
+gateway_res_1(false, _) -> false;
+gateway_res_1(MAC, IP) -> {ok, MAC, IP}.
gateway_addr(Dev) ->
{ok, FH} = file:open("/proc/net/route", [read,raw]),
@@ -139,9 +113,9 @@ gateway_addr(Dev) ->
IP.
gateway_addr_iter(FH, Dev) ->
- gateway_addr_iter1(FH, Dev, file:read_line(FH)).
+ gateway_addr_iter_1(FH, Dev, file:read_line(FH)).
-gateway_addr_iter1(FH, Dev, {ok, Line}) ->
+gateway_addr_iter_1(FH, Dev, {ok, Line}) ->
case string:tokens(Line, "\t") of
[Dev, "00000000", IP, "0003"|_] ->
gateway_addr_res(IP);
@@ -150,7 +124,7 @@ gateway_addr_iter1(FH, Dev, {ok, Line}) ->
_ ->
gateway_addr_iter(FH, Dev)
end;
-gateway_addr_iter1(_FH, _Dev, eof) ->
+gateway_addr_iter_1(_FH, _Dev, eof) ->
false.
gateway_addr_res(IPHex) ->
Please sign in to comment.
Something went wrong with that request. Please try again.