[Click] click-viz error

Nicola Arnoldi nicola.arnoldi at dit.unitn.it
Sat Dec 16 15:48:43 EST 2006


Dear all, 
I am developing a new scheduler using click.
In order to test it I tried to plot a graph of my router configuration.
However I encounter the following error trying to use the command 
'click-flatten demo.click | click-viz | dot -Tpng >demo.png'

I attach you the lines from my terminal.

~/click/tools/click-flatten/click-flatten test/file.test |
~/click/tools/click-viz 
digraph stdin {
node [shape=record,height=.1]
edge [arrowhead=normal,arrowtail=dot]
Traceback (most recent call last):
  File "/home/nicola/click/tools/click-viz", line 102, in ?
    if m.lastgroup != "end":
AttributeError: 'NoneType' object has no attribute 'lastgroup'

I send you as an attachment the configuration I am trying to plot.

Thanks for any help!

-------------- next part --------------
require('roofnet');
rates :: AvailableRates(DEFAULT 11 22 108, 00:0F:B5:AF:72:CF 11 22 108);
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);

//PRIORITY SCHEDULER

prio_class :: IPClassifier((ip tos != 40 and ip tos != 72 and ip tos != 104), ip tos 40, ip tos 72, ip tos 104);
wrr_sched :: WRRSched (1,2,4,6);
gw_reply -> SR2SetChecksum -> [1] output;
prio_class [0] -> NotifierQueue(1000) -> [0] wrr_sched;
prio_class [1] -> NotifierQueue(1000) -> [1] wrr_sched;
prio_class [2] -> NotifierQueue(1000) -> [2] wrr_sched;
prio_class [3] -> NotifierQueue(1000) -> [3] wrr_sched;
wrr_sched -> [2] 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
  -> prio_class;


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;
 
}


control :: ControlSocket("TCP", 7777);
chatter :: ChatterSocket("TCP", 7778);

elementclass LinuxIPHost {
    $dev, $ip, $nm |

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

}

elementclass SniffDevice {
    $device, $promisc|
  from_dev :: FromDevice($device, 
			 PROMISC true) 
  -> output;
  input -> to_dev :: ToDevice($device);
}

sniff_dev :: SniffDevice(ath0, true);

sched :: PrioSched()
-> sniff_dev;

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

srcr2 :: sr2(5.175.114.207, 255.0.0.0, 00:0F:B5:AF:72:CF, false, 
		 "2 60 2 1100");

srcr2_host :: LinuxIPHost(srcr2, 5.175.114.207, 255.0.0.0)
->  srcr2_cl :: IPClassifier(dst net 10.0.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_q;   // queries, replies
srcr2 [1] -> route_q;   // bcast_stats
srcr2 [2] -> [1] sched;    // 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
-> blanck_decap:: BlankDecap()
-> srcr2;




More information about the click mailing list