Index: [Article Count Order] [Thread]

Date: Thu, 24 Apr 2008 15:04:03 +0200
From: Karsten Keil <kkeil@suse.de>
Subject: [users:00681] Re: problem with pktrecv (3.0.12) and ct-2.1.1/default-addr-select
To: users@tahi.org
Message-Id: <20080424130403.GA13911@pingi.kke.suse.de>
In-Reply-To: <20080424212900.ebac1651.akisada@tahi.org>
References: <20080414012727.GA17116@pingi.kke.suse.de> <20080415202916.GA7354@pingi.kke.suse.de> <20080424121752.GA12387@pingi.kke.suse.de> <20080424212900.ebac1651.akisada@tahi.org>
X-Mail-Count: 00681

On Thu, Apr 24, 2008 at 09:29:00PM +0900, Yukiyo Akisada wrote:
> Hi, Karsten.
> 
> Please give me time to investigate.
> 
> ct-2.1.1 is already obsoleted package,
> so it is lower priority in my queue.

I understand that.
So far I known here are no newer tests for default address selection, or did
I miss something ?

> 
> Anyway, your point about timestamp is correct.
> And changing seektime at vRecv() must be done carefully.
> 
> I guess that you must insert vClear() before vSend() if you use 0 as seektime.
> 

I understand, this makes sense.
Looks this patch OK for you ?

