|
|
|
|
@ -14,6 +14,7 @@ open($kfd, '+>', "/proc/rtpengine/$table/control") or die $!;
|
|
|
|
|
|
|
|
|
|
my $err;
|
|
|
|
|
my $p = pcap_open_offline($ARGV[0], \$err) or die $err;
|
|
|
|
|
my $linktype = pcap_datalink($p);
|
|
|
|
|
|
|
|
|
|
my @packets;
|
|
|
|
|
my %src_ips;
|
|
|
|
|
@ -77,7 +78,15 @@ exit;
|
|
|
|
|
sub loop_cb {
|
|
|
|
|
my ($user_data, $header, $packet) = @_;
|
|
|
|
|
my %eth;
|
|
|
|
|
@eth{qw(src dst type rest)} = unpack('a6 a6 n a*', $packet);
|
|
|
|
|
if ($linktype == DLT_EN10MB) {
|
|
|
|
|
@eth{qw(src dst type rest)} = unpack('a6 a6 n a*', $packet);
|
|
|
|
|
}
|
|
|
|
|
elsif ($linktype == DLT_LINUX_SLL) {
|
|
|
|
|
@eth{qw(direction arphdr addrlen addr type rest)} = unpack('nnn a8 n a*', $packet);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
die($linktype);
|
|
|
|
|
}
|
|
|
|
|
if ($eth{type} == 0x0800) {
|
|
|
|
|
my $ip = ip($eth{rest});
|
|
|
|
|
my $rtp = rtp($ip->{udp}->{payload});
|
|
|
|
|
|