EPCAP: return number of processed packets
diff --git a/src/osmo_ss7_pcap.erl b/src/osmo_ss7_pcap.erl
index 0b23464..806723f 100644
--- a/src/osmo_ss7_pcap.erl
+++ b/src/osmo_ss7_pcap.erl
@@ -27,29 +27,35 @@
 -include_lib("eunit/include/eunit.hrl").
 -include_lib("epcap/include/epcap_net.hrl").
 
+-record(loop_data, {
+		args,
+		pkt_nr
+	}).
+
 pcap_apply(File, Filter, Args) ->
 	epcap:start([{file, File}, {filter, Filter}]),
-	loop(Args).
+	loop(#loop_data{args = Args, pkt_nr = 1}).
 
-loop(Args) ->
+loop(L = #loop_data{args=Args, pkt_nr = PktNr}) ->
 	receive
 		[{pkthdr, {_,_,_,{datalink,Datalink}}}, {packet, Packet}] ->
 			Decaps = epcap_net:decapsulate_dlt(Datalink, Packet),
-			handle_pkt_cb(Decaps, Args),
-			loop(Args);
+			handle_pkt_cb(PktNr, Decaps, Args),
+			loop(L#loop_data{pkt_nr = PktNr+1});
 		{epcap, eof} ->
 			?debugFmt("EOF from PCAP~n", []),
-			epcap:stop();
-		Default ->
+			epcap:stop(),
+			{ok, PktNr-1};
+		_Default ->
 			?debugFmt("Unknown ~p from PCAP~n", [Default])
 	end.
 
-
-handle_pkt_cb([Ether, IP, Hdr, Payload], Args) ->
+handle_pkt_cb(PktNr, [Ether, IP, Hdr, Payload], Args) ->
 	?debugFmt("~p:~n  ~p/~p~n", [IP, Hdr, Payload]),
 	case Hdr of
 		#sctp{chunks = Chunks} ->
-			handle_sctp_chunks(Chunks, [Ether, IP, Hdr], Args);
+			Path = [{epcap_pkt_nr, PktNr}, Ether, IP, Hdr],
+			handle_sctp_chunks(Chunks, Path, Args);
 		_ ->
 			ok
 	end.
diff --git a/test/isup_codec_tests.erl b/test/isup_codec_tests.erl
index b1efea5..0b2d49a 100644
--- a/test/isup_codec_tests.erl
+++ b/test/isup_codec_tests.erl
@@ -36,7 +36,8 @@
 	File = "../priv/isup.pcap",
 	case file:read_file_info(File) of
 		{ok, _Info} ->
-			osmo_ss7_pcap:pcap_apply("../priv/isup.pcap", "", Args);
+			{ok, NrPkts} = osmo_ss7_pcap:pcap_apply("../priv/isup.pcap", "", Args),
+			?debugFmt("Parsed ~p PCAP packets~n", [NrPkts]);
 		{error, _Reason} ->
 			?debugFmt("Skipping PCAP based tests as no ~p could be found~n",
 				  [File])