diff options
Diffstat (limited to 'src/pf_route_socket.erl')
-rw-r--r-- | src/pf_route_socket.erl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/pf_route_socket.erl b/src/pf_route_socket.erl new file mode 100644 index 0000000..a4f6ed5 --- /dev/null +++ b/src/pf_route_socket.erl @@ -0,0 +1,22 @@ +-module(pf_route_socket). +-export([test/0, open/5]). + +test() -> + open(17, 3, 0, fun (_) -> ok end, fun (_) -> ok end). + +open(PfRoute, SockRaw, AfUnspec, OpenFun, ParseFun) -> + {ok, Socket} = socket:open(PfRoute, SockRaw, AfUnspec), + 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. |