--- ct-2.1.1/default-addr-select/ADDR_SELECT.pm	2003-05-28 02:20:27.000000000 +0200
+++ ct-2.1.1.mod/default-addr-select/ADDR_SELECT.pm	2008-04-24 15:02:39.000000000 +0200
@@ -445,7 +445,6 @@
 #======================================================================
 sub ping6_Destination2SOURCE1($$) {
 	my ($CPP,$IF_SELECT) = @_;
-	my $rcv_time = 0;
 	vCapture("$IF_SELECT");
 	vClear("$IF_SELECT");
 	vSend("$IF_SELECT", 'echo_request_DESTINATION2SOURCE1');
@@ -453,24 +452,24 @@
 	while($TRUE){
                 my $CPP_THIS = $CPP;
 #		my %ret = vRecv("$IF_SELECT", 5, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT','ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT','echo_reply_SOURCE12DESTINATION');
-		my %ret = vRecv("$IF_SELECT", 7, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT','ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT','echo_reply_SOURCE12DESTINATION');
+		my %ret = vRecv("$IF_SELECT", 7, 0, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT','ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT','echo_reply_SOURCE12DESTINATION');
 
 		if($ret{status} == 0) {
 			if($ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_SLLA' || $ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_noOPT') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF_SELECT");
 				%ret2 = vSend("$IF_SELECT", 'na_DEFAULT_ROUTER2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq 'ns_NUT2DESTINATION_SLLA' || $ret{recvFrame} eq 'ns_NUT2DESTINATION_noOPT') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF_SELECT");
 				%ret2 = vSend("$IF_SELECT", 'na_DESTINATION_R_2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq 'echo_reply_SOURCE12DESTINATION') {
 #				%ret2 = vRecv("$IF_SELECT", 3, 0, 0, 'ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT');
-				%ret2 = vRecv("$IF_SELECT", 7, $rcv_time, 0, 'ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT');
+				%ret2 = vRecv("$IF_SELECT", 7, 0, 0, 'ns_NUT2DESTINATION_SLLA','ns_NUT2DESTINATION_noOPT');
 				if($ret2{status} == 0) {
 					$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret2{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 					vCPP($CPP_THIS);
@@ -825,7 +824,6 @@
 #======================================================================
 sub nutPing62Dest($$$;$) {
 	my ($CPP,$SEND_DEST,$ON_LINK,$NO_IF) = @_;
-	my $rcv_time = 0;
 
 	if($ON_LINK == $TRUE){
 		$NS_SLLA = 'ns_NUT2DESTINATION_ON_LINK_SLLA';
@@ -851,20 +849,21 @@
 
 	while($TRUE){
                 my $CPP_THIS = $CPP;
-		my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', $NS_SLLA,$NS_noOPT,$PING6);
+		# my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', $NS_SLLA,$NS_noOPT,$PING6);
+		my %ret = vRecv("$IF", 10, 0, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', $NS_SLLA,$NS_noOPT,$PING6);
 
 		if($ret{status} == 0) {
 			if($ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_SLLA' || $ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_noOPT') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", 'na_DEFAULT_ROUTER2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq $NS_SLLA || $ret{recvFrame} eq $NS_noOPT) {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", $NA_TLLA);
-				$rcv_time = $ret2{sentTime1};
 			}elsif($ret{recvFrame} eq $PING6) {
 				nutPing6AsyncWait() || exit $V6evalTool::exitFatal;
 				return $TRUE;
@@ -882,7 +881,6 @@
 #======================================================================
 sub nutPing62Dest_TempAddr($$$;$) {
 	my ($CPP,$SEND_DEST,$ON_LINK,$NO_IF) = @_;
-	my $rcv_time = 0;
 
 	if($ON_LINK == $TRUE){
 		$NS_SLLA = 'ns_NUT2DESTINATION_ON_LINK_SLLA_any';
@@ -910,20 +908,21 @@
 
 	while($TRUE){
 		my $CPP_THIS = $CPP;
-		my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA_any','ns_NUT2DEFAULT_ROUTER_noOPT_any', $NS_SLLA,$NS_noOPT,$PING6_UNEXP,$PING6_ANY);
+		# my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA_any','ns_NUT2DEFAULT_ROUTER_noOPT_any', $NS_SLLA,$NS_noOPT,$PING6_UNEXP,$PING6_ANY);
+		my %ret = vRecv("$IF", 10, 0, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA_any','ns_NUT2DEFAULT_ROUTER_noOPT_any', $NS_SLLA,$NS_noOPT,$PING6_UNEXP,$PING6_ANY);
 
 		if($ret{status} == 0) {
 			if($ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_SLLA_any' || $ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_noOPT_any') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", 'na_DEFAULT_ROUTER2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq $NS_SLLA || $ret{recvFrame} eq $NS_noOPT) {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", $NA_TLLA);
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq $PING6_UNEXP) {
 				vLogHTML("<FONT COLOR=\"#FF0000\">#### SourceAddress is not expected one ####</FONT><BR>");
@@ -948,7 +947,6 @@
 #======================================================================
 sub nutPing62Dest_Dns($$$;$) {
 	my ($CPP,$ANS_NUM,$ON_LINK,$NO_IF) = @_;
-	my $rcv_time = 0;
 
 	if($ON_LINK == $TRUE){
 		$NS_SLLA = 'ns_NUT2DESTINATION_ON_LINK_SLLA';
@@ -973,37 +971,38 @@
 	}
 	while($TRUE){
                 my $CPP_THIS = $CPP;
-		my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', 'dns_question_AAAA', $NS_SLLA,$NS_noOPT,$PING6,'ns_NUT2DNS_SLLA_any','ns_NUT2DNS_noOPT_any');
+		# my %ret = vRecv("$IF", 10, $rcv_time, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', 'dns_question_AAAA', $NS_SLLA,$NS_noOPT,$PING6,'ns_NUT2DNS_SLLA_any','ns_NUT2DNS_noOPT_any');
+		my %ret = vRecv("$IF", 10, 0, 0, 'ns_NUT2DEFAULT_ROUTER_SLLA','ns_NUT2DEFAULT_ROUTER_noOPT', 'dns_question_AAAA', $NS_SLLA,$NS_noOPT,$PING6,'ns_NUT2DNS_SLLA_any','ns_NUT2DNS_noOPT_any');
 
 		if($ret{status} == 0) {
 			if($ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_SLLA' || $ret{recvFrame} eq 'ns_NUT2DEFAULT_ROUTER_noOPT') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", 'na_DEFAULT_ROUTER2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 				
 			}elsif($ret{recvFrame} eq 'dns_question_AAAA') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\" -DSOURCE_PORT=$ret{'Frame_Ether.Packet_IPv6.Upp_UDP.Hdr_UDP.SourcePort'} -DDNS_ID=$ret{'Frame_Ether.Packet_IPv6.Upp_UDP.Udp_DNS.Identifier'}";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				if($ANS_NUM == 3){
 					%ret2 = vSend("$IF", 'dns_answer_AAAA3');
 				}else{
 					%ret2 = vSend("$IF", 'dns_answer_AAAA2');
 				}
-				$rcv_time = $ret2{sentTime1};
 			}elsif($ret{recvFrame} eq $NS_SLLA || $ret{recvFrame} eq $NS_noOPT) {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", $NA_TLLA);
-				$rcv_time = $ret2{sentTime1};
 			}elsif($ret{recvFrame} eq $PING6) {
 				nutPing6AsyncWait() || exit $V6evalTool::exitFatal;
 				return $TRUE;
 			}elsif($ret{recvFrame} eq 'ns_NUT2DNS_SLLA_any' || $ret{recvFrame} eq 'ns_NUT2DNS_noOPT_any') {
 				$CPP_THIS .= " -DRECEIVE_SOURCE=\\\"$ret{'Frame_Ether.Packet_IPv6.Hdr_IPv6.SourceAddress'}\\\"";
 				vCPP($CPP_THIS);
+				vClear("$IF");
 				%ret2 = vSend("$IF", 'na_DNS2NUT_TLLA');
-				$rcv_time = $ret2{sentTime1};
 			}
 		}else{ 
 			vLogHTML('<FONT COLOR="#FF0000">#### No response from NUT, Configuration Problem ? ####</FONT><BR>');


-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 16746 (AG Nuernberg)