[Click] Sending packets with a monitor mode interface
David Fuste
dfuste at ac.upc.edu
Mon Dec 11 06:55:13 EST 2006
Hello,
I have a basic doubt with click-1.5.0 and madwifi-ng/ath0raw0 interface.
I have a PC1 (with ath0=00:20:a6:58:55:b8) running this simple config file:
------------
AddressInfo(safe_addr 6.0.0.1/8 ath0);
winfo :: WirelessInfo(BSSID 00:00:00:00:00:00);
InfiniteSource(DATA \<00 20 a6 58 56 40 00 20 a6 58 55 b8 0800
45 00 00 54 00 00 40 00 40 01 2e a7 06 00 00 02
06 00 00 01 08 00 97 97 03 09 00 01 60 7a 75 45
98 9b 04 00 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13
14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23
24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33
34 35 36 37>, LIMIT 1, STOP true)
-> encap :: WifiEncap(0x0, WIRELESS_INFO winfo)
-> set_power :: SetTXPower(63)
-> set_rate :: SetTXRate(2)
-> radiotap_encap :: RadiotapEncap()
-> Print(ToDevicePC1)
-> ToDevice(ath0raw0);
FromDevice(ath0raw0)
-> prism2_decap :: Prism2Decap()
-> extra_decap :: ExtraDecap()
-> radiotap_decap :: RadiotapDecap()
-> phyerr_filter :: FilterPhyErr()
-> tx_filter :: FilterTX()
-> dupe :: WifiDupeFilter()
-> wifi_cl :: Classifier(0/08%0c 1/00%03) //nods data
-> WifiDecap()
-> Print(ToHostPC1)
-> SetPacketType(HOST)
-> Discard;
------------
The InfiniteSource data is an echo request to another PC2
(with MAC=00:20:a6:58:56:40), which is running this other config file:
------------
AddressInfo(safe_addr 6.0.0.2/8 ath0);
winfo :: WirelessInfo(BSSID 00:00:00:00:00:00);
FromHost(safe, safe_addr, ETHER safe_addr)
-> Print(FromHostPC2)
-> q :: Queue()
-> encap :: WifiEncap(0x0, WIRELESS_INFO winfo)
-> set_power :: SetTXPower(63)
-> set_rate :: SetTXRate(2)
-> radiotap_encap :: RadiotapEncap()
-> Print(ToDevicePC2)
-> to_dev :: ToDevice(ath0raw0);
from_dev :: FromDevice(ath0raw0)
-> prism2_decap :: Prism2Decap()
-> extra_decap :: ExtraDecap()
-> radiotap_decap :: RadiotapDecap()
-> phyerr_filter :: FilterPhyErr()
-> tx_filter :: FilterTX()
-> dupe :: WifiDupeFilter()
-> wifi_cl :: Classifier(0/08%0c 1/00%03) //nods data
-> WifiDecap()
-> SetPacketType(HOST)
-> Print(ToHostPC2)
-> ToHost(safe);
------------
PC2 has the corresponding MAC-IP translation of PC1 in its ARP Table (added
manually). So, when I run these click config files (in user-level mode),
PC1 sends the echo request to PC2 and PC2 prints the received echo
request (Print(ToHostPC2)). Moreover, PC2 generates the echo reply and
passes
it to click through the FromHost element. Then, click prints the echo
reply (Print(FromHostPC2)). But from here on, click does not print the echo
reply (Print(ToDevicePC2)) and so, does not send it.
My question is, why does not the packet leave the queue? is it because the
ToDevice element does not pull packets? why?
I have created the ath0raw0 interface using these commands:
%>wlanconfig ath0raw create wlandev wifi0 wlanmode monitor
%>ifconfig ath0 up
%>Radiotap headers: echo '803' > /proc/sys/net/ath0/dev_type
and I read in the madwifi web page that this monitor mode interface can
both
receive and send packets. So, where is my mistake?
Is maybe a madwifi (and not click) issue?
Could anybody tell me a good solution to perform this simple operation
in click?
I have tried a lot of configurations and I never get the correct
operation...
Thanks a lot!
More information about the click
mailing list