From: Dong, L. <Lia...@ng...> - 2005-06-27 21:02:54
|
=20 Hello, =20 I have downloaded tcpreplay version 3.0 beta 4 and want to be able to read pcap file and split the traffics to output to two separate interfaces. And it does not matter which I setup on the tcpprep and tcpreplay, all the packets are always sent out to the primary interface. Commands that I used are: tcpprep -c 158.115.0.0/16 -i file.pcap -o file.cache tcpreplay -c file.cache -i eth0 -I eth1 file.pcap =20 I want to send all packets with sources IP 158.115.0.0 on eth0 and the other IPs will send out on eth1. =20 Reviewing the tcpreplay.c code with DEBUG enabled, I found the followings: =20 - tcpreplay.c: problem was found in the main() function. It checks for 'options.intf2 !=3D NULL' before it opens the interface and retrieves the handle. Of course the intf2 will be NULL at this point until it executes the opening for that interface (by calling libnet_init). What it should have checked is 'option.intf2_name !=3D NULL' since the interface name was retrieved from the command line option. =20 - send_packets.c: once the problem was fixed in tcpreplay.c, another error occurs when the first packet was about to process: "Exceeded number of packets in cache file". Problem was found in 'cache_mode' function. The variable 'cache_packets', which is always =3D 0, was used = to compare with 'packet_num', The 'cache_packets' is defined in tcpreplay.c but it is never been assigned. Instead, the cache packets that read from the cache file is stored in 'options.cache_packets'. Applied this variable and the packets split to two interfaces as supposed to. =20 =20 Hope this will help and I would love to see these changes in the new beta version 6 maybe? I also checked beta 5, the same problems are still there. =20 Thanks =20 Lianne=20 |