[Click] Runtime errors from Kernel level roofnet config file

Juncheol Park jcpark at cs.utah.edu
Tue May 15 16:19:43 EDT 2007


 Hi all,

 I'm using the latest releases of roofnet, click and madwifi-ng.
 I have installed all three packages on FC4 (linux-2.6.16.13) patched
 by linux-2.6.16.13-patch (under click/etc).

 I've minimally updated the file, gen_config_roofnet.sh (attached here)
 so that it can generate a KERNEL-level click config file as well as
 a user-level config file for 802.11a.
 The user-level click config seems working (not completely, I mean
 sometimes too slow when pinging).
 However, whenever I did "click-install" with the kernel-level click file
 (also attached here),
 I got the following error messages (from dmesg).

 Any ideas?

$ dmesg
=========================================================== 
click: starting router thread pid 4671 (f756d340)
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr2/querier :: SR2Querier: got invalid dst 0.0.0.0
chatter: srcr1/querier :: SRQuerier: got invalid dst 0.0.0.0
===========================================================

 The following are my network setups:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
155.98.36.0     0.0.0.0         255.255.252.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 lo
5.0.0.0         0.0.0.0         255.0.0.0       U     0      0        0 srcr1
6.0.0.0         0.0.0.0         255.0.0.0       U     0      0        0 srcr2
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ath0
0.0.0.0         155.98.36.1     0.0.0.0         UG    0      0        0 eth0

$ iwconfig ath0 (I'm using 802.11a channel 48 cell 00:00:00:00:00:11)
ath0      IEEE 802.11a  ESSID:"lan0_27595"  
          Mode:Ad-Hoc  Frequency:5.24 GHz  Cell: 00:00:00:00:00:11   
          Bit Rate:0 kb/s   Tx-Power:14 dBm   Sensitivity=0/3  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=18/94  Signal level=-70 dBm  Noise level=-88 dBm
          Rx invalid nwid:47  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

$ ifconfig
wifi0     Link encap:UNSPEC  HWaddr 
00-09-5B-93-0B-14-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6733 errors:0 dropped:42 overruns:0 frame:8
          TX packets:148 errors:12 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:199 
          RX bytes:929230 (907.4 KiB)  TX bytes:64012 (62.5 KiB)
          Interrupt:20 
ath0      Link encap:Ethernet  HWaddr 00:09:5B:93:0B:14  
          inet addr:10.1.1.4  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::209:5bff:fe93:b14/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1900  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:5 
          RX bytes:896 (896.0 b)  TX bytes:1196 (1.1 KiB)
ath2      Link encap:UNSPEC  HWaddr 06-09-5B-93-0B-14-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1900  Metric:1
          RX packets:3382 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:5 
          RX bytes:609880 (595.5 KiB)  TX bytes:48888 (47.7 KiB)
srcr1     Link encap:Ethernet  HWaddr 00:09:5B:93:0B:14  
          inet addr:5.147.11.20  Bcast:5.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::209:5bff:fe93:b14/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:468 (468.0 b)
srcr2     Link encap:Ethernet  HWaddr 00:09:5B:93:0B:14  
          inet addr:6.147.11.20  Bcast:6.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::209:5bff:fe93:b14/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:468 (468.0 b)


#######################################################################
#### The file "gen_config_roofnet.sh" which I'm using for now.
#######################################################################

if [ $# -ne 1 ]; then
  echo
  echo 1>&2 Usage: $0 1,  For kernel
  echo 1>&2 Usage: $0 0, For userlevel
  echo
  exit 127
fi

KERNEL=$1

DEV="ath2"
GATEWAY="false"
if [ -f /tmp/is_gateway ]; then
    GATEWAY="true"
fi

mac=$(ifconfig ath0 | sed -n 's/^.*HWaddr \([0-9A-Za-z:]*\).*/\1/p')
# I made sure this variable mac should be correctly set up for any cases.
# So sometimes I used a different way to extract mac...
# extract the bottom three octects to use as IP
  
hi_hex=$(echo $mac | sed -n 's/.*:.*:.*:\([0-9A-Za-z:]*\):.*:.*.*/\1/p')
mid_hex=$(echo $mac | sed -n 's/.*:.*:.*:.*:\([0-9A-Za-z:]*\):.*.*/\1/p')
lo_hex=$(echo $mac | sed -n 's/.*:.*:.*:.*:.*:\([0-9A-Za-z:]*\).*/\1/p')
                                                        
hi="0x$hi_hex";             
mid="0x$mid_hex";           
lo="0x$lo_hex";             

SUFFIX=$(printf "%d.%d.%d" $hi $mid $lo)
WIRELESS_MAC=$mac

SRCR_IP="5.$SUFFIX"
SRCR_NM="255.0.0.0"
SRCR_NET="5.0.0.0"
SRCR_BCAST="5.255.255.255"
SRCR2_IP="6.$SUFFIX"
SRCR2_NM="255.0.0.0"
SRCR2_NET="6.0.0.0"
SRCR2_BCAST="5.255.255.255"
WLANCONFIG=/usr/local/bin/wlanconfig

$WLANCONFIG $DEV destroy > /dev/null 2>&1
$WLANCONFIG $DEV create wlandev wifi0 wlanmode monitor > /dev/null
/sbin/ifconfig $DEV mtu 1900
/sbin/ifconfig $DEV txqueuelen 5
/sbin/ifconfig $DEV up
echo '804' >  /proc/sys/net/$DEV/dev_type
/sbin/modprobe tun > /dev/null 2>&1

MODE="a"
# PROBES="2 60 2 1500 4 1500 11 1500 22 1500"
PROBES="12 60 12 1500 18 1500 24 1500 36 1500 48 1500 72 1500 96 1500 108 
1500";
#    $probes = "2 60 12 60 2 1500 4 1500 11 1500 22 1500 12 1500 18 1500 
24 1500 36 1500 48 1500 72 1500 96 1500";

echo "rates :: AvailableRates(DEFAULT 12 18 24 36 48 72 96 108,
$WIRELESS_MAC 12 18 24 36 48 72 96 108);
";

SRCR_FILE="srcr.click"
if [ ! -f $SRCR_FILE ]; then
    SRCR_FILE="/home/roofnet/click/conf/wifi/srcr.click"
    if [ ! -f $SRCR_FILE ]; then
	SRCR_FILE="/tmp/srcr.click"
	if [ ! -f $SRCR_FILE ]; then
	    SRCR_FILE="/tmp/srcr.click"
	fi
    fi
fi

if [ ! -f $SRCR_FILE ]; then
    echo "couldn't find srcr.click";
    exit 1;
fi

cat $SRCR_FILE


if [ $KERNEL -eq 0 ]; then
echo "
control :: ControlSocket(\"TCP\", 7777);
chatter :: ChatterSocket(\"TCP\", 7778);
";
fi


echo "
// has one input and one output
// takes and spits out ip packets

elementclass LinuxHost {
    \$dev, \$ip, \$nm, \$mac |
    input -> ToHost(\$dev);
    FromHost(\$dev, \$ip/\$nm, ETHER \$mac) -> output;
}

// has one input and one output
// takes and spits out ip packets
elementclass LinuxIPHost {
    \$dev, \$ip, \$nm |

  input -> KernelTun(\$ip/\$nm, MTU 1500, DEV_NAME \$dev) 
  -> MarkIPHeader(0)
  -> CheckIPHeader(CHECKSUM false)
  -> output;

}

elementclass SniffDevice {
    \$device, \$promisc|
	// we only want txf for NODS packets
	// ether[2:2] == 0x1200 means it has an ath_rx_radiotap header (it 
is 18 bytes long)
	// ether[2:2] == 0x1000 means it has an ath_tx_radiotap header (it 
is 16 bytes long)
	// ether[18] == 0x08 means NODS
  from_dev :: FromDevice(\$device, 
			 PROMISC \$promisc) 
  -> output;
  input -> to_dev :: ToDevice(\$device);
}

sniff_dev :: SniffDevice($DEV, false);

sched :: PrioSched()
-> set_power :: SetTXPower(POWER 60)
-> athdesc_encap :: AthdescEncap()
//-> radiotap_encap :: RadiotapEncap()
-> sniff_dev;

route_q :: FullNoteQueue(10) 
-> [0] sched;

data_q :: FullNoteQueue(10)
-> data_static_rate :: SetTXRate(RATE 108)
//-> data_madwifi_rate :: MadwifiRate(OFFSET 4,
//			       ALT_RATE true,
//			       RT rates,
//			       ACTIVE true)

-> [1] sched;

//Idle -> [1] data_madwifi_rate;

route_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
->  route_q;
data_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> data_q;

srcr1 :: srcr_ett($SRCR_IP, $SRCR_NM, $WIRELESS_MAC, $GATEWAY, 
		 \"$PROBES\");
";

if [ $KERNEL -eq 1 ]; then
echo "
srcr1_host :: LinuxHost(srcr1, $SRCR_IP, $SRCR_NM, $WIRELESS_MAC)
->  srcr1_cl :: IPClassifier(dst net 10.1.0.0/8, -);
";
else
echo "
srcr1_host :: LinuxIPHost(srcr1, $SRCR_IP, $SRCR_NM)
->  srcr1_cl :: IPClassifier(dst net 10.1.0.0/8, -);
";
fi


#srcr1_host :: LinuxIPHost(srcr1, $SRCR_IP, $SRCR_NM)
#->  srcr1_cl :: IPClassifier(dst net 10.0.0.0/8, -);


echo "
ap_to_srcr1 :: SRDestCache();

srcr1_cl [0] -> [0] ap_to_srcr1 [0] -> [1] srcr1;
srcr1_cl [1] -> [1] srcr1;


srcr1 [0] -> route_encap;   // queries, replies
srcr1 [1] -> route_encap;   // bcast_stats
srcr1 [2] -> data_encap;    // data
srcr1 [3] -> srcr1_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to 
me

srcr1_cl2 [0] -> [1] ap_to_srcr1 [1] -> srcr1_host; 
srcr1_cl2 [1] -> srcr1_host; // data to me

srcr2 :: sr2($SRCR2_IP, $SRCR2_NM, $WIRELESS_MAC, $GATEWAY, 
		 \"$PROBES\");
";

#srcr2_host :: LinuxIPHost(srcr2, $SRCR2_IP, $SRCR2_NM)
#->  srcr2_cl :: IPClassifier(dst net 10.0.0.0/8, -);


if [ $KERNEL -eq 1 ]; then
echo "
srcr2_host :: LinuxHost(srcr2, $SRCR2_IP, $SRCR_NM, $WIRELESS_MAC)
->  srcr2_cl :: IPClassifier(dst net 10.1.0.0/8, -);
";
else
echo "
srcr2_host :: LinuxIPHost(srcr2, $SRCR2_IP, $SRCR_NM)
->  srcr2_cl :: IPClassifier(dst net 10.1.0.0/8, -);
"
fi

echo "

ap_to_srcr2 :: SRDestCache();

srcr2_cl [0] -> [0] ap_to_srcr2 [0] -> [1] srcr2;
srcr2_cl [1] -> [1] srcr2;


srcr2 [0] -> route_encap;   // queries, replies
srcr2 [1] -> route_encap;   // bcast_stats
srcr2 [2] -> data_encap;    // data
srcr2 [3] -> srcr2_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to 
me

srcr2_cl2 [0] -> [1] ap_to_srcr2 [1] -> srcr2_host; 
srcr2_cl2 [1] -> srcr2_host; // data to me

sniff_dev 
-> athdesc_decap :: AthdescDecap()
-> phyerr_filter :: FilterPhyErr()
-> Classifier(0/08%0c) //data
-> tx_filter :: FilterTX()
-> dupe :: WifiDupeFilter() 
-> WifiDecap()
-> HostEtherFilter($WIRELESS_MAC, DROP_OTHER true, DROP_OWN true) 
-> ncl :: Classifier(12/09??, 12/06??);


ncl[0] -> srcr1;
ncl[1] -> srcr2;

tx_filter[1] -> Discard;
//tx_filter [1]  -> [1] data_madwifi_rate;

";



#######################################################################
#### The file "kernel_level.click" generated by "gen_config_roofnet.sh".
#######################################################################


rates :: AvailableRates(DEFAULT 12 18 24 36 48 72 96 108,
00:09:5B:93:0B:14 12 18 24 36 48 72 96 108);

elementclass srcr_ett {
  $srcr_ip, $srcr_nm, $wireless_mac, $gateway, $probes|


arp :: ARPTable();
lt :: LinkTable(IP $srcr_ip);


gw :: GatewaySelector(ETHTYPE 0x092c,
		      IP $srcr_ip,
		      ETH $wireless_mac,
		      LT lt,
		      ARP arp,
		      PERIOD 15,
		      GW $gateway);


gw -> SetSRChecksum -> [0] output;

set_gw :: SetGateway(SEL gw);

gw_reply ::  SR1GatewayResponder(SEL gw, 
				 ETHTYPE 0x0945,
				 IP $srcr_ip,
				 ETH $wireless_mac,
				 ARP arp,
				 DEBUG false,
				 LT lt,
				 PERIOD 15);


gw_reply -> SetSRChecksum -> [1] output;


es :: ETTStat(ETHTYPE 0x0941, 
	      ETH $wireless_mac, 
	      IP $srcr_ip, 
	      PERIOD 30000,
	      TAU 300000,
	      ARP arp,
	      PROBES $probes,
	      ETT metric,
	      RT rates);


metric :: ETTMetric(LT lt);

forwarder :: SRForwarder(ETHTYPE 0x0943, 
			      IP $srcr_ip, 
			      ETH $wireless_mac, 
			      ARP arp, 
			      LT lt);

querier :: SRQuerier(ETH $wireless_mac, 
		     SR forwarder,
		     LT lt, 
		     ROUTE_DAMPENING true,
		     TIME_BEFORE_SWITCH 5,
		     DEBUG false);

query_forwarder :: MetricFlood(ETHTYPE 0x0944,
			       IP $srcr_ip, 
			       ETH $wireless_mac, 
			       LT lt, 
			       ARP arp,
			       DEBUG false);

query_responder :: SRQueryResponder(ETHTYPE 0x0945,
				    IP $srcr_ip, 
				    ETH $wireless_mac, 
				    LT lt, 
				    ARP arp,
				    DEBUG false);

query_responder -> SetSRChecksum -> [0] output;
query_forwarder -> SetSRChecksum -> [0] output;
query_forwarder [1] -> query_responder;

data_ck :: SetSRChecksum() 

input [1] 
-> host_cl :: IPClassifier(dst net $srcr_ip mask $srcr_nm,
				-)
-> querier
-> data_ck;


host_cl [1] -> [0] set_gw [0] -> querier;

forwarder[0] 
  -> dt ::DecIPTTL
  -> data_ck
  -> [2] output;


dt[1] 
-> ICMPError($srcr_ip, timeexceeded, 0) 
-> querier;


// queries
querier [1] -> [1] query_forwarder;
es -> [1] output;


forwarder[1] //ip packets to me
  -> StripSRHeader()
  -> CheckIPHeader(CHECKSUM false)
  -> from_gw_cl :: IPClassifier(src net $srcr_ip mask $srcr_nm,
				-)
  -> [3] output;

from_gw_cl [1] -> [1] set_gw [1] -> [3] output;

 input [0]
   -> ncl :: Classifier(
			12/0943 , //srcr_forwarder
			12/0944 , //srcr
			12/0945 , //replies
			12/0941 , //srcr_es
			12/092c , //srcr_gw
			);
 
 
 ncl[0] -> CheckSRHeader() -> [0] forwarder;
 ncl[1] -> CheckSRHeader() -> query_forwarder
 ncl[2] -> CheckSRHeader() -> query_responder;
 ncl[3] -> es;
 ncl[4] -> CheckSRHeader() -> gw;
}



elementclass sr2 {
  $sr2_ip, $sr2_nm, $wireless_mac, $gateway, $probes|


arp :: ARPTable();
lt :: LinkTable(IP $sr2_ip);


gw :: SR2GatewaySelector(ETHTYPE 0x062c,
		      IP $sr2_ip,
		      ETH $wireless_mac,
		      LT lt,
		      ARP arp,
		      PERIOD 15,
		      GW $gateway);


gw -> SR2SetChecksum -> [0] output;

set_gw :: SR2SetGateway(SEL gw);


es :: SR2ETTStat(ETHTYPE 0x0641, 
	      ETH $wireless_mac, 
	      IP $sr2_ip, 
	      PERIOD 30000,
	      TAU 300000,
	      ARP arp,
	      PROBES $probes,
	      ETT metric,
	      RT rates);


metric :: SR2ETTMetric(LT lt);


forwarder :: SR2Forwarder(ETHTYPE 0x0643, 
			      IP $sr2_ip, 
			      ETH $wireless_mac, 
			      ARP arp, 
			      LT lt);


querier :: SR2Querier(ETH $wireless_mac, 
		     SR forwarder,
		     LT lt, 
		     ROUTE_DAMPENING true,
		     TIME_BEFORE_SWITCH 5,
		     DEBUG false);


query_forwarder :: SR2MetricFlood(ETHTYPE 0x0644,
			       IP $sr2_ip, 
			       ETH $wireless_mac, 
			       LT lt, 
			       ARP arp,
			       DEBUG false);

query_responder :: SR2QueryResponder(ETHTYPE 0x0645,
				    IP $sr2_ip, 
				    ETH $wireless_mac, 
				    LT lt, 
				    ARP arp,
				    DEBUG false);


gw_reply ::  SR2GatewayResponder(SEL gw, 
				 ETHTYPE 0x0645,
				 IP $sr2_ip,
				 ETH $wireless_mac,
				 ARP arp,
				 DEBUG false,
				 LT lt,
				 PERIOD 15);


gw_reply -> SR2SetChecksum -> [1] output;

query_responder -> SR2SetChecksum -> [0] output;
query_forwarder -> SR2SetChecksum -> [0] output;
query_forwarder [1] -> query_responder;

data_ck :: SR2SetChecksum() 

input [1] 
-> host_cl :: IPClassifier(dst net $sr2_ip mask $sr2_nm,
				-)
-> querier
-> data_ck;


host_cl [1] -> [0] set_gw [0] -> querier;

forwarder[0] 
  -> dt ::DecIPTTL
  -> data_ck
  -> [2] output;


dt[1] 
-> ICMPError($sr2_ip, timeexceeded, 0) 
-> querier;


// queries
querier [1] -> [1] query_forwarder;
es -> SetTimestamp() -> [1] output;


forwarder[1] //ip packets to me
  -> SR2StripHeader()
  -> CheckIPHeader(CHECKSUM false)
  -> from_gw_cl :: IPClassifier(src net $sr2_ip mask $sr2_nm,
				-)
  -> [3] output;

from_gw_cl [1] -> [1] set_gw [1] -> [3] output;

 input [0]
   -> ncl :: Classifier(
			12/0643 , //sr2_forwarder
			12/0644 , //sr2
			12/0645 , //replies
			12/0641 , //sr2_es
			12/062c , //sr2_gw
			);
 
 
 ncl[0] -> SR2CheckHeader() -> [0] forwarder;
 ncl[1] -> SR2CheckHeader() -> query_forwarder
 ncl[2] -> SR2CheckHeader() -> query_responder;
 ncl[3] -> es;
 ncl[4] -> SR2CheckHeader() -> gw;
 
}


// has one input and one output
// takes and spits out ip packets

elementclass LinuxHost {
    $dev, $ip, $nm, $mac |
    input -> ToHost($dev);
    FromHost($dev, $ip/$nm, ETHER $mac) -> output;
}

// has one input and one output
// takes and spits out ip packets
elementclass LinuxIPHost {
    $dev, $ip, $nm |

  input -> KernelTun($ip/$nm, MTU 1500, DEV_NAME $dev) 
  -> MarkIPHeader(0)
  -> CheckIPHeader(CHECKSUM false)
  -> output;

}

elementclass SniffDevice {
    $device, $promisc|
	// we only want txf for NODS packets
	// ether[2:2] == 0x1200 means it has an ath_rx_radiotap header (it 
is 18 bytes long)
	// ether[2:2] == 0x1000 means it has an ath_tx_radiotap header (it 
is 16 bytes long)
	// ether[18] == 0x08 means NODS
  from_dev :: FromDevice($device, 
			 PROMISC $promisc) 
  -> output;
  input -> to_dev :: ToDevice($device);
}

sniff_dev :: SniffDevice(ath2, false);

sched :: PrioSched()
-> set_power :: SetTXPower(POWER 60)
-> athdesc_encap :: AthdescEncap()
//-> radiotap_encap :: RadiotapEncap()
-> sniff_dev;

route_q :: FullNoteQueue(10) 
-> [0] sched;

data_q :: FullNoteQueue(10)
-> data_static_rate :: SetTXRate(RATE 108)
//-> data_madwifi_rate :: MadwifiRate(OFFSET 4,
//			       ALT_RATE true,
//			       RT rates,
//			       ACTIVE true)

-> [1] sched;

//Idle -> [1] data_madwifi_rate;

route_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
->  route_q;
data_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> data_q;

srcr1 :: srcr_ett(5.147.11.20, 255.0.0.0, 00:09:5B:93:0B:14, false, 
		 "12 60 12 1500 18 1500 24 1500 36 1500 48 1500 72 1500 96 
1500 108 1500");

srcr1_host :: LinuxHost(srcr1, 5.147.11.20, 255.0.0.0, 00:09:5B:93:0B:14)
->  srcr1_cl :: IPClassifier(dst net 10.1.0.0/8, -);

ap_to_srcr1 :: SRDestCache();

srcr1_cl [0] -> [0] ap_to_srcr1 [0] -> [1] srcr1;
srcr1_cl [1] -> [1] srcr1;

srcr1 [0] -> route_encap;   // queries, replies
srcr1 [1] -> route_encap;   // bcast_stats
srcr1 [2] -> data_encap;    // data
srcr1 [3] -> srcr1_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to 
me

srcr1_cl2 [0] -> [1] ap_to_srcr1 [1] -> srcr1_host; 
srcr1_cl2 [1] -> srcr1_host; // data to me

srcr2 :: sr2(6.147.11.20, 255.0.0.0, 00:09:5B:93:0B:14, false, 
		 "12 60 12 1500 18 1500 24 1500 36 1500 48 1500 72 1500 96 
1500 108 1500");

srcr2_host :: LinuxHost(srcr2, 6.147.11.20, 255.0.0.0, 00:09:5B:93:0B:14)
->  srcr2_cl :: IPClassifier(dst net 10.1.0.0/8, -);

ap_to_srcr2 :: SRDestCache();

srcr2_cl [0] -> [0] ap_to_srcr2 [0] -> [1] srcr2;
srcr2_cl [1] -> [1] srcr2;


srcr2 [0] -> route_encap;   // queries, replies
srcr2 [1] -> route_encap;   // bcast_stats
srcr2 [2] -> data_encap;    // data
srcr2 [3] -> srcr2_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to 
me

srcr2_cl2 [0] -> [1] ap_to_srcr2 [1] -> srcr2_host; 
srcr2_cl2 [1] -> srcr2_host; // data to me


sniff_dev 
-> athdesc_decap :: AthdescDecap()
-> phyerr_filter :: FilterPhyErr()
-> Classifier(0/08%0c) //data
-> tx_filter :: FilterTX()
-> dupe :: WifiDupeFilter() 
-> WifiDecap()
-> HostEtherFilter(00:09:5B:93:0B:14, DROP_OTHER true, DROP_OWN true) 
-> ncl :: Classifier(12/09??, 12/06??);


ncl[0] -> srcr1;
ncl[1] -> srcr2;

tx_filter[1] -> Discard;
//tx_filter [1]  -> [1] data_madwifi_rate;




===================================
Juncheol Park
MEB #2172, 801-587-3977
School of Computing
University of Utah


More information about the click mailing list