1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-module(fib_pf_route_socket).
-export([test/0, open/2]).
-include("fib.hrl").
test() ->
open(fun (_) -> ok end, fun (_) -> ok end).
open(OpenFun, ParseFun) ->
{ok, Socket} = socket:open(?PF_ROUTE, ?SOCK_RAW, ?AF_UNSPEC),
OpenFun(Socket),
recv(Socket, ParseFun).
recv(Socket, ParseFun) ->
case socket:recv(Socket, 0) of
{ok, <<Len:16/little-unsigned-integer, Rest/binary>>} ->
ToRead = Len - 2,
<<Pckt:ToRead/binary>> = Rest,
logger:warning("Got a packet ~p", [Pckt]),
ParseFun(Pckt),
recv(Socket, ParseFun);
Error ->
Error
end.
|