[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