File v6eval-3.0.12-linux.patch of Package tahi-linux
diff -urN tahi-linux-3.0.12/bin/autorun/autorun tahi-linux-3.0.12-linux/bin/autorun/autorun
--- tahi-linux-3.0.12/bin/autorun/autorun 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/bin/autorun/autorun 2007-12-10 20:48:56.000000000 +0100
@@ -0,0 +1,1047 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Yokogawa Electric Corporation,
+# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $TAHI: v6eval/bin/autorun/autorun.pl,v 1.32 2004/09/14 06:14:04 akisada Exp $
+
+use Digest::MD5;
+
+use V6evalCommon;
+use File::Basename;
+use Config;
+use Pod::Html;
+
+sub printHeader();
+sub printTitle($);
+sub printINDEX();
+sub printResult();
+sub printFooter();
+sub mkComment(%);
+sub printTableData($;$$);
+sub getStatus($);
+sub execScript($$$$$);
+sub checkPacket($$);
+sub seq2html($$);
+sub insertMD5($);
+sub getDateString();
+sub parseArgs();
+sub printReport();
+sub parseIndex();
+sub makeFrame();
+sub printSummary();
+
+$|=1;
+pathinit();
+parseArgs();
+
+if (-e "index.html" && !$opt_f) {
+ print "Error : Already exist index.html.\n";
+ print " please run after delete index.html or run with -f option.\n";
+ exit 2;
+}
+
+if($opt_tiny != 0) {
+ if(-e "summary.html" && !$opt_f) {
+ print "Error : Already exist summary.html.\n";
+ print " please run after delete summary.html or run with -f option.\n";
+ exit 2;
+ }
+
+ if(-e "report.html" && !$opt_f) {
+ print "Error : Already exist report.html.\n";
+ print " please run after delete report.html or run with -f option.\n";
+ exit 2;
+ }
+}
+
+$SIG{INT} = sub {exit 2;};
+
+# get signal name & number
+my %sig_num;
+my @sig_name;
+unless($Config{sig_name} && $Config{sig_num}) {
+ die "No sigs?";
+} else {
+ my @names = split ' ', $Config{sig_name};
+ my @num = split ' ', $Config{sig_num};
+ @sig_num{@names} = @num;
+ foreach (@names) {
+ $sig_name[$sig_num{$_}] ||= $_;
+ }
+}
+
+# get tool & test version
+my $dummy;
+($dummy,$VERTOOLS) = ('$Name: REL_3_0_12 $' =~ /\$(Name): (.*) \$/ );
+$VERTOOLS='undefined' if(!$VERTOOLS);
+
+$StartTime=getDateString();
+@INDEX=@ARGV;
+
+parseIndex();
+
+my $num;
+for($num=1;$status[$num]{type};$num++) {
+ local (*current)=$status[$num];
+ next if($current{type} ne "DO");
+ my $rc;
+ if($dochk){
+ print "===== Check $current{packet} =====\n";
+ $rc=checkPacket($current{packet},$current{opt});
+ $statusStr=getStatus($rc);
+ $statusStr =~ s/<.*?>//g;
+ print " -> $statusStr\n";
+ }
+ last if(($rc>>8) == 64 || $rc == $sig_num{INT});
+
+ if($dogen){
+ print "== Generate HTML Document from $current{script} ==\n";
+ $rc=seq2html($current{script}, $current{doc});
+ $current{status}=0;
+ $current{type}="DOTEST";
+ }
+ last if(($rc>>8) == 64 || $rc == $sig_num{INT});
+
+ if($dotest){
+ if($opt_tiny != 0) {
+ makeFrame();
+ printSummary();
+ }
+
+ printReport();
+ print "========== TEST $current{number} ==========\n";
+ $rc=execScript( $current{script},
+ $current{packet},
+ $current{opt},
+ $current{log},
+ $current{desc});
+ $current{status}=$rc;
+ $current{type}="DOTEST";
+ $statusStr=getStatus($rc);
+ $statusStr =~ s/<.*?>//g;
+ print " -> $statusStr\n";
+ }
+ last if(($rc>>8) == 64 || $rc == $sig_num{INT});
+}
+
+$EndTime=getDateString();
+0;
+
+END {
+ if($mkindex) {
+ if($opt_tiny != 0) {
+ makeFrame();
+ printSummary();
+ }
+
+ printReport()
+ }
+
+ if($dogen){
+ unlink("pod2html-dircache");
+ unlink("pod2html-itemcache");
+ }
+}
+
+sub parseIndex(){
+ my $testnum=1;
+ my $num;
+ for($num=1;<>;$num++) {
+ chomp;
+ $status[$num]{type}="";
+ local (*current)=$status[$num];
+ #print "$num($testnum) -- $_\n";
+ $VERTESTS = $2 if( /\$(Name): (.*) \$/ );
+ if(/^\s*$/ || /^#/) { # remove comment
+ $current{type}="COMMENT";
+ next;
+ }
+
+ if(/^&print:(.*)/){ # print comment
+ $current{type}="PRINT";
+ $current{strings}="$1";
+ next;
+ }
+
+ if(/^&pause:(.*)/){ # make pause
+ $current{type}="PAUSE";
+ $current{strings}="$1";
+ next;
+ }
+
+ if($StartNum > $testnum || $testnum > $EndNum || /^&\#/ ) {
+ s/^&\#//;
+ $current{type}="SKIP";
+ $current{status}= 73 << 8;
+ $skip ++;
+ }
+ else {
+ $current{type}="DO";
+ $current{status}= 72 << 8;
+ }
+
+ my ($script,$packet,$opt,$doc,$desc,$links) = split ':';
+ ($script) = ( $script =~ /^\s*(\S*)\s*$/ );
+ ($packet) = ( $packet =~ /^\s*(\S*)\s*$/ );
+ ($doc) = ( $doc =~ /^\s*(\S*)\s*$/ );
+ ($desc) = ( $desc =~ /^\s*(.*\S)\s*$/ );
+ ($links) = ( $links =~ /^\s*(\S*)\s*$/ );
+ my ($SeqName,$SeqDir,$SeqSuffix) = fileparse($script,'.seq');
+ $desc||=$SeqName;
+ $current{number}=$testnum;
+ $current{script}=$script;
+ $current{packet}=$packet;
+ $current{opt}=$opt;
+ $current{log}="$testnum.html";
+ $current{desc}=$desc;
+ $current{SeqName}=$SeqName;
+ $current{SeqDir}=$SeqDir;
+ $current{doc}=$doc;
+ $current{links}=$links ? $links : 1;
+ $testnum++;
+ $total ++;
+ }
+ $VERTESTS = "undefined" if(!$VERTESTS);
+}
+
+
+#
+# Generate Report Index
+#
+sub printReport() {
+ if($opt_tiny != 0) {
+ open LOG ,">report.html";
+ } else {
+ open LOG ,">index.html";
+ }
+
+ printHeader();
+
+ if($opt_tiny == 0) {
+ printTitle(LOG);
+ #sub printINDEX();
+ print LOG "<HR>\n";
+ }
+
+ printResult();
+ printFooter();
+ close LOG;
+
+ insertMD5($opt_tiny ? "report.html" : "index.html");
+
+ return;
+}
+
+sub printHeader() {
+if($opt_profile) {
+ print LOG <<ECHO;
+<HTML>
+<HEAD>
+<TITLE>IPv6 Test Specification</TITLE>
+<META NAME="GENERATOR" CONTENT="TAHI IPv6 Conformance Test Suite">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+ECHO
+} else {
+ print LOG <<ECHO;
+<HTML>
+<HEAD>
+<TITLE>$Title</TITLE>
+<META NAME="GENERATOR" CONTENT="TAHI IPv6 Conformance Test Suite">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+ECHO
+}
+}
+
+sub printTitle($){
+ my($fd) = @_;
+
+ if($opt_tiny != 0) {
+ if($opt_profile) {
+ print $fd <<ECHO;
+<CENTER>
+<H1>$Title</H1>
+</CENTER>
+ECHO
+ } else { # if($opt_profile)
+ print $fd <<ECHO;
+<CENTER>
+<H1>$Title</H1>
+</CENTER>
+<HR>
+<TABLE>
+<TR><TD>Tool Version</TD><TD>:</TD><TD>$VERTOOLS</TD></TR>
+<TR><TD>Test Program Version</TD><TD>:</TD><TD>$VERTESTS</TD></TR>
+</TABLE>
+<HR>
+<TABLE>
+<TR><TD>Start</TD><TD>:</TD><TD>$StartTime</TD></TR>
+<TR><TD>End</TD><TD>:</TD><TD>$EndTime</TD></TR>
+</TABLE>
+ECHO
+ } # if($opt_profile)
+ } else {
+ if($opt_profile) {
+ print $fd <<ECHO;
+<CENTER>
+<H1>$Title</H1>
+ECHO
+ } else { # if($opt_profile)
+ print $fd <<ECHO;
+<CENTER>
+<H1>$Title</H1>
+<HR>
+<TABLE BORDER=0>
+<TR><TD>Tool Version :</TD><TD>$VERTOOLS</TD></TR>
+<TR><TD>Test Program Version :</TD><TD>$VERTESTS</TD></TR>
+</TABLE>
+<HR>
+<TABLE BORDER=0>
+<TR><TD>Start:</TD><TD>$StartTime</TD></TR>
+<TR><TD>End :</TD><TD>$EndTime</TD></TR>
+</TABLE>
+<HR>
+ECHO
+ } # if($opt_profile)
+ }
+}
+
+sub printINDEX(){
+ #
+ # Output Test Report Index
+ #
+ print LOG "INDEX: ";
+ foreach(@INDEX) {
+ print LOG "<A HREF=\"$_\">$_</A> ";
+ }
+}
+
+sub printResult(){
+ #
+ # print result table
+ #
+
+ my @color = ('#EEEEEE', '#DDDDDD');
+ my $flag = 0;
+
+ if($opt_tiny != 0) {
+ print LOG "<CENTER>";
+ }
+
+ if($opt_tiny) {
+ if($opt_profile) {
+ print LOG <<ECHO;
+<TABLE WIDTH="100%" BORDER=1>
+<TR BGCOLOR=\"#CCCCCC\">
+<TH>No.</TH><TH>Title</TH>
+ECHO
+ } else {
+ print LOG <<ECHO;
+<TABLE BORDER=1>
+<TR BGCOLOR=\"#CCCCCC\">
+<TH>No.</TH><TH>Title</TH>
+<TH>Result</TH><TH>Log</TH><TH>Script</TH><TH>Packet</TH><TH>Dump<BR>(bin)</TH>
+ECHO
+ }
+ } else {
+ if($opt_profile) {
+ print LOG <<ECHO;
+<TABLE WIDTH="100%" BORDER=1>
+<TR>
+<TH>No.</TH><TH>Title</TH>
+ECHO
+ } else {
+ print LOG <<ECHO;
+<TABLE BORDER=1>
+<TR>
+<TH>No.</TH><TH>Title</TH>
+<TH>Result</TH><TH>Log</TH><TH>Script</TH><TH>Packet</TH><TH>Dump<BR>(bin)</TH>
+ECHO
+ }
+ }
+
+ unless($opt_profile) {
+ print LOG "<TH>Dump<BR>(txt)</TH>" if $opt_dump2txt;
+ }
+
+ print LOG "</TR>\n";
+ my $num;
+ for($num=1;$status[$num]{type};$num++) {
+ local (*current)=$status[$num];
+ if ($current{type} eq "DOTEST" || $current{type} eq "DO" ) {
+ if($opt_tiny != 0) {
+ print LOG "<TR BGCOLOR=\"@color[$flag]\">\n";
+
+ if($flag != 0) {
+ $flag = 0;
+ } else {
+ $flag = 1;
+ }
+ } else {
+ print LOG "<TR>\n";
+ }
+
+ $htmldoc = $current{doc} ? $current{doc} :
+ "$current{SeqDir}$current{SeqName}.html";
+ $htmldoc = "" if(! -r $htmldoc);
+ printTableData("$current{number}");
+ printTableData("$current{desc}",$htmldoc);
+
+ unless($opt_profile) {
+ $statusStr=getStatus($current{status});
+ if(($current{status} == 3 << 8 || $current{status} == 32 << 8) && !$opt_F){
+ mkComment(\%current);
+ $statusStr.= ", <A HREF=\"$current{number}.comment.html\">Why</A>";
+ }
+ if($opt_nolcna) {
+ #printTableData("-","","ALIGN=\"CENTER\"");
+ printTableData("<FONT COLOR=\"#00FF00\">Not support LCNA<FONT>","","ALIGN=\"CENTER\"");
+ } elsif($opt_onlylcna) {
+ #printTableData("-","","ALIGN=\"CENTER\"");
+ printTableData("<FONT COLOR=\"#00FF00\">Support only LCNA<FONT>","","ALIGN=\"CENTER\"");
+ } else {
+ printTableData("$statusStr","","ALIGN=\"CENTER\"");
+ }
+ if($mklink) {
+ printTableData("X","$current{log}","ALIGN=\"CENTER\"");
+ } else {
+ printTableData("-","","ALIGN=\"CENTER\"");
+ }
+ printTableData("X","$current{script}","ALIGN=\"CENTER\"");
+ if($current{packet} =~ /^\//){
+ printTableData("-","","ALIGN=\"CENTER\"");
+ }else {
+ printTableData("X","$current{packet}","ALIGN=\"CENTER\"");
+ }
+ undef $dumplink;
+ undef $dumplinktxt;
+ if($mklink) {
+ for($i=0;$i<$current{links};$i++) {
+ $dumplink .= "<A HREF=\"$current{log}.Link$i.dump\">Link$i</A> ";
+ $dumplinktxt .= "<A HREF=\"$current{log}.Link$i.dump.txt\">Link$i</A> ";
+ }
+ printTableData("$dumplink","","ALIGN=\"CENTER\"");
+ printTableData("$dumplinktxt","","ALIGN=\"CENTER\"") if $opt_dump2txt;
+ } else {
+ printTableData("-","","ALIGN=\"CENTER\"");
+ printTableData("-","","ALIGN=\"CENTER\"") if $opt_dump2txt;
+ }
+ } # unless($opt_profile)
+
+ print LOG "</TR>\n";
+ }
+ elsif ($current{type} eq "SKIP" ) {
+ if($opt_tiny != 0) {
+ print LOG "<TR BGCOLOR=\"@color[$flag]\">\n";
+
+ if($flag != 0) {
+ $flag = 0;
+ } else {
+ $flag = 1;
+ }
+ } else {
+ print LOG "<TR>\n";
+ }
+
+ $htmldoc = $current{doc} ? $current{doc} :
+ "$current{SeqDir}$current{SeqName}.html";
+ $htmldoc = "" if(! -r $htmldoc);
+ printTableData("$current{number}");
+ printTableData("$current{desc}",$htmldoc);
+
+ unless($opt_profile) {
+ $statusStr=getStatus($current{status});
+ printTableData("$statusStr","","ALIGN=\"CENTER\"");
+ printTableData("-","","ALIGN=\"CENTER\"");
+ printTableData("X","$current{script}","ALIGN=\"CENTER\"");
+ if($current{packet} =~ /^\//){
+ printTableData("-","","ALIGN=\"CENTER\"");
+ }else {
+ printTableData("X","$current{packet}","ALIGN=\"CENTER\"");
+ }
+ printTableData("-","","ALIGN=\"CENTER\"");
+ printTableData("-","","ALIGN=\"CENTER\"") if $opt_dump2txt;
+ } # unless($opt_profile)
+
+ print LOG "</TR>\n";
+ }
+ elsif ($status[$num]{type} eq "PRINT") {
+ print LOG "<TR>";
+ printTableData("<BR>");
+ printTableData("$current{strings}");
+ unless($opt_profile) {
+ printTableData("<BR>");
+ printTableData("<BR>");
+ printTableData("<BR>");
+ printTableData("<BR>");
+ printTableData("<BR>");
+ printTableData("<BR>") if $opt_dump2txt;
+ }
+ print LOG "</TR>\n";
+ }
+ elsif ($status[$num]{type} eq "PAUSE") {
+ print STDERR ($current{strings}=~/^\s*$/ ?
+ "Hit [enter] key " : $current{strings});
+ <STDIN>;
+ }
+ }
+
+ print LOG "</TABLE>\n";
+ print LOG "</CENTER>\n";
+}
+
+sub printFooter() {
+ if(($opt_tiny != 0) || ($opt_nofooter)) {
+ print LOG "</BODY>\n";
+ print LOG "</HTML>\n";
+ } else {
+ if(-e ".footer") {
+ print LOG "<HR>\n";
+ open FOOTER, ".footer" or die;
+ while(<FOOTER>){
+ print LOG $_;
+ }
+ close FOOTER;
+ }
+
+ if($opt_profile) {
+ print LOG <<ECHO;
+<HR>
+</BODY>
+</HTML>
+ECHO
+ } else {
+ print LOG <<ECHO;
+<HR>
+This Report was generated by
+<A HREF=\"http://www.tahi.org/\">TAHI</A> IPv6 Conformance Test Suite
+</BODY>
+</HTML>
+ECHO
+ }
+ }
+}
+
+sub mkComment(%) { local (
+ *status
+ ) = @_;
+
+ my $htmldoc = $status{doc} ? $status{doc}: "$status{SeqDir}$status{SeqName}.html";
+ $htmldoc = "" if(! -r $htmldoc);
+
+ my $pktlink= "<A HREF=\"$status{packet}\">X</A>";
+ $pktlink = "-" if($status{packet} =~ /^\//);
+ $pktlink = "<A HREF=\"packet.def\">X</A>" if($status{packet} eq "");
+
+ undef $dumplink;
+ undef $dumplinktxt;
+ for($i=0;$i<$status{links};$i++) {
+ $dumplink .= "<A HREF=\"$status{log}.Link$i.dump\">Link$i</A> ";
+ $dumplinktxt .= "<A HREF=\"$status{log}.Link$i.dump.txt\">Link$i</A> ";
+ }
+
+ $statusStr=getStatus($status{status});
+
+ open COMMENT, ">$status{number}.comment.html" or die;
+ print COMMENT <<ECHO;
+<HTML>
+<HEAD>
+<TITLE>Comments about the test</TITLE>
+</HEAD>
+<BODY BGCOLOR=\"#FFFFFF\">
+<CENTER><H1>Comments about the test</H1></CENTER>
+
+<TABLE BORDER=1>
+<TR>
+ <TH>No.</TH>
+ <TH>Title</TH>
+ <TH>Result</TH>
+ <TH>Log</TH>
+ <TH>Script</TH>
+ <TH>Packet</TH>
+ <TH>Dump<BR>(bin)</TH>
+ <TH>Dump<BR>(txt)</TH>
+</TR>
+
+<TR>
+ <TD>$status{number}</TD>
+ <TD><A HREF=\"$htmldoc\">$status{desc}</A></TD>
+ <TD ALIGN=\"CENTER\">$statusStr</TD>
+ <TD ALIGN=\"CENTER\"><A HREF=\"$status{log}\">X</A></TD>
+ <TD ALIGN=\"CENTER\"><A HREF=\"$status{script}\">X</A></TD>
+ <TD ALIGN=\"CENTER\">$pktlink</TD>
+ <TD ALIGN=\"CENTER\">$dumplink</TD>
+ <TD ALIGN=\"CENTER\">$dumplinktxt</TD>
+</TR>
+</TABLE>
+
+<H2>Category</H2>
+
+<H2>Commentaries</H2>
+<P><FONT COLOR=\"#FF0000\"> Now analyzing.</FONT>
+
+<H2>References</H2>
+
+<H2>Notes</H2>
+
+<H2>Implementors information</H2>
+
+<HR>
+<A HREF="mailto:contact\@tahi.org">contact\@tahi.org</A>
+</BODY>
+</HTML>
+ECHO
+ close COMMENT;
+}
+
+sub printTableData($;$$) { my (
+ $desc,
+ $link,
+ $td_opt
+ ) = @_;
+ $td_opt = " $td_opt" if $td_opt;
+ print LOG "<TD$td_opt>";
+ print LOG "<A HREF=\"$link\">" if $link;
+ print LOG "$desc";
+ print LOG "</A>" if $link;
+ print LOG "</TD>";
+}
+
+sub getStatus($) { my (
+ $status
+ ) = @_;
+ $result{0}="PASS";
+ if(!$dotest){
+ $result{1}="error";
+ if(($opt_nolcna) || ($opt_onlylcna)) {
+ $result{73}="<FONT COLOR=\"#AAAAAA\">SKIP</FONT>";
+ }
+ } else {
+ $result{1} ="-";
+ $result{2} ="<FONT COLOR=\"#00FF00\">Not yet supported</FONT>";
+ $result{3} ="<FONT COLOR=\"#00FF00\">WARN</FONT>";
+ $result{4} ="<FONT COLOR=\"#00FF00\">Host Only<FONT>";
+ $result{5} ="<FONT COLOR=\"#00FF00\">Router Only</FONT>";
+ $result{6} ="<FONT COLOR=\"#00FF00\">Special Only</FONT>";
+ $result{7} ="<FONT COLOR=\"#00FF00\">Except Host<FONT>";
+ $result{8} ="<FONT COLOR=\"#00FF00\">Except Router</FONT>";
+ $result{9} ="<FONT COLOR=\"#00FF00\">Except Special</FONT>";
+ $result{10}="<FONT COLOR=\"#AAAAAA\">SKIP</FONT>";
+ $result{11}="<FONT COLOR=\"#00FF00\">Type Mismatch</FONT>";
+ $result{32}="<FONT COLOR=\"#FF0000\">FAIL</FONT>";
+ $result{33}="<FONT COLOR=\"#FF0000\">Initialization Fail</FONT>";
+ $result{34}="<FONT COLOR=\"#FF0000\">Cleanup Fail</FONT>";
+ $result{64}="<FONT COLOR=\"#FF0000\">internal error</FONT>";
+ $result{72}="TBD";
+ $result{73}="<FONT COLOR=\"#AAAAAA\">SKIP</FONT>";
+ }
+ my $rc="internal error";
+
+ if ($status == 0){
+ $rc=$result{0};
+ }
+ elsif ($status == 0xff00){
+ $rc = "no test sequence";
+ }
+ elsif ($status > 0x80){
+ my $err = $status >> 8;
+ $rc = $result{$err} ||
+ "<FONT COLOR=\"#FF0000\">FAIL ($err)</FONT>";
+ }
+ elsif ($status < 0x80) {
+ $rc = "<FONT COLOR=\"#FF0000\">SIGNAL ($status)</FONT>";
+ }
+ $rc;
+}
+
+sub execScript($$$$$) { my (
+ $script,
+ $packet,
+ $opt,
+ $log,
+ $desc
+ ) = @_;
+ my $cmd= $script;
+ $cmd.=" -pkt $packet" if $packet;
+ $cmd.=" $opt" if $opt;
+ $cmd.=" -log $log" if $log;
+ $cmd.=" -ti \"$desc\"" if $desc;
+ print "$cmd\n";
+ $rc = system($cmd);
+ $rc;
+}
+
+sub checkPacket($$) { my (
+ $packet,
+ $opt
+ ) = @_;
+ my $cmd=searchPath($V6EVALBIN, "pktlint") || "pktlint";
+ $cmd.=" -pkt $packet" if $packet;
+ $cmd.=" $opt" if $opt;
+ $cmd.=" -log /dev/null";
+ $rc = 0xffff & system($cmd);
+ $rc;
+}
+
+sub seq2html($$) { my (
+ $script,
+ $doc
+ ) = @_;
+ my $rc;
+ my ($SeqName,$SeqDir,$SeqSuffix) = fileparse($script,'.seq');
+ my $outfile= $doc ? $doc : "${SeqDir}${SeqName}.html";
+ if(-f $outfile && !$opt_f) {
+ print "$outfile: Already exist\n";
+ return 0;
+ }
+ $rc=pod2html(
+ "--infile=$script",
+ "--outfile=$outfile",
+ "--noindex");
+ if($rc == 0 && !-r $outfile) {
+ print "warning : manual part is not included in $script .\n";
+ }
+ $rc;
+}
+
+
+
+#--------------------------------------------------------------#
+# void insertMD5(char **, char *); #
+#--------------------------------------------------------------#
+sub
+insertMD5($) {
+ my($log) = @_;
+
+ local(*LOG);
+
+ unless(open(LOG, $log)) {
+ return;
+ }
+
+ my $ctx = Digest::MD5->new;
+
+ $ctx->addfile(*LOG);
+
+ my $digest = $ctx->hexdigest;
+
+ close(LOG);
+
+ unless(open(LOG, ">> $log")) {
+ return;
+ }
+
+ print LOG "<!-- $digest -->\n";
+
+ close(LOG);
+
+ return;
+}
+
+sub getDateString() {
+ my ($sec,$min,$hour,$day,$mon,$year) = localtime;
+ my $datestr = sprintf '%04d/%02d/%02d %02d:%02d:%02d',
+ $year+1900, $mon+1, $day, $hour, $min, $sec;
+ $datestr;
+}
+
+
+
+#
+# make frame
+#
+################################################################
+sub makeFrame() {
+ open(FRAME ,">index.html");
+
+ print FRAME "<HTML>\n";
+ print FRAME "<HEAD>\n";
+
+ if($opt_profile) {
+ print FRAME "<TITLE>IPv6 Test Specification</TITLE>\n";
+ } else {
+ print FRAME "<TITLE>$Title</TITLE>\n";
+ }
+
+ print FRAME "</HEAD>\n";
+ print FRAME "<FRAMESET COLS=\"30%,70%\">\n";
+ print FRAME "<FRAME SRC=\"summary.html\">\n";
+ print FRAME "<FRAME SRC=\"report.html\">\n";
+ print FRAME "</FRAMESET>\n";
+ print FRAME "</HTML>\n";
+
+ close(FRAME);
+
+ insertMD5("index.html");
+
+ return;
+}
+
+
+
+#
+# print summary.html
+#
+################################################################
+sub printSummary() {
+ my $total = 0;
+ my $tbd = 0;
+ my $skip = 0;
+ my $pass = 0;
+ my $fail = 0;
+ my $warn = 0;
+ my $na = 0;
+
+ open(SUMMARY ,">summary.html");
+
+ print SUMMARY "<HTML>\n";
+ print SUMMARY "<HEAD>\n";
+
+ if($opt_profile) {
+ print SUMMARY "<TITLE>IPv6 Test Specification</TITLE>\n";
+ } else {
+ print SUMMARY "<TITLE>$Title</TITLE>\n";
+ }
+
+ print SUMMARY "</HEAD>\n";
+ print SUMMARY "<BODY BGCOLOR=\"#FFFFFF\">\n";
+
+ printTitle(SUMMARY);
+
+ print SUMMARY "<HR>\n";
+
+ for(my $d = 1; $status[$d]{type}; $d ++) {
+ if($status[$d]{type} eq "DO" ) {
+ $tbd ++;
+ $total ++;
+ next;
+ }
+
+ if($status[$d]{type} eq "DOTEST") {
+ my $s = $status[$d]{status};
+
+ if($s == 0) {
+ if(($opt_nolcna) || ($opt_onlylcna)) {
+ $na ++;
+ } else {
+ $pass ++;
+ }
+ } elsif($s > 0x80) {
+ my $err = $s >> 8;
+
+ if($err == 3) {
+ $warn ++;
+ } elsif($err == 32) {
+ $fail ++;
+ } else {
+ $na ++;
+ }
+ } else {
+ $na ++;
+ }
+
+ $total ++;
+ next;
+ }
+
+ if($status[$d]{type} eq "SKIP") {
+ $skip ++;
+ $total ++;
+ next;
+ }
+ }
+
+ print SUMMARY "Test Results\n";
+ print SUMMARY "<BLOCKQUOTE>\n";
+ print SUMMARY "<TABLE>\n";
+ print SUMMARY "<TR><TD><B>TOTAL</B></TD><TD>:</TD><TD>$total</TD></TR>\n";
+ print SUMMARY "<TR><TD><B>PASS</B></TD><TD>:</TD><TD>$pass</TD></TR>\n";
+ print SUMMARY "<TR><TD><B><FONT COLOR=\"#FF0000\">FAIL</FONT></B></TD><TD>:</TD><TD>$fail</TD></TR>\n";
+ print SUMMARY "<TR><TD><B><FONT COLOR=\"#00FF00\">WARN</FONT></B></TD><TD>:</TD><TD>$warn</TD></TR>\n";
+ print SUMMARY "<TR><TD><B><FONT COLOR=\"#AAAAAA\">SKIP</FONT></B></TD><TD>:</TD><TD>$skip</TD></TR>\n";
+ print SUMMARY "<TR><TD><B>N/A</B></TD><TD>:</TD><TD>$na</TD></TR>\n";
+
+ if($tbd != 0) {
+ print SUMMARY "<TR><TD><B>TBD</B></TD><TD>:</TD><TD>$tbd</TD></TR>\n";
+ }
+
+ print SUMMARY "</TABLE>\n";
+ print SUMMARY "</BLOCKQUOTE>\n";
+
+ print SUMMARY "<HR>\n";
+
+ if(-e ".footer") {
+ if(defined(open(FOOTER, ".footer"))) {
+ while(<FOOTER>){
+ my $str = $_;
+ $str =~ s/<A /<A TARGET="_top" /;
+
+ print SUMMARY $str;
+ }
+
+ close FOOTER;
+ }
+ }
+
+ print SUMMARY "<HR>\n";
+
+ print SUMMARY "This Report was generated by<BR>\n";
+ print SUMMARY "<A HREF=\"http://www.tahi.org/\">TAHI</A> IPv6 Conformance Test Suite<BR>\n";
+
+ print SUMMARY "</BODY>\n";
+ print SUMMARY "</HTML>\n";
+
+ close(SUMMARY);
+
+ insertMD5("summary.html");
+
+ return;
+}
+
+########################################################################
+# parse Args
+#
+# Getopt::Long module is used for argument parse
+#-----------------------------------------------------------------------
+sub parseArgs() {
+ use Getopt::Long;
+ $Getopt::Long::ignorecase=undef;
+ my $optStat = GetOptions(
+ "t|TestMode!",
+ "g|GenerateMode!",
+ "G|GenerateMode2!",
+ "s|Start=s",
+ "e|End=s",
+ "f!",
+ "title=s",
+ "dump2txt!",
+ "F!",
+ "nolcna",
+ "onlylcna",
+ "tiny",
+ "profile",
+ "nofooter",
+ );
+ $dotest=1; $dochk=0; $dogen=0; $mkindex=1; $mklink=1;
+ if($opt_profile) {
+ $dotest=0;
+ $dogen=1;
+ }
+
+ if($opt_t) { $dotest=0; $dochk=1; $mkindex=0;}
+ if($opt_g) { $dotest=0; $dogen=1;}
+ if($opt_G) { $dotest=0; $dogen=1; $mklink=0}
+ if($opt_nolcna) { $dotest=0; $dogen=1; $mklink=0}
+ if($opt_onlylcna) { $dotest=0; $dogen=1; $mklink=0}
+ $StartNum= $opt_s ? $opt_s : 0;
+ $EndNum= $opt_e ? $opt_e : 0xffff; # xxx
+ if($StartNum > $EndNum) {
+ print "Start Test Number greater than End Test Number\n";
+ exit 1;
+ }
+ $Title= $opt_title ? $opt_title : "IPv6 Conformance Test";
+}
+
+########################################################################
+__END__
+
+=head1 NAME
+
+B<autorun> - run all Conformance Test Script in INDEX.
+
+=head1 SYNOPSIS
+
+B<autorun> [C<-t>] [C<-g>|C<-G>] [C<-f>] [I<INDEX> ...]
+
+=head1 DESCRIPTION
+
+B<autorun> run Test Script by order in INDEX file.
+
+The options are as follows:
+
+=over 1
+
+=item -t
+Check Packet Definition syntax.
+
+=item -g
+Genarate HTML document from test sequence file.
+
+=item -G
+This option is same as -g option except
+not generating links of log and tcpdump.
+
+=item -f
+Force to generate index.html even if the file already exists.
+
+=item -F
+Not generate "Why link".
+
+=back 1
+
+=head2 INDEX file format
+
+This file specify how to run tests. This file has the following
+format :
+
+ Empty lines and lines starting with '#' are comments.
+
+ Each line five field separated ':'. the fields are :
+
+ 1'st field specify test sequence script.
+
+ 2'nd field specify packet definition file.
+
+ 3'rd field specify option for test script.
+
+ 4'th field specify HTML document if you use insted of auto
+ generate document from test script specified 1st field.
+
+ 5'th field specify test name.
+
+ 6'th field specify # of used Links.
+
+=head1 OUTPUT
+
+B<autorun> output index.html. It is result of tests, you can see
+the result report by Web Browser.
diff -urN tahi-linux-3.0.12/bin/autorun/Makefile tahi-linux-3.0.12-linux/bin/autorun/Makefile
--- tahi-linux-3.0.12/bin/autorun/Makefile 2000-08-02 16:42:33.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/autorun/Makefile 2007-12-10 20:30:38.000000000 +0100
@@ -2,6 +2,7 @@
beforeinstall:
${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
${.CURDIR}/autorun.pl ${DESTDIR}${BINDIR}/autorun
-
-.include <bsd.prog.mk>
+all:
+ cp autorun.pl autorun
+# .include <bsd.prog.mk>
Dateien tahi-linux-3.0.12/bin/checker/checker und tahi-linux-3.0.12-linux/bin/checker/checker sind verschieden.
diff -urN tahi-linux-3.0.12/bin/checker/Makefile tahi-linux-3.0.12-linux/bin/checker/Makefile
--- tahi-linux-3.0.12/bin/checker/Makefile 2006-08-31 03:57:53.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/checker/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,14 +1,21 @@
-CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
-LDFLAGS+= -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
-LDADD+= -lPkt -lPz -lCm -lcrypto
-SRCS= checker.cc
-PROG_CXX= $(SRCS:.cc=)
-PROG= ${PROG_CXX}
-NOMAN=
-NO_MAN=
-CLEANFILES+= .depend
-
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+CC=c++
+Cm=../../lib/Cm/
+Pz=../../lib/Pz/
+pkt=../../lib/pkt/
+CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
+LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
+LDADD += -lPkt -lPz -lPz2 -lCm -lcrypto
+SRCS = checker.cc
+PROG_CXX= $(SRCS:.cc=)
+PROG = ${PROG_CXX}
+NOMAN =
+NO_MAN =
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
+all:
+ $(CC) $(SRCS) -o checker $(LDADD) $(CXXFLAGS) $(LDFLAGS) -fno-strict-aliasing -pipe -g -Wall -Woverloaded-virtual
+
+clean:
+ - rm checker
Dateien tahi-linux-3.0.12/bin/dhcomp/dhcomp und tahi-linux-3.0.12-linux/bin/dhcomp/dhcomp sind verschieden.
diff -urN tahi-linux-3.0.12/bin/dhcomp/Makefile tahi-linux-3.0.12-linux/bin/dhcomp/Makefile
--- tahi-linux-3.0.12/bin/dhcomp/Makefile 2006-08-31 03:57:53.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/dhcomp/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -40,20 +40,28 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/dhcomp/Makefile,v 1.5 2006/08/31 01:57:53 akisada Exp $
+# $TAHI: v6eval/bin/dhcomp/Makefile,v 1.4 2005/05/09 09:35:21 akisada Exp $
#
######################################################################
-CXXFLAGS+= -I/usr/local/include
-CXXFLAGS+= -DTAHI
-LDFLAGS += -L/usr/local/lib
-LDADD+= -lcrypto
-SRCS= dhcomp.cc
-PROG_CXX= $(SRCS:.cc=)
-PROG= ${PROG_CXX}
-NOMAN=
-NO_MAN=
-CLEANFILES+= .depend
+CC = c++
+CXXFLAGS+= -I/usr/local/include
+CXXFLAGS+= -DTAHI
+LDFLAGS += -L/usr/local/lib
+LDADD += -lcrypto
+SRCS = dhcomp.cc
+PROG_CXX = $(SRCS:.cc=)
+PROG = ${PROG_CXX}
+NOMAN =
+NO_MAN =
+
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: dhcomp
+
+dhcomp:
+ $(CC) $(CXXFLAGS) $(LDADD) $(LDFLAGS) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm dhcomp
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
Dateien tahi-linux-3.0.12/bin/dhgen/dhgen und tahi-linux-3.0.12-linux/bin/dhgen/dhgen sind verschieden.
diff -urN tahi-linux-3.0.12/bin/dhgen/Makefile tahi-linux-3.0.12-linux/bin/dhgen/Makefile
--- tahi-linux-3.0.12/bin/dhgen/Makefile 2006-08-31 03:57:53.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/dhgen/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -40,20 +40,28 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/dhgen/Makefile,v 1.5 2006/08/31 01:57:53 akisada Exp $
+# $TAHI: v6eval/bin/dhgen/Makefile,v 1.4 2005/05/09 09:35:21 akisada Exp $
#
######################################################################
-CXXFLAGS+= -I/usr/local/include
-CXXFLAGS+= -DTAHI
-LDFLAGS+= -L/usr/local/lib
-LDADD+= -lcrypto
-SRCS= dhgen.cc
-PROG_CXX= $(SRCS:.cc=)
-PROG= ${PROG_CXX}
-NOMAN=
-NO_MAN=
-CLEANFILES+= .depend
+CC=c++
+CXXFLAGS+= -I/usr/local/include
+CXXFLAGS+= -DTAHI
+LDFLAGS += -L/usr/local/lib
+LDADD += -lcrypto
+SRCS = dhgen.cc
+PROG_CXX = $(SRCS:.cc=)
+PROG = ${PROG_CXX}
+NOMAN =
+NO_MAN =
+
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: dhgen
+
+dhgen:
+ $(CC) $(CXXFLAGS) $(LDADD) $(LDFLAGS) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm dhgen
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
Dateien tahi-linux-3.0.12/bin/file2hex/file2hex und tahi-linux-3.0.12-linux/bin/file2hex/file2hex sind verschieden.
diff -urN tahi-linux-3.0.12/bin/file2hex/Makefile tahi-linux-3.0.12-linux/bin/file2hex/Makefile
--- tahi-linux-3.0.12/bin/file2hex/Makefile 2006-08-31 03:57:54.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/file2hex/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -40,16 +39,23 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/file2hex/Makefile,v 1.2 2006/08/31 01:57:54 akisada Exp $
+# $TAHI: v6eval/bin/file2hex/Makefile,v 1.1 2005/05/25 06:26:33 akisada Exp $
#
########################################################################
-PROG= file2hex
-SRCS= file2hex.c
+PROG= file2hex
+SRCS= file2hex.c
CFLAGS+= -Wall -g
NOMAN=
NO_MAN=
-CLEANFILES+= .depend
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: file2hex
+
+file2hex:
+ $(CC) $(CFLAGS) $(LDADD) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm file2hex
+
Dateien tahi-linux-3.0.12/bin/ivcomp/ivcomp und tahi-linux-3.0.12-linux/bin/ivcomp/ivcomp sind verschieden.
diff -urN tahi-linux-3.0.12/bin/ivcomp/Makefile tahi-linux-3.0.12-linux/bin/ivcomp/Makefile
--- tahi-linux-3.0.12/bin/ivcomp/Makefile 2006-08-31 03:57:54.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/ivcomp/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -40,17 +39,24 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/ivcomp/Makefile,v 1.3 2006/08/31 01:57:54 akisada Exp $
+# $TAHI: v6eval/bin/ivcomp/Makefile,v 1.2 2005/05/09 09:35:21 akisada Exp $
#
########################################################################
-PROG= ivcomp
-SRCS= ivcomp.c
+PROG= ivcomp
+SRCS= ivcomp.c
CFLAGS+= -Wall -g
-LDADD+= -lcrypto
+LDADD+= -lcrypto
NOMAN=
NO_MAN=
-CLEANFILES+= .depend
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: ivcomp
+
+ivcomp:
+ $(CC) $(CFLAGS) $(LDADD) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm ivcomp
+
diff -urN tahi-linux-3.0.12/bin/Makefile tahi-linux-3.0.12-linux/bin/Makefile
--- tahi-linux-3.0.12/bin/Makefile 2005-05-25 08:52:09.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/Makefile 2007-12-10 20:46:52.000000000 +0100
@@ -1,4 +1,23 @@
SUBDIR=pktbuf pktctl pktsend pktrecv checker autorun pktlint remotes dhgen dhcomp prfcomp ivcomp x509dec sigcomp file2hex
+PREFIX=/usr/local/v6eval
-.MAIN: depend all
-.include <bsd.subdir.mk>
+all:
+ for dir in $(SUBDIR); do \
+ $(MAKE) -C $$dir all; \
+ done
+clean:
+ for dir in $(SUBDIR); do \
+ $(MAKE) -C $$dir clean; \
+ done
+install:
+ mkdir $(PREFIX)/bin
+ for dir in $(SUBDIR); do \
+ cp -v $$dir/$$dir $(PREFIX)/bin/$$dir; \
+ done
+ cp autorun/autorun.pl $(PREFIX)/bin/
+ cd remotes; make install; cd ..
+
+
+
+# .MAIN: depend all # no idea what it does :)
+# .include <bsd.subdir.mk>
diff -urN tahi-linux-3.0.12/bin/Makefile.inc tahi-linux-3.0.12-linux/bin/Makefile.inc
--- tahi-linux-3.0.12/bin/Makefile.inc 2002-12-02 13:31:27.000000000 +0100
+++ tahi-linux-3.0.12-linux/bin/Makefile.inc 2007-12-09 23:19:55.000000000 +0100
@@ -1,5 +1,5 @@
BINDIR?= /usr/local/v6eval/bin
-MANDIR= /usr/local/v6eval/man/man
+MANDIR= /usr/local/v6eval/man
l=../../lib
Cm=$l/Cm
Pz=$l/Pz
diff -urN tahi-linux-3.0.12/bin/pktbuf/Makefile tahi-linux-3.0.12-linux/bin/pktbuf/Makefile
--- tahi-linux-3.0.12/bin/pktbuf/Makefile 2006-08-31 03:57:54.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/pktbuf/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,14 +1,22 @@
-CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
-LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
-LDADD+= -lPkt -lPz -lCm -lcrypto
-SRCS= pktbuf.cc
-PROG_CXX= pktbuf
-PROG= ${PROG_CXX}
-NOMAN=
-NO_MAN=
-CLEANFILES+= .depend
+CC=c++
+Cm=../../lib/Cm/
+Pz=../../lib/Pz/
+pkt=../../lib/pkt/
+CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
+LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
+LDADD += -lPkt -lPz -lPz2 -lCm -lcrypto
+SRCS = pktbuf.cc
+PROG_CXX= pktbuf
+PROG = ${PROG_CXX}
+NOMAN =
+NO_MAN =
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+#.include "../Makefile.inc"
+#.include "bsd.prog.mk"
+# $(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
+all:
+ $(CC) $(SRCS) -o $(PROG_CXX) $(LDADD) $(CXXFLAGS) $(LDFLAGS) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm $(PROG_CXX)
-$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
Dateien tahi-linux-3.0.12/bin/pktbuf/pktbuf und tahi-linux-3.0.12-linux/bin/pktbuf/pktbuf sind verschieden.
diff -urN tahi-linux-3.0.12/bin/pktctl/Makefile tahi-linux-3.0.12-linux/bin/pktctl/Makefile
--- tahi-linux-3.0.12/bin/pktctl/Makefile 2006-08-31 03:57:54.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/pktctl/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,12 +1,20 @@
-CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
-LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
-LDADD+= -lPkt -lPz -lCm -lcrypto
-SRCS= pktctl.cc
-PROG_CXX= pktctl
-PROG= ${PROG_CXX}
-CLEANFILES+= .depend
+CC=c++
+Cm=../../lib/Cm/
+Pz=../../lib/Pz/
+pkt=../../lib/pkt/
+CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
+LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
+LDADD += -lPkt -lPz -lPz2 -lCm -lcrypto
+SRCS = pktctl.cc
+PROG_CXX= pktctl
+PROG = ${PROG_CXX}
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+#.include "../Makefile.inc"
+#.include "bsd.prog.mk"
+#$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
+all:
+ $(CC) $(SRCS) -o $(PROG_CXX) $(LDADD) $(CXXFLAGS) $(LDFLAGS) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm $(PROG_CXX)
-$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
Dateien tahi-linux-3.0.12/bin/pktctl/pktctl und tahi-linux-3.0.12-linux/bin/pktctl/pktctl sind verschieden.
diff -urN tahi-linux-3.0.12/bin/pktlint/Makefile tahi-linux-3.0.12-linux/bin/pktlint/Makefile
--- tahi-linux-3.0.12/bin/pktlint/Makefile 2000-08-02 16:42:33.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/pktlint/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -2,6 +2,8 @@
beforeinstall:
${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
${.CURDIR}/pktlint.pl ${DESTDIR}${BINDIR}/pktlint
-
-.include <bsd.prog.mk>
+all:
+ cp pktlint.pl pktlint
+
+#.include <bsd.prog.mk>
diff -urN tahi-linux-3.0.12/bin/pktlint/pktlint tahi-linux-3.0.12-linux/bin/pktlint/pktlint
--- tahi-linux-3.0.12/bin/pktlint/pktlint 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/bin/pktlint/pktlint 2007-12-10 20:48:56.000000000 +0100
@@ -0,0 +1,460 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Yokogawa Electric Corporation,
+# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $TAHI: v6eval/bin/pktlint/pktlint.pl,v 1.5 2001/10/05 11:09:54 tanaka Exp $
+
+use File::Basename;
+use Getopt::Long;
+
+########################################################################
+
+################################################################
+# Create Intermediate File for Packet Definition
+# and get included files
+#---------------------------------------------------------------
+sub doCpp() {
+ my @cmd = ($PktCompiler, "-I./", "-I$V6Root/include");
+
+ if ($NoStd) {
+ prTrace('$NoStd is 1');
+ }else {
+ my $includepath = searchPath("./:$V6Root/include/",'std.def');
+ push(@cmd, ("-include", $includepath));
+ prTrace('$NoStd is 0');
+ }
+ push(@cmd, ($PktDef, $PktImd));
+ prTrace("Creating Intermiciate file: @cmd");
+
+ my $ret = system(@cmd);
+
+ my $exit_value = $ret >> 8;
+ if ($ret != 0) {
+ prErrExit("$PktCompiler failed exit value:$exit_value");
+ }
+
+ #
+ # get included file names
+ #
+
+ open( FILE, "$PktImd") || prErrExit("Can not open $PktImd");
+ while( <FILE> ){
+ next unless(/^#/);
+ chomp;
+ ($incfile) = /^\S+\s+\d+\s+"(\S+)"/;
+ next if ($incfile eq "");
+ next if ($incfile eq $PktDef);
+ unless (grep {$incfile eq $_} @IncFiles) {
+ push(@IncFiles, $incfile);
+ }
+ }
+ close FILE;
+
+}
+
+################################################################
+# run checker
+#---------------------------------------------------------------
+
+sub doCheck() {
+
+ my $cmd = "$BinDir/checker -t $TnDef -n $NutDef -p $PktImd -i $IfName $ENV{V6EVALOPT}";
+#print "$cmd\n";
+
+ pipe P_READ, C_WRITE;
+ pipe C_READ, P_WRITE;
+ my $pid = fork;
+ unless ($pid) { # child
+ open(STDIN, "<&C_READ");
+ open(STDOUT, ">&C_WRITE");
+ open(STDERR, ">&C_WRITE");
+ exec "$cmd";
+ prErrExit("$cmd failed");
+ }
+ # parent
+ close(C_READ);
+ close(C_WRITE);
+ select(P_READ); $| = 1;
+ select(P_WRITE); $| = 1;
+ select(STDOUT);
+
+ while (<P_READ>) {
+ #print $_;
+ chomp;
+ ($type, $line) = /^(\w\w\w):(.*)$/;
+ if ($type eq "log") {
+ prLog(" $line");
+ }
+ elsif ($type eq "err") {
+ prErr("$line");
+ }
+ elsif ($type eq "std") {
+ prErr("$line");
+ }
+ else {
+ prLog(" dbg:$allmsg", 100);
+ }
+ }
+ wait;
+ $rc=$?;
+ if ($?) {
+ prErrExit("check failed");
+ }
+ $rc;
+}
+
+########################################################################
+# To handle log request.
+#
+# If $level is specified, this will be compare with $LogLevel,
+# the outer level specified by '-l' arguments at the script invocaiton.
+# If it is less or equal, than the message will be output.
+# So, value 0 is the most strong request, In case of this,
+# the message will be logged even if any value is specified
+# for $LogLevel.
+# In case of omittion, it is treated as 0. (always logged)
+#
+# If you have some message wants to output in case LogLevel is 2
+# but not for 1, you shoud specify $level here as 1.
+#
+#------------------------------------------------------------------------
+sub prLog($;$) { my (
+ $message, # message for logging
+ $level # log level, this will be compared with the
+ # outer level specifid by '-l' arguments
+ ) = @_;
+ $level=0 unless defined($level); # default 0;
+ #prTrace("LOG $level $LogLevel");
+ print LOG "$message\n" if($level<=$LogLevel);
+ print STDOUT "$message\n" if($VLog && $level<=$LogLevel);
+}
+
+########################################################################
+# Print message to stderr
+#-----------------------------------------------------------------------
+sub prOut($) { my (
+ $message # message for output
+ ) = @_;
+ print STDOUT "$message\n";
+}
+
+########################################################################
+# Handle trace messge just for debug for this perl module
+#-----------------------------------------------------------------------
+sub prTrace($) { my (
+ $message # message for output
+ ) = @_;
+ prOut("##### $message") if $Trace;
+}
+
+########################################################################
+# Handle error but keep continue
+#-----------------------------------------------------------------------
+sub prErr($) { my (
+ $message # message for error
+ ) = @_;
+ prLog("!!! $message");
+ print STDERR "$message\n";
+}
+
+########################################################################
+# Handle error and exit
+#-----------------------------------------------------------------------
+sub prErrExit($) { my (
+ $message # message for error
+ ) = @_;
+ prErr("pktlint: $message"); # assume it is error detected
+ # in this module leval.
+ exit 1;
+}
+
+########################################################################
+# parse Args
+#
+# Getopt::Long module is used for argument parse
+#-----------------------------------------------------------------------
+sub parseArgs() {
+
+ #printUsage() unless(@ARGV);
+
+ $Getopt::Long::ignorecase=undef;
+ my $optStat = GetOptions(
+ "tn|TnDef=s",
+ "nut|NutDef=s",
+ "pkt|PktDef=s",
+ "if|IfName=s",
+ "l|LogLevel=i",
+ "d|DebugLevel=i",
+ "log|LogFile=s",
+ "h|Help",
+ "trace", # for debug of this, output trace
+ "keepImd", # for debug of this, keep intermidiate file
+ "v|VLog", # print STDOUT log file
+ "nostd|NoStd",
+ "vroot|V6Root=s",
+ "remote=s",
+ "noremote",
+ );
+ printUsage() if( $opt_h || !$optStat);
+
+ while( @ARGV > 0) {
+ $opt = shift (@ARGV);
+ print STDOUT "warning: unknown option $opt\n";
+ };
+
+ $V6Root = $opt_vroot || $ENV{V6EVALROOT} || "/usr/local/v6eval/" ;
+
+ $BinDir= "$V6Root/bin";
+ $EtcDir= "$V6Root/etc";
+
+ $NoStd = $opt_nostd ? $opt_nostd : 0;
+ $VLog = $opt_v ? $opt_v : 0;
+ $Trace =($opt_trace==1);
+ $KeepImd =($opt_keepImd==1);
+
+ $TnDef = $opt_tn ? $opt_tn : "tn.def";
+ $TnDef = searchPath("./:${EtcDir}", $TnDef);
+
+ $NutDef = $opt_nut ? $opt_nut : "nut.def";
+ $NutDef = searchPath("./:${EtcDir}", $NutDef);
+
+ $PktDef = $opt_pkt ? $opt_pkt : "packet.def";
+
+ $IfName = $opt_if ? $opt_if : "Link0";
+
+ $LogFile= $opt_log ? $opt_log : "packet.chk";
+ $LogLevel = $opt_l ? $opt_l : 1;
+ $DbgLevel = $opt_d ? $opt_d : 0;
+
+ checkFile( $TnDef );
+ checkFile( $NutDef );
+ checkFile( $PktDef );
+
+ $PktCompiler= "/usr/libexec/cpp";
+ $SocketPath= "/tmp";
+
+
+ $PktImd = '/tmp/' . basename($PktDef) . '.i';
+}
+
+########################################################################
+# Search Path
+#-----------------------------------------------------------------------
+sub searchPath($$) { my(
+ $path, # path
+ $filename # filename for search
+ ) = @_;
+ my $fullname="";
+ if($filename =~ m!.*/.+!) {
+ $fullname=$filename;
+ }
+ my @paths=split(/:/,($path));
+ foreach(@paths) {
+ my $tmpname=$_ . "/" . $filename;
+ #my $tmpname=$_ . $filename;
+ if($fullname eq "") {
+ $fullname=$tmpname if(-e $tmpname);
+ }
+ }
+ prErr("$filename don't exist in the path ($path)") if($fullname eq "");
+ $fullname;
+}
+
+########################################################################
+# Check file if it is readble...
+#-----------------------------------------------------------------------
+sub checkFile($) { my(
+ $file # command string
+ ) = @_;
+ unless( -r "$file" ){
+ prErrExit("$file not exist or cannot read");
+ }
+}
+
+########################################################################
+# Check TN definition and setup environment
+#---------------------------------------------------------------
+
+sub checkTN() {
+ # double entry not check yet. (OVERWRITE)
+ prTrace("Looking up $TnDef");
+ open( FILE, "$TnDef") || prErrExit("Can not open $TnDef");
+ while( <FILE> ){
+ next if(/^\s*$/ || /^#/); # remove comment
+ chomp;
+ if( /^(socketpath)\s+(\S+)/ ) { $SocketPath=$2; }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/){
+ push(@TnIfs,$1);
+ push(@TnSos,$2);
+ }
+ elsif(/^(RemoteCuPath)\s+(\S+)/ ||
+ /^(RemoteDevice)\s+(\S+)/ ||
+ /^(RemoteDebug)\s+(\S+)/ ||
+ /^(RemoteIntDebug)\s+(\S+)/ ||
+ /^(RemoteLog)\s+(\S+)/ ||
+ /^(RemoteSpeed)\s+(\S+)/ ||
+ /^(RemoteLogout)\s+(\S+)/ ||
+ /^(RemoteMethod)\s+(\S+)/ ||
+ /^(filter)\s+(\S+)/) {
+ $TnDef{$1}=$2;
+ }
+ else{ prOut("Unknown line in $TnDef: $_\n");}
+ prTrace("TN : $_");
+ }
+ close FILE;
+}
+
+########################################################################
+# Check NUT definition and setup environment
+#---------------------------------------------------------------
+
+sub checkNUT() {
+ my $ifname;
+ prTrace("Looking up $NutDef");
+ open( FILE, "$NutDef") || prErrExit("Can not open $NutDef");
+ while( <FILE> ){
+ next if(/^\s*$/ || /^#/); # remove comment
+ chomp;
+ if( /^(System)\s+(.*)/ ) { $System = $2;}
+ elsif( /^(TargetName)\s+(.*)/ ) { $TargetName = $2;}
+ elsif( /^(HostName)\s+(.*)/ ) { $HostName = $2;}
+ elsif( /^(Type)\s+(.*)/ ) { $Type = $2;}
+ elsif( /^(Password)\s+(.*)/ ) { }
+ elsif( /^(User)\s+(.*)/ ) { }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/){
+ push(@NutIfs,$1);
+ }
+ else{ prOut("Unknown line in $NutDef: $_");}
+ prTrace("NUT: $_");
+ }
+ close FILE;
+}
+
+########################################################################
+# check commonly used interface
+#---------------------------------------------------------------
+
+sub checkIF () {
+ my $ifname;
+ foreach $ifname (@TnIfs) {
+ if( grep {$ifname eq $_} @NutIfs ){
+ push(@IfNames, $ifname);
+ }
+ }
+ if (@IfNames == 0) {
+ prErrExit("No interface to use commonly\n".
+ "TN : @TnIfs\nNUT: @NutIfs");
+ }
+ unless (grep {$IfName eq $_} @IfNames) {
+ prErrExit("No interface definition for $IfName");
+ }
+}
+
+########################################################################
+# Print usage and exit
+#-----------------------------------------------------------------------
+sub printUsage() {
+ prOut("Usage: $PROGRAM_NAME [-h]" );
+ prOut(" [-tn tn_def_file]" );
+ prOut(" [-nut nut_def_file]" );
+ prOut(" [-pkt pkt_def_file]");
+ prOut(" [-if interface_name]");
+ #prOut(" [-log log_file] [-l log_level]");
+ prOut(" [-log log_file]");
+ prOut(" [-v]" );
+ prOut(" [-nostd]" );
+ prOut(" [-vroot default directory]");
+ exit 1;
+}
+
+########################################################################
+# main
+########################################################################
+
+#---------------------------------------------------------------
+# Parse args and complete global valiables
+#---------------------------------------------------------------
+parseArgs();
+checkTN();
+checkNUT();
+checkIF();
+doCpp();
+
+#---------------------------------------------------------------
+# Open log file
+#---------------------------------------------------------------
+open(LOG, ">$LogFile") || (
+ prOut("Can not create $LogFile for logging ($!)"),exit 1) ;
+prTrace("Log will be outputed to $LogFile");
+
+prLog('-'x72);
+
+prLog("PktDef: $PktDef");
+foreach(@IncFiles) {
+ prLog("Include: $_");
+}
+prLog('-'x72);
+
+prLog("TnDef: $TnDef");
+prLog('-'x72);
+
+prLog("NutDef: $NutDef");
+if ($System) { prLog("System: $System");}
+if ($TargetName) { prLog("TargetName: $TargetName");}
+if ($HostName) { prLog("HostName: $HostName");}
+if ($Type) { prLog("Type: $Type"); }
+prLog('-'x72);
+
+$rc=doCheck();
+
+prLog('-'x72);
+close(LOG);
+exit $rc;
+
+END {
+ if( $KeepImd ) { # just for degug
+ prOut("Keep packet ImdFile <$PktImd>");
+ }
+ else {
+ unlink("$PktImd");
+ } # normally unlink
+}
diff -urN tahi-linux-3.0.12/bin/pktrecv/Makefile tahi-linux-3.0.12-linux/bin/pktrecv/Makefile
--- tahi-linux-3.0.12/bin/pktrecv/Makefile 2006-08-31 03:57:54.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/pktrecv/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,14 +1,22 @@
-CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
-LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
-LDADD+= -lPkt -lPz -lCm -lcrypto
-SRCS= pktrecv.cc
-PROG_CXX= pktrecv
-PROG= ${PROG_CXX}
-NOMAN=
-NO_MAN=
-CLEANFILES+= .depend
+CC=c++
+Cm=../../lib/Cm/
+Pz=../../lib/Pz/
+pkt=../../lib/pkt/
+CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
+LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
+LDADD += -lPkt -lPz -lPz2 -lCm -lcrypto
+SRCS = pktrecv.cc
+PROG_CXX= pktrecv
+PROG = ${PROG_CXX}
+NOMAN =
+NO_MAN =
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+#.include "../Makefile.inc"
+#.include "bsd.prog.mk"
+#$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
+all:
+ $(CC) $(SRCS) -o $(PROG_CXX) $(LDADD) $(CXXFLAGS) $(LDFLAGS) -pipe -Wall -g -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm $(PROG_CXX)
-$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
Dateien tahi-linux-3.0.12/bin/pktrecv/pktrecv und tahi-linux-3.0.12-linux/bin/pktrecv/pktrecv sind verschieden.
diff -urN tahi-linux-3.0.12/bin/pktsend/Makefile tahi-linux-3.0.12-linux/bin/pktsend/Makefile
--- tahi-linux-3.0.12/bin/pktsend/Makefile 2006-08-31 03:57:55.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/pktsend/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,12 +1,20 @@
-CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
-LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
-LDADD+= -lPkt -lPz -lCm -lcrypto
-SRCS= pktsend.cc
-PROG_CXX= pktsend
-PROG= ${PROG_CXX}
-CLEANFILES+= .depend
+CC=c++
+Cm=../../lib/Cm/
+Pz=../../lib/Pz/
+pkt=../../lib/pkt/
+CXXFLAGS+= -I${Cm} -I${Pz} -I${pkt} -I/usr/local/include
+LDFLAGS += -L${Cm} -L${Pz} -L${pkt} -L/usr/local/lib
+LDADD += -lPkt -lPz -lPz2 -lCm -lcrypto
+SRCS = pktsend.cc
+PROG_CXX= pktsend
+PROG = ${PROG_CXX}
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+#.include "../Makefile.inc"
+#.include "bsd.prog.mk"
+#$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
+all:
+ $(CC) $(SRCS) -o $(PROG_CXX) $(LDADD) $(CXXFLAGS) $(LDFLAGS) -pipe -Wall -g -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm $(PROG_CXX)
-$(PROG): ${Cm}/libCm.a ${Pz}/libPz.a ${pkt}/libPkt.a
Dateien tahi-linux-3.0.12/bin/pktsend/pktsend und tahi-linux-3.0.12-linux/bin/pktsend/pktsend sind verschieden.
diff -urN tahi-linux-3.0.12/bin/prfcomp/Makefile tahi-linux-3.0.12-linux/bin/prfcomp/Makefile
--- tahi-linux-3.0.12/bin/prfcomp/Makefile 2006-08-31 03:57:55.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/prfcomp/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -40,17 +39,24 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/prfcomp/Makefile,v 1.3 2006/08/31 01:57:55 akisada Exp $
+# $TAHI: v6eval/bin/prfcomp/Makefile,v 1.2 2005/05/09 09:35:21 akisada Exp $
#
########################################################################
-PROG= prfcomp
-SRCS= prfcomp.c
+PROG= prfcomp
+SRCS= prfcomp.c
CFLAGS+= -Wall -g
-LDADD+= -lcrypto
+LDADD+= -lcrypto
NOMAN=
NO_MAN=
-CLEANFILES+= .depend
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: prfcomp
+
+prfcomp:
+ $(CC) $(CFLAGS) $(LDADD) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm prfcomp
+
Dateien tahi-linux-3.0.12/bin/prfcomp/prfcomp und tahi-linux-3.0.12-linux/bin/prfcomp/prfcomp sind verschieden.
diff -urN tahi-linux-3.0.12/bin/remotes/Makefile tahi-linux-3.0.12-linux/bin/remotes/Makefile
--- tahi-linux-3.0.12/bin/remotes/Makefile 2005-05-25 04:08:48.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/remotes/Makefile 2007-12-13 13:44:52.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -55,4 +54,13 @@
install -d -o bin -g bin -m 755 $(PREFIX)/bin
install -c -o bin -g bin -m 444 $(DOCFILES) $(PREFIX)/bin/
-.include <bsd.subdir.mk>
+install:
+ install -d -o bin -g bin -m 755 $(PREFIX)/bin
+ install -c -o bin -g bin -m 444 $(DOCFILES) $(PREFIX)/bin/
+ @for subdir in ${SUBDIR}; do \
+ echo "==> $$subdir"; \
+ (cp -a $$subdir $(PREFIX)/bin;); \
+ done
+
+
+#.include <bsd.subdir.mk>
diff -urN tahi-linux-3.0.12/bin/remotes/unknown/reboot.rmt tahi-linux-3.0.12-linux/bin/remotes/unknown/reboot.rmt
--- tahi-linux-3.0.12/bin/remotes/unknown/reboot.rmt 2003-10-14 08:07:30.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/remotes/unknown/reboot.rmt 2007-12-15 11:47:14.000000000 +0100
@@ -46,5 +46,7 @@
################################################################
use V6evalRemote;
-
+ rOpen();
+ rLogin(10);
+ rReboot(10);
exit($V6evalRemote::exitNS);
diff -urN tahi-linux-3.0.12/bin/sigcomp/Makefile tahi-linux-3.0.12-linux/bin/sigcomp/Makefile
--- tahi-linux-3.0.12/bin/sigcomp/Makefile 2006-08-31 03:57:55.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/sigcomp/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -40,21 +39,29 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/sigcomp/Makefile,v 1.3 2006/08/31 01:57:55 akisada Exp $
+# $TAHI: v6eval/bin/sigcomp/Makefile,v 1.2 2005/05/09 09:35:23 akisada Exp $
#
########################################################################
-PROG= sigcomp
-SRCS= sigcomp.c
+PROG= sigcomp
+SRCS= sigcomp.c
CFLAGS+= -Wall -g
-LDADD+= -lcrypto
+LDADD+= -lcrypto
NOMAN=
NO_MAN=
-CLEANFILES+= .depend
# CFLAGS+= -DDEBUG
# LDFLAGS+= -L/usr/local/lib
# LDADD+= -lefence
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+#.include "../Makefile.inc"
+# .include "bsd.prog.mk"
+
+all: sigcomp
+
+sigcomp:
+ $(CC) $(CFLAGS) $(LDADD) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm sigcomp
+
Dateien tahi-linux-3.0.12/bin/sigcomp/sigcomp und tahi-linux-3.0.12-linux/bin/sigcomp/sigcomp sind verschieden.
diff -urN tahi-linux-3.0.12/bin/sigcomp/sigcomp.c tahi-linux-3.0.12-linux/bin/sigcomp/sigcomp.c
--- tahi-linux-3.0.12/bin/sigcomp/sigcomp.c 2005-05-27 13:40:19.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/sigcomp/sigcomp.c 2007-12-10 20:22:20.000000000 +0100
@@ -54,6 +54,7 @@
#include <openssl/err.h>
#include <openssl/evp.h>
+#include <openssl/rsa.h>
@@ -782,11 +783,12 @@
break;
}
- if(rsa && !strcmp(algorithm, "mdc2")) {
+/* Standard openssl is build withouht EVP_mdc2 option :-( */
+/* if(rsa && !strcmp(algorithm, "mdc2")) {
evp_md = EVP_mdc2();
break;
}
-
+*/
if(rsa && !strcmp(algorithm, "ripemd160")) {
evp_md = EVP_ripemd160();
break;
diff -urN tahi-linux-3.0.12/bin/x509dec/Makefile tahi-linux-3.0.12-linux/bin/x509dec/Makefile
--- tahi-linux-3.0.12/bin/x509dec/Makefile 2006-08-31 03:57:55.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/x509dec/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,6 +1,5 @@
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-# Yokogawa Electric Corporation,
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
@@ -40,20 +39,26 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
-# $TAHI: v6eval/bin/x509dec/Makefile,v 1.3 2006/08/31 01:57:55 akisada Exp $
+# $TAHI: v6eval/bin/x509dec/Makefile,v 1.2 2005/05/09 09:35:23 akisada Exp $
#
########################################################################
-PROG= x509dec
-SRCS= x509dec.c
+PROG= x509dec
+SRCS= x509dec.c
CFLAGS+= -Wall -g
-LDADD+= -lcrypto
+LDADD+= -lcrypto
NOMAN=
NO_MAN=
-CLEANFILES+= .depend
# LDFLAGS+= -L/usr/local/lib
-# LDADD+= -lefence
+# LDADD+= -lefence
-.include "../Makefile.inc"
-.include "bsd.prog.mk"
+# .include "../Makefile.inc"
+# .include "bsd.prog.mk"
+all: x509dec
+
+x509dec:
+ $(CC) $(CFLAGS) $(LDADD) $(SRCS) -o $(PROG) -pipe -g -Wall -Woverloaded-virtual -fno-strict-aliasing
+
+clean:
+ - rm x509dec
Dateien tahi-linux-3.0.12/bin/x509dec/x509dec und tahi-linux-3.0.12-linux/bin/x509dec/x509dec sind verschieden.
diff -urN tahi-linux-3.0.12/bin/x509dec/x509dec.c tahi-linux-3.0.12-linux/bin/x509dec/x509dec.c
--- tahi-linux-3.0.12/bin/x509dec/x509dec.c 2005-05-30 12:17:31.000000000 +0200
+++ tahi-linux-3.0.12-linux/bin/x509dec/x509dec.c 2007-12-10 20:17:24.000000000 +0100
@@ -245,15 +245,12 @@
TAILQ_INIT(&head);
- if(!((unsigned char *)pubkey =
- X509dec_get_pubkey(x509, &pubkeylen))) {
-
+ if(!(pubkey = X509dec_get_pubkey(x509, &pubkeylen))) {
return(x509dec_on_evp_return(false, pubkey, subject_name));
}
-
- if(!((unsigned char *)subject_name =
- X509dec_get_subject_name(x509, (int *)&subject_namelen))) {
-
+
+ if(!(subject_name = X509dec_get_subject_name(x509, (int *)&subject_namelen)
+)) {
return(x509dec_on_evp_return(false, pubkey, subject_name));
}
@@ -508,7 +505,7 @@
return(NULL);
}
- strlcpy(name->name_buf, extension->d.ia5->data, name->name_len);
+ strncpy(name->name_buf, extension->d.ia5->data, name->name_len);
name->name_type = extension->type;
TAILQ_INSERT_TAIL(head, name, names);
diff -urN tahi-linux-3.0.12/CHANGELOG.v6eval tahi-linux-3.0.12-linux/CHANGELOG.v6eval
--- tahi-linux-3.0.12/CHANGELOG.v6eval 2007-05-25 04:12:20.000000000 +0200
+++ tahi-linux-3.0.12-linux/CHANGELOG.v6eval 2007-12-09 23:20:00.000000000 +0100
@@ -5,6 +5,8 @@
$Date: 2007/05/25 02:12:20 $
+2004/01/07 by Kazuo Hiekata<hiekata@yamato.ibm.com>
+ (Experimental) Support RedHat 9 and UnitedLinux 1.0 as TN
2007/05/25 Release 3.0.12
diff -urN tahi-linux-3.0.12/INSTALL.linux tahi-linux-3.0.12-linux/INSTALL.linux
--- tahi-linux-3.0.12/INSTALL.linux 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/INSTALL.linux 2007-12-15 11:50:24.000000000 +0100
@@ -0,0 +1,192 @@
+# Copyright (C) IBM Corporation 2004.
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+# INTAP(Interoperability Technology Association for Information
+# Processing, Japan) , IPA (Information-technology Promotion Agency,Japan)
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Author: Kazuo Hiekata <hiekata@yamato.ibm.com>
+# Contrib: Patrick Kirsch <pkirsch@suse.de>
+#
+
+
+Installing the package onto TN (the case of RedHat 9/UnitedLinux 1.0)
+================================================================
+
+0. Install RedHat 9 or UnitedLinux 1.0
+
+1. Extracting the package
+
+ % cd $SOMEWHERE
+ % tar zxvf v6eval-X.X.tar.gz
+
+2. Installing perl-related modules
+
+ The package requires the below-listed perl5 modules.
+
+ - Expect v1.15
+ - IO-Tty v1.02
+
+ These packages are available on the web.
+ http://sourceforge.net/project/showfiles.php?group_id=6894
+
+ $ tar zxvf IO-Tty-1.02.tar.gz
+ $ cd IO-Tty-1.02
+ $ perl Makefile.PL
+ $ make
+ $ make test
+ # make install
+
+ $ tar zxvf Expect-1.15.tar.gz
+ $ cd Expect-1.15
+ $ perl Makefile.PL
+ $ make
+ $ make test
+ # make install
+
+2.1 Installing needed devel-packages:
+ openssl-devel (with yast -i openssl-devel)
+
+2.2 Patching the file /usr/include/pcap-bfp.h with the included file pcap-bfp.h from
+ the local directory.
+
+2.3 Chmod 0777 /var/lock, to change owner, the program cu since cannot create the needed lock file und will abort
+
+3. Checking the environment
+
+ Make sure that "libpcap" and "tcpdump" are already
+ installed on your TN.
+ These packages are available on the Install CD-ROM.
+ And "pmake" is also needed and is available only on RedHat 9 CD-ROM.
+ If you're using UnitedLinux 1.0, get RedHat 9 CD-ROM and pick up
+ pmake package from it.
+ Hint: In SUSE-Linux there is no 'pmake'.
+
+ To compile TAHI, perl5 and lorder are needed but Linux doesn't
+ have those.
+
+ i. perl5
+ Just create a symbolic link to /usr/bin/perl
+
+ # ln -s /usr/bin/perl /usr/bin/perl5
+ ii. lorder
+ This package contains "lorder" only for TAHI compilation on Linux.
+
+ # cd $SOMEWHERE/v6eval-X.X
+ # cp lorder /usr/bin/lorder
+
+
+4. Compiling & installing the tool
+
+ Install the Tool in /usr/local/v6eval directory.
+
+ % cd $SOMEWHERE/v6eval-X.X
+ % pmake
+ # pmake install
+ For SUSE # make all ; make install
+
+
+4. Configure serial line
+
+ Make sure that "uucp" is installed on your system
+ And change the permission of the serial line device.
+
+ # chmod 777 /dev/ttyS0
+
+5. Interface configuration
+
+ At least, one interface used in testing, must be 'up' status.
+
+
+6. Back to the "Configuration of TN" section in INSTALL.v6eval.
+
+
+ * As for ct installation, pmake must be used anywhere instead of make.
+ Be careful when reading INSTALL.ct.
+
+ % su -
+ # cd ct-X.X
+ # pmake install
+
+ * "(iii) Customizing tn.def" in INSTALL.v6eval refer to "filter ipv6",
+ but Linux TAHI doesn't support this feature.
+
+7. Some Hint:
+ Some parameters e.g. Booting time for the NUT are in the BSD version _very optmistic_
+ so it can be that you should change some timing behaviour (Well, if your Linux boots in
+ 10s then you are fine).
+ Currently this TAHI-Linux port does only successfull run with i386 architecture.
+
+
+ [end of INSTALL.linux]
diff -urN tahi-linux-3.0.12/lib/Cm/BtObject.cc tahi-linux-3.0.12-linux/lib/Cm/BtObject.cc
--- tahi-linux-3.0.12/lib/Cm/BtObject.cc 2001-10-12 06:56:13.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Cm/BtObject.cc 2007-12-09 23:19:55.000000000 +0100
@@ -48,6 +48,6 @@
BtObject::BtObject(const BtObject&) {}
BtObject::~BtObject() {}
uint32_t BtObject::hash() const {return 0;}
-int BtObject::compare(const BtObject*p) const {return (int)this-(int)p;}
+long BtObject::compare(const BtObject*p) const {return (long)this-(long)p;}
bool BtObject::isEqual(const BtObject* v) const {
return compare(v)==0;}
diff -urN tahi-linux-3.0.12/lib/Cm/BtObject.h tahi-linux-3.0.12-linux/lib/Cm/BtObject.h
--- tahi-linux-3.0.12/lib/Cm/BtObject.h 2001-10-12 06:56:13.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Cm/BtObject.h 2007-12-09 23:19:55.000000000 +0100
@@ -50,7 +50,7 @@
BtObject(const BtObject&);
virtual ~BtObject();
virtual uint32_t hash() const;
-virtual int compare(const BtObject* p) const;
+virtual long compare(const BtObject* p) const;
bool isEqual(const BtObject* p) const;
bool operator<(const BtObject& r) const;
bool operator<=(const BtObject& r) const;
Dateien tahi-linux-3.0.12/lib/Cm/Cm und tahi-linux-3.0.12-linux/lib/Cm/Cm sind verschieden.
diff -urN tahi-linux-3.0.12/lib/Cm/CmSocket.cc tahi-linux-3.0.12-linux/lib/Cm/CmSocket.cc
--- tahi-linux-3.0.12/lib/Cm/CmSocket.cc 2001-10-29 02:41:33.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/Cm/CmSocket.cc 2007-12-09 23:19:55.000000000 +0100
@@ -407,6 +407,7 @@
if(rc<0) {sysError("sendto");}
return rc;}
int CmDgram::recvfrom(STR s,int l,CmSockAddr* from) {
+printf("DEBUG: recvfrom \n");
char buf[BUFSIZ];
socklen_t len=BUFSIZ;
sock* p=(sock*)buf;
diff -urN tahi-linux-3.0.12/lib/Cm/CmSocket.h tahi-linux-3.0.12-linux/lib/Cm/CmSocket.h
--- tahi-linux-3.0.12/lib/Cm/CmSocket.h 2003-10-23 06:37:30.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Cm/CmSocket.h 2007-12-09 23:19:55.000000000 +0100
@@ -55,6 +55,7 @@
#include "CmTypes.h"
#if !defined(__KAME__)
+#if !defined(__linux__)
struct in6_addr {
union {
uint8_t u6_addr8[16];
@@ -69,9 +70,14 @@
uint32_t sin6_scope_id; /* intface scope id */
};
#define s6_addr u6_addr.u6_addr8
+#endif
#define getipnodebyname(a,b,c,d)0
#endif
+#if defined(__linux__)
+#define SO_REUSEPORT 15
+#endif
+
#ifndef IN6_IS_ADDR_LINKLOCAL
#define IN6_IS_ADDR_LINKLOCAL(a)\
(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
diff -urN tahi-linux-3.0.12/lib/Cm/CmTypes.h tahi-linux-3.0.12-linux/lib/Cm/CmTypes.h
--- tahi-linux-3.0.12/lib/Cm/CmTypes.h 2001-10-12 06:56:14.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Cm/CmTypes.h 2007-12-09 23:19:55.000000000 +0100
@@ -49,16 +49,18 @@
#include <ctype.h>
typedef char *STR;
typedef const char *CSTR;
-#if defined(__FreeBSD__) || defined(__bsdi__)
+#if defined(__FreeBSD__) || defined(__bsdi__) || defined(__linux__)
typedef u_int8_t uint8_t;
typedef u_int16_t uint16_t;
typedef u_int32_t uint32_t;
typedef u_int64_t uint64_t;
#endif
#if (__FreeBSD__ <= 3) || defined(__bsdi__) || defined(__hpux)
+#if !defined(__linux__)
typedef int socklen_t;
#endif
-#if defined(__hpux)
+#endif
+#if defined(__hpux) || defined(__linux__)
#define SETPGRP(a,b)setpgrp()
#else
#define SETPGRP(a,b)setpgrp(a,b)
diff -urN tahi-linux-3.0.12/lib/Cm/Makefile tahi-linux-3.0.12-linux/lib/Cm/Makefile
--- tahi-linux-3.0.12/lib/Cm/Makefile 2006-08-31 03:57:56.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Cm/Makefile 2007-12-09 23:19:55.000000000 +0100
@@ -1,12 +1,24 @@
-LIB= Cm
-SRCS= CmTypes.cc \
+CC=g++
+LIB = Cm
+SRCS = \
+ CmTypes.cc \
BtObject.cc BtArray.cc BtList.cc BtSet.cc \
CmQueue.cc CmAgent.cc CmMain.cc CmSocket.cc \
CmFdSet.cc CmFdMasks.cc CmString.cc PerfCollect.cc \
Timer.cc CmDispatch.cc CmReceiver.cc timeval.cc \
CmToken.cc CmMatch.cc CmLexer.cc
-CXXFLAGS+= -I.
-CLEANFILES+= .depend
+CXXFLAGS+= -I.
+
+MKLINT=no
+# .include "bsd.lib.mk"
+all: Cm
+
+Cm:
+ $(CC) $(SRCS) -pipe -g -fno-strict-aliasing -DYYDEBUG -Wall -Woverloaded-virtual -shared -fPIC -o $(LIB)
+ cp -v Cm /usr/lib/libCm.so
+
+clean:
+ - rm Cm
+ - rm /usr/lib/libCm.so
-.include "bsd.lib.mk"
diff -urN tahi-linux-3.0.12/lib/Makefile tahi-linux-3.0.12-linux/lib/Makefile
--- tahi-linux-3.0.12/lib/Makefile 2000-04-26 06:11:12.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Makefile 2007-12-09 23:19:59.000000000 +0100
@@ -1,3 +1,11 @@
-SUBDIR=Cm Pz pkt
-.MAIN: depend all
-.include <bsd.subdir.mk>
+#SUBDIR=Cm Pz pkt
+# .MAIN: depend all
+# .include <bsd.subdir.mk>
+all:
+ cd Pz; make all; cd ..
+ cd Cm; make all; cd ..
+ cd pkt; make all; cd ..
+clean:
+ cd Pz; make clean; cd ..
+ cd Cm; make clean; cd ..
+ cd pkt; make clean; cd ..
Dateien tahi-linux-3.0.12/lib/pkt/a.out und tahi-linux-3.0.12-linux/lib/pkt/a.out sind verschieden.
diff -urN tahi-linux-3.0.12/lib/pkt/BpfAgent.cc tahi-linux-3.0.12-linux/lib/pkt/BpfAgent.cc
--- tahi-linux-3.0.12/lib/pkt/BpfAgent.cc 2005-07-21 04:42:52.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/BpfAgent.cc 2007-12-09 23:19:59.000000000 +0100
@@ -47,7 +47,8 @@
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
#include <stdlib.h>
#include <string.h>
#include "debug.h"
@@ -212,7 +213,7 @@
return rc;}
void BpfAgent::clear() {
-#if 1
+#if ! defined(__linux__)
/*
In rare case, clear() function is called before filterd out
all sent packets. So need to wait all sent packets filtered
diff -urN tahi-linux-3.0.12/lib/pkt/Bpfilter.cc tahi-linux-3.0.12-linux/lib/pkt/Bpfilter.cc
--- tahi-linux-3.0.12/lib/pkt/Bpfilter.cc 2005-07-21 03:53:22.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/Bpfilter.cc 2007-12-09 23:19:59.000000000 +0100
@@ -51,13 +51,28 @@
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/time.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
#include <net/if.h>
#include <sys/types.h>
#include "debug.h"
+#if defined(__linux__)
+#include <features.h> /* for the glibc version number */
+#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
+#include <netpacket/packet.h>
+#include <net/ethernet.h> /* the L2 protocols */
+#else
+#include <asm/types.h>
+#include <linux/if_packet.h>
+#include <linux/if_ether.h> /* The L2 protocols */
+#endif
+#include <netinet/in.h>
+#endif
+
Bpfilter::Bpfilter(CSTR n):fd_(-1),bufsize_(0) {
+#if !defined(__linux__)
int i, fd=-1;
char dev[32];
struct ifreq ifr;
@@ -95,50 +110,119 @@
::close(fd);
return;}
fd_=fd;}
+#else
+ int i, fd=-1;
+ char dev[32];
+ struct sockaddr_ll sll;
+
+ fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+ if(fd<0) {
+ perror("err:open");
+ return;}
+ memset(&sll, 0xff, sizeof(sll));
+ sll.sll_family = AF_PACKET;
+ sll.sll_protocol = htons(ETH_P_ALL);
+ ifindex_ = if_nametoindex(n);
+ if(ifindex_<0) {
+ perror("err:if_nametoindex()");
+ return;}
+ sll.sll_ifindex = ifindex_;
+ int rc = bind(fd, (struct sockaddr *)&sll, sizeof(sll));
+ if(rc<0) {
+ perror("err:bind");
+ return;}
+ bufsize_=BPF_MAXBUFSIZE;
+ fd_=fd;}
+#endif
int Bpfilter::setfilter(struct bpf_program *filter) const {
+#if !defined(__linux__)
int fd=fileDesc();
if(fd<0) return -1;
int rc = ioctl(fd,BIOCSETF,filter);
if(rc<0){perror("err:ioctl(BIOCSETF)");}
return rc;
}
+#else
+ /* xxx: For Linux, "filter ipv6" in tn.def is NOT supported */
+ return 0;
+ }
+#endif
+
int Bpfilter::promiscuous() const {
int fd=fileDesc();
if(fd<0) return -1;
+#if !defined(__linux__)
int rc=ioctl(fd,BIOCPROMISC,NULL);
if(rc<0) {perror("err:ioctl(BIOCPROMISC)");}
- return rc;}
+ return rc;}
+#else
+ struct ifreq ifr;
+ int rc=ioctl(fd,SIOCGIFFLAGS,&ifr);
+ if(rc<0) {perror("err:ioctl(SIOCGIFFLAGS)");}
+ ifr.ifr_flags = ifr.ifr_flags | IFF_PROMISC;
+ rc=ioctl(fd,SIOCSIFFLAGS,&ifr);
+ if(rc<0) {perror("err:ioctl(SIOCSIFFLAGS)");}
+ return 0;}
+#endif
int Bpfilter::flush() const {
int fd=fileDesc();
if(fd<0) return -1;
+#if !defined(__linux__)
int rc=ioctl(fd,BIOCFLUSH,NULL);
if(rc<0) {perror("err:ioctl(BIOCFLUSH)");}
return rc;}
+#else
+ unsigned char buf[2048];
+ int i=0;
+ do {
+ fd_set fds;
+ struct timeval t;
+ FD_ZERO(&fds);
+ FD_SET(fd, &fds);
+ memset(&t, 0, sizeof(t));
+ i = select(FD_SETSIZE, &fds, NULL, NULL, &t);
+ if (i > 0)
+ recv(fd, buf, i, 0);
+ } while (i);
+ return 0;}
+#endif
+
int Bpfilter::immediate(uint32_t n) const {
+#if !defined(__linux__)
int fd=fileDesc();
if(fd<0) return -1;
int rc=ioctl(fd,BIOCIMMEDIATE,&n);
if(rc<0) {perror("err:ioctl(BIOCIMMEDIATE)");}
return rc;}
+#else
+ /* xxx: For Linux, tahi works only in immediate=true mode */
+ return 0;}
+#endif
int Bpfilter::statistics(uint32_t& recv,uint32_t& drop) const {
struct bpf_stat stat;
int fd=fileDesc();
recv=0; drop=0;
if(fd<0) return -1;
+#if !defined(__linux__)
int rc=ioctl(fd,BIOCGSTATS,(caddr_t)&stat);
if(rc<0) {perror("err:ioctl(BIOCGSTATS)");}
else {recv=stat.bs_recv; drop=stat.bs_drop;}
return rc;}
-
+#else
+ /* xxx: Linux cannot get per-socket statistics */
+ return 0;}
+#endif
+
int Bpfilter::receive(caddr_t p) const {
int fd=fileDesc();
if(fd<0) return -1;
uint32_t l=bufferSize();
+#if !defined(__linux__)
#ifdef VCLEAR_DBG
xdbg("/tmp/vclear_dbg.txt", "Bpfilter", "l: %d\n", l);
#endif // VCLEAR_DBG
@@ -148,7 +232,20 @@
#endif // VCLEAR_DBG
if(rc<0) {perror("err:read");}
return rc;}
-
+#else
+#define SIZEOF_BPF_HDR 18
+ int rc =recv(fd, (p+SIZEOF_BPF_HDR), (l-SIZEOF_BPF_HDR), 0);
+ gettimeofday( &((struct bpf_hdr *)p)->bh_tstamp, 0) ;
+ ((struct bpf_hdr *)p)->bh_caplen = rc;
+ ((struct bpf_hdr *)p)->bh_datalen =rc + SIZEOF_BPF_HDR;
+ ((struct bpf_hdr *)p)->bh_hdrlen = SIZEOF_BPF_HDR;
+ if(rc<0) {
+ perror("err:recv");
+ return rc;}
+ return (rc+SIZEOF_BPF_HDR);}
+ #undef SIZEOF_BPF_HDR
+ #endif
+
int
Bpfilter::nonblock_receive(caddr_t p) const
{
@@ -208,7 +305,16 @@
#ifdef VCLEAR_DBG
xdbg("/tmp/vclear_dbg.txt", "Bpfilter", "l: %d\n", l);
#endif // VCLEAR_DBG
+
+#if !defined(__linux__)
int rc=::write(fd,p,l);
+#else
+ struct sockaddr_ll sll;
+ memset(&sll, 0, sizeof(sll));
+ sll.sll_ifindex = ifindex_;
+ int rc = sendto(fd, p, l, 0, (struct sockaddr *)&sll, sizeof(sll));
+#endif
+
#ifdef VCLEAR_DBG
xdbg("/tmp/vclear_dbg.txt", "Bpfilter", "l: %d, rc: %d\n", l, rc);
#endif // VCLEAR_DBG
@@ -218,8 +324,13 @@
uint32_t Bpfilter::getDLT() const {
int fd=fileDesc();
if(fd<0) return 0xffff; /* xxx */
+#if !defined(__linux__)
uint32_t dlt;
int rc=ioctl(fd,BIOCGDLT,&dlt);
if(rc<0) {perror("err:ioctl(BIOCGSTATS)");}
return dlt;}
+#else
+ /* Linux assumes ethernet */
+ return DLT_EN10MB;}
+#endif
diff -urN tahi-linux-3.0.12/lib/pkt/Bpfilter.h tahi-linux-3.0.12-linux/lib/pkt/Bpfilter.h
--- tahi-linux-3.0.12/lib/pkt/Bpfilter.h 2005-07-21 03:53:22.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/Bpfilter.h 2007-12-09 23:19:59.000000000 +0100
@@ -46,12 +46,16 @@
#define __Bpfilter_h__ 1
#include <sys/types.h>
#include <sys/time.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
#include "CmString.h"
struct Bpfilter {
private:
int fd_;
uint32_t bufsize_;
+#if defined(__linux__)
+ int ifindex_;
+#endif
public:
Bpfilter(CSTR);
int fileDesc() const;
@@ -64,7 +68,8 @@
int receive(caddr_t) const;
int nonblock_receive(caddr_t) const;
int send(caddr_t,uint32_t) const;
- uint32_t Bpfilter::getDLT() const;
+// uint32_t Bpfilter::getDLT() const;
+ uint32_t getDLT() const;
};
inline int Bpfilter::fileDesc() const {return fd_;}
inline uint32_t Bpfilter::bufferSize() const {return bufsize_;}
diff -urN tahi-linux-3.0.12/lib/pkt/LxLexer.cc tahi-linux-3.0.12-linux/lib/pkt/LxLexer.cc
--- tahi-linux-3.0.12/lib/pkt/LxLexer.cc 2007-03-07 06:05:39.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/pkt/LxLexer.cc 2007-12-09 23:19:59.000000000 +0100
@@ -62,6 +62,13 @@
#include "MfAlgorithm.h"
#include "CmMain.h"
#include <time.h>
+
+/* Enabling traces.
+int yydebug = 0;
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+*/
extern PObject* yylval;
STR LxLexer::controls(STR s) {
DBGFLAGS(0)=yydebug;
@@ -285,7 +292,9 @@
function(new MfDESCBC("descbc",8,8,8));
function(new MfDESCBC_2("descbc_2", 8, 8, 8)); // binary args
function(new MfBLOWFISH("blowfish",8,8,8));
+#if ! defined(__linux__)
function(new MfRC5("rc5",8,8,8));
+#endif
function(new MfCAST128("cast128",8,8,8));
function(new MfDES3CBC("des3cbc",8*3,8,8));
function(new MfDES3CBC_2("des3cbc_2", 8 * 3, 8, 8)); // binary args
diff -urN tahi-linux-3.0.12/lib/pkt/Makefile tahi-linux-3.0.12-linux/lib/pkt/Makefile
--- tahi-linux-3.0.12/lib/pkt/Makefile 2006-08-31 03:57:56.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/Makefile 2007-12-09 23:19:58.000000000 +0100
@@ -1,14 +1,32 @@
-LIB= Pkt
-YSRCS= PzParse.y
-SRCS= $(YSRCS:.y=.cc) LxToken.cc LxLexer.cc RAFControl.cc \
+CC=g++
+LIB = Pkt
+Cm=../Cm/
+Pz=../Pz/
+YSRCS= PzParse.y
+SRCS= \
+ PzParse.cc LxToken.cc LxLexer.cc RAFControl.cc \
PktAgent.cc PktRecv.cc PktClient.cc PktServer.cc StdAgent.cc \
BpfAgent.cc Bpfilter.cc Ringbuf.cc RunEnv.cc PktCtlClient.cc \
PktSndClient.cc PktRcvClient.cc PktBuf.cc PktQueue.cc bufStat.cc
-CXXFLAGS+= -I. -I$(Cm) -I$(Pz) -DHAVE_BPF_HDRCMPLT -I/usr/include
-# CXXFLAGS+= -DVCLEAR_DBG
+CXXFLAGS+= -I. -I$(Cm) -I$(Pz) -DHAVE_BPF_HDRCMPLT -I/usr/include -shared -fPIC -fno-strict-aliasing -pipe -g -DYYDEBUG -Woverloaded-virtual
-CLEANFILES+= PzParse.h
-CLEANFILES+= .depend
+CLEANFILES+=PzParse.h
+
+MKLINT=no
+# .include "bsd.lib.mk"
+
+all: Pkt
+
+Pkt:
+ # yacc -dv PzParse.y
+ # mv y.tab.c PzParse.cc
+ # if cmp -s y.tab.h PzParse.h; then rm y.tab.h; else mv y.tab.h PzParse.h; fi
+ # if test -f y.output ; then mv y.output PzParse.rule ; fi
+ $(CC) $(CXXFLAGS) $(SRCS) -o $(LIB)
+ cp -v Pkt /usr/lib/libPkt.so
+
+clean:
+ - rm Pkt
+ - rm /usr/lib/libPkt.so
-.include "bsd.lib.mk"
Dateien tahi-linux-3.0.12/lib/pkt/Pkt und tahi-linux-3.0.12-linux/lib/pkt/Pkt sind verschieden.
diff -urN tahi-linux-3.0.12/lib/pkt/PktAgent.cc tahi-linux-3.0.12-linux/lib/pkt/PktAgent.cc
--- tahi-linux-3.0.12/lib/pkt/PktAgent.cc 2005-07-21 03:53:22.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktAgent.cc 2007-12-09 23:19:59.000000000 +0100
@@ -93,9 +93,10 @@
xdbg("/tmp/vclear_dbg.txt", "PktAgent", "this: %p\n", this);
#endif // VCLEAR_DBG
h.length(l);
- if(DBGFLAGS('o')) {
+// if(DBGFLAGS('o')) {
uint16_t r=h.request()&0xffff;
- printf("PktAgent::sendPacket request=%4.4x len=%d\n",r,l);}
+ printf("PktAgent::sendPacket request=%4.4x len=%d this %x \n",r,l,(CSTR)&h);
+// }
int rc=send((CSTR)&h,sizeof(h));
if(rc>=0 && l>0) {rc=send(s,l);}
return rc;}
diff -urN tahi-linux-3.0.12/lib/pkt/PktClient.cc tahi-linux-3.0.12-linux/lib/pkt/PktClient.cc
--- tahi-linux-3.0.12/lib/pkt/PktClient.cc 2003-10-23 06:37:31.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktClient.cc 2007-12-09 23:19:58.000000000 +0100
@@ -58,6 +58,7 @@
return rc;}
int PktClient::sendPacket(tcpHead& h,int32_t l,CSTR s) {
+printf("DEBUG: sendPacket %x, %s \n",l,s);
int rc=PktReceiver::sendPacket(h,l,s);
if(rc<0) {
fprintf(stderr,"err: cannot send req=%d len=%d\n",
diff -urN tahi-linux-3.0.12/lib/pkt/PktCtlClient.cc tahi-linux-3.0.12-linux/lib/pkt/PktCtlClient.cc
--- tahi-linux-3.0.12/lib/pkt/PktCtlClient.cc 2003-04-17 04:22:20.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktCtlClient.cc 2007-12-09 23:19:59.000000000 +0100
@@ -55,7 +55,8 @@
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
PktCtlClient::PktCtlClient(StringList pos):PktClient(),
command_(pos),parsed_(0) {}
diff -urN tahi-linux-3.0.12/lib/pkt/PktRcvClient.cc tahi-linux-3.0.12-linux/lib/pkt/PktRcvClient.cc
--- tahi-linux-3.0.12/lib/pkt/PktRcvClient.cc 2003-04-17 04:22:20.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktRcvClient.cc 2007-12-09 23:19:59.000000000 +0100
@@ -54,7 +54,8 @@
#include "PAlgorithm.h"
#include "RAFControl.h"
#include <stdio.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
PktRcvClient::PktRcvClient(const McObject* m,AlgorithmFrames& l):PktClient(),
reverser_(m),candidates_(l),evalc(1) {}
diff -urN tahi-linux-3.0.12/lib/pkt/PktRecv.cc tahi-linux-3.0.12-linux/lib/pkt/PktRecv.cc
--- tahi-linux-3.0.12/lib/pkt/PktRecv.cc 2005-07-21 03:53:22.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktRecv.cc 2007-12-09 23:19:58.000000000 +0100
@@ -80,6 +80,7 @@
tcpHead h=header();
h.request(h.request()|eResponse_);
h.result(r);
+printf("DEBUG: PktRecv.cc 0x%x \n",s);
return sendPacket(h,l,s)>=0?0:-1;}
//======================================================================
@@ -125,13 +126,14 @@
eRequest r=(eRequest)request();
if(DBGFLAGS('i')) {
printf("PktReceiver::analizePacket request=%4.4x\n",r&0xffff);}
- if(DBGFLAGS('x')) {
+// if(DBGFLAGS('x')) {
printf("PktReceiver::analizePacket\n");
printf(" request=%4.4x length=%d, result=%d\n",
r&0xffff,header().length(),header().result());
PvOctets body(header().length(),(OCTSTR)buffer(0));
body.print();
- printf("\n");}
+ printf("\n");
+//}
if(r&eResponse_) {rc=analizeConfirmation(r&eMask_);}
else {rc=analizeRequest(r);}
return rc;}
diff -urN tahi-linux-3.0.12/lib/pkt/PktServer.cc tahi-linux-3.0.12-linux/lib/pkt/PktServer.cc
--- tahi-linux-3.0.12/lib/pkt/PktServer.cc 2005-07-21 03:53:22.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PktServer.cc 2007-12-09 23:19:59.000000000 +0100
@@ -48,7 +48,8 @@
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
#include <unistd.h>
#include "CmDispatch.h"
#include "CmMain.h"
diff -urN tahi-linux-3.0.12/lib/pkt/PzParse.cc tahi-linux-3.0.12-linux/lib/pkt/PzParse.cc
--- tahi-linux-3.0.12/lib/pkt/PzParse.cc 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/pkt/PzParse.cc 2007-12-09 23:19:59.000000000 +0100
@@ -0,0 +1,2450 @@
+/* A Bison parser, made by GNU Bison 2.1. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ NAME = 258,
+ STRING = 259,
+ NUMBER = 260,
+ ADD = 261,
+ SUB = 262,
+ MUL = 263,
+ AND = 264,
+ OR = 265,
+ XOR = 266,
+ QUEST = 267,
+ COLON = 268,
+ NOT = 269,
+ INC = 270,
+ DEC = 271,
+ ASOP = 272,
+ RELOP = 273,
+ EQUOP = 274,
+ DIVOP = 275,
+ SHIFTL = 276,
+ SHIFTR = 277,
+ ANDAND = 278,
+ XORXOR = 279,
+ OROR = 280,
+ FUNCTION = 281,
+ GENFUNC = 282,
+ PADFUNC = 283,
+ AUTHFUNC = 284,
+ CRYPTFUNC = 285,
+ IKE_CRYPTFUNC = 286,
+ BSAFUNC = 287,
+ IKE_P2_HASHFUNC = 288,
+ DHCPAUTHFUNC = 289,
+ FRAME = 290,
+ PACKET = 291,
+ HEADER = 292,
+ UPPER = 293,
+ ISAKMP_UPPER = 294,
+ OPTION = 295,
+ PAYLOAD = 296,
+ DNSHDR = 297,
+ PACKET_REF = 298,
+ HEADER_REF = 299,
+ EXTENT_REF = 300,
+ UPPER_REF = 301,
+ OPTION_REF = 302,
+ ISAKMP_ENCRYPTION_REF = 303,
+ PAYLOAD_REF = 304,
+ DNSQD_REF = 305,
+ DNSAN_REF = 306,
+ DNSNS_REF = 307,
+ DNSAR_REF = 308,
+ ALGORITHM = 309,
+ ALGOMEM_PAD = 310,
+ ALGOMEM_CRYPT = 311,
+ ALGOMEM_AUTH = 312,
+ ALGOFUNC = 313,
+ ALGORITHM_REF = 314,
+ MEMBER = 315,
+ DATA = 316,
+ PAD = 317,
+ OCTETS = 318,
+ ANY = 319,
+ AUTO = 320,
+ ZERO = 321,
+ FILL = 322,
+ STOP = 323,
+ BOOL = 324,
+ VOID = 325,
+ V4ADDR = 326,
+ V6ADDR = 327,
+ ETHER = 328,
+ DUMMY = 329,
+ LP = 330,
+ RP = 331,
+ LC = 332,
+ RC = 333,
+ LB = 334,
+ RB = 335,
+ CM = 336,
+ SM = 337,
+ EQ = 338,
+ NE = 339,
+ LT = 340,
+ GT = 341,
+ LE = 342,
+ GE = 343,
+ SH = 344,
+ SQ = 345
+ };
+#endif
+/* Tokens. */
+#define NAME 258
+#define STRING 259
+#define NUMBER 260
+#define ADD 261
+#define SUB 262
+#define MUL 263
+#define AND 264
+#define OR 265
+#define XOR 266
+#define QUEST 267
+#define COLON 268
+#define NOT 269
+#define INC 270
+#define DEC 271
+#define ASOP 272
+#define RELOP 273
+#define EQUOP 274
+#define DIVOP 275
+#define SHIFTL 276
+#define SHIFTR 277
+#define ANDAND 278
+#define XORXOR 279
+#define OROR 280
+#define FUNCTION 281
+#define GENFUNC 282
+#define PADFUNC 283
+#define AUTHFUNC 284
+#define CRYPTFUNC 285
+#define IKE_CRYPTFUNC 286
+#define BSAFUNC 287
+#define IKE_P2_HASHFUNC 288
+#define DHCPAUTHFUNC 289
+#define FRAME 290
+#define PACKET 291
+#define HEADER 292
+#define UPPER 293
+#define ISAKMP_UPPER 294
+#define OPTION 295
+#define PAYLOAD 296
+#define DNSHDR 297
+#define PACKET_REF 298
+#define HEADER_REF 299
+#define EXTENT_REF 300
+#define UPPER_REF 301
+#define OPTION_REF 302
+#define ISAKMP_ENCRYPTION_REF 303
+#define PAYLOAD_REF 304
+#define DNSQD_REF 305
+#define DNSAN_REF 306
+#define DNSNS_REF 307
+#define DNSAR_REF 308
+#define ALGORITHM 309
+#define ALGOMEM_PAD 310
+#define ALGOMEM_CRYPT 311
+#define ALGOMEM_AUTH 312
+#define ALGOFUNC 313
+#define ALGORITHM_REF 314
+#define MEMBER 315
+#define DATA 316
+#define PAD 317
+#define OCTETS 318
+#define ANY 319
+#define AUTO 320
+#define ZERO 321
+#define FILL 322
+#define STOP 323
+#define BOOL 324
+#define VOID 325
+#define V4ADDR 326
+#define V6ADDR 327
+#define ETHER 328
+#define DUMMY 329
+#define LP 330
+#define RP 331
+#define LC 332
+#define RC 333
+#define LB 334
+#define RB 335
+#define CM 336
+#define SM 337
+#define EQ 338
+#define NE 339
+#define LT 340
+#define GT 341
+#define LE 342
+#define GE 343
+#define SH 344
+#define SQ 345
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 170 "PzParse.y"
+
+#include "CmTypes.h"
+#include "LxLexer.h"
+#include "PObject.h"
+#include "PcObject.h"
+#include "PvObject.h"
+#include "PvOctets.h"
+#include "McObject.h"
+#define YYSTYPE PObject*
+
+#if defined(__FreeBSD__) && __FreeBSD__ >= 4
+#define YYPARSE_PARAM lexer
+#define YYPARSE_PARAM_TYPE LxLexer&
+#define yyparse(lex)parse(lex)
+#else
+#if ! defined(__linux__)
+#define yyparse()parse(LxLexer& lexer)
+#else
+#define yyparse(void)parse(LxLexer& lexer)
+#endif
+#endif
+#define yylex()lexer.lex(compound_)
+#define yyerror lexer.yaccError
+
+static PObject* compound_=0;
+static PoQueue funcQue_;
+static PvFunction* function_=0;
+static PvNumbers* numbers_=0;
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 219 of yacc.c. */
+#line 306 "y.tab.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYINCLUDED_STDLIB_H
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+# endif
+# ifdef __cplusplus
+extern "C" {
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifdef __cplusplus
+}
+# endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short int yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined (__GNUC__) && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+#else
+ typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 41
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 193
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 91
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 100
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 159
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 274
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 345
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const unsigned char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const unsigned short int yyprhs[] =
+{
+ 0, 0, 3, 5, 6, 8, 10, 13, 15, 17,
+ 19, 21, 23, 25, 27, 29, 31, 35, 39, 42,
+ 46, 50, 54, 58, 62, 65, 69, 73, 76, 80,
+ 84, 88, 92, 96, 101, 105, 109, 111, 115, 119,
+ 121, 125, 129, 135, 136, 138, 140, 143, 144, 146,
+ 148, 151, 153, 156, 157, 159, 161, 164, 165, 167,
+ 168, 170, 171, 173, 174, 176, 177, 179, 180, 182,
+ 183, 185, 186, 188, 189, 191, 195, 199, 203, 207,
+ 211, 215, 219, 223, 227, 231, 235, 239, 243, 247,
+ 251, 256, 261, 266, 271, 276, 281, 286, 288, 290,
+ 292, 294, 296, 298, 300, 302, 304, 306, 308, 310,
+ 313, 316, 319, 322, 325, 328, 331, 333, 335, 337,
+ 341, 342, 344, 346, 350, 352, 354, 356, 358, 360,
+ 362, 363, 365, 367, 371, 374, 378, 381, 385, 388,
+ 392, 395, 399, 403, 406, 410, 413, 417, 420, 424,
+ 426, 428, 430, 432, 434, 436, 438, 440, 442, 444
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+ 92, 0, -1, 93, -1, -1, 94, -1, 95, -1,
+ 94, 95, -1, 96, -1, 99, -1, 102, -1, 120,
+ -1, 105, -1, 108, -1, 111, -1, 114, -1, 117,
+ -1, 97, 98, 78, -1, 35, 3, 77, -1, 140,
+ 133, -1, 100, 101, 78, -1, 36, 3, 77, -1,
+ 140, 123, 131, -1, 103, 104, 78, -1, 37, 3,
+ 77, -1, 125, 130, -1, 106, 107, 78, -1, 40,
+ 3, 77, -1, 125, 130, -1, 109, 110, 78, -1,
+ 38, 3, 77, -1, 132, 125, 130, -1, 112, 113,
+ 78, -1, 39, 3, 77, -1, 140, 134, 125, 130,
+ -1, 115, 116, 78, -1, 41, 3, 77, -1, 127,
+ -1, 118, 119, 78, -1, 54, 3, 77, -1, 128,
+ -1, 121, 122, 78, -1, 42, 3, 77, -1, 125,
+ 135, 136, 137, 138, -1, -1, 124, -1, 142, -1,
+ 124, 142, -1, -1, 126, -1, 150, -1, 126, 150,
+ -1, 149, -1, 127, 149, -1, -1, 129, -1, 151,
+ -1, 129, 151, -1, -1, 144, -1, -1, 143, -1,
+ -1, 140, -1, -1, 139, -1, -1, 141, -1, -1,
+ 145, -1, -1, 146, -1, -1, 147, -1, -1, 148,
+ -1, 43, 157, 82, -1, 44, 157, 82, -1, 48,
+ 157, 82, -1, 45, 157, 82, -1, 46, 159, 82,
+ -1, 49, 158, 82, -1, 50, 160, 82, -1, 51,
+ 160, 82, -1, 52, 160, 82, -1, 53, 160, 82,
+ -1, 61, 161, 82, -1, 60, 164, 82, -1, 61,
+ 161, 82, -1, 47, 160, 82, -1, 59, 157, 82,
+ -1, 60, 83, 176, 82, -1, 60, 83, 178, 82,
+ -1, 60, 83, 180, 82, -1, 55, 83, 181, 82,
+ -1, 56, 83, 183, 82, -1, 56, 83, 185, 82,
+ -1, 57, 83, 187, 82, -1, 5, -1, 5, -1,
+ 166, -1, 174, -1, 3, -1, 188, -1, 3, -1,
+ 188, -1, 174, -1, 5, -1, 188, -1, 174, -1,
+ 83, 3, -1, 83, 169, -1, 189, 154, -1, 189,
+ 155, -1, 189, 153, -1, 189, 156, -1, 190, 152,
+ -1, 162, -1, 163, -1, 77, -1, 165, 167, 78,
+ -1, -1, 168, -1, 5, -1, 168, 81, 5, -1,
+ 64, -1, 3, -1, 5, -1, 4, -1, 3, -1,
+ 174, -1, -1, 172, -1, 170, -1, 172, 81, 170,
+ -1, 26, 75, -1, 173, 171, 76, -1, 32, 75,
+ -1, 175, 171, 76, -1, 33, 75, -1, 177, 171,
+ 76, -1, 34, 75, -1, 179, 171, 76, -1, 28,
+ 75, 76, -1, 30, 75, -1, 182, 171, 76, -1,
+ 31, 75, -1, 184, 171, 76, -1, 29, 75, -1,
+ 186, 171, 76, -1, 64, -1, 65, -1, 66, -1,
+ 67, -1, 68, -1, 83, -1, 84, -1, 85, -1,
+ 86, -1, 87, -1, 88, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const unsigned short int yyrline[] =
+{
+ 0, 201, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 219, 220, 222, 224,
+ 225, 226, 228, 229, 230, 232, 233, 234, 236, 237,
+ 238, 240, 241, 242, 244, 245, 246, 248, 249, 250,
+ 252, 253, 254, 259, 260, 261, 262, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 279, 280, 281,
+ 282, 283, 284, 285, 286, 288, 289, 291, 292, 294,
+ 295, 297, 298, 300, 301, 307, 309, 311, 313, 315,
+ 319, 323, 324, 325, 326, 329, 332, 333, 334, 335,
+ 336, 337, 340, 346, 348, 350, 352, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 381, 382,
+ 387, 388, 389, 390, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 404, 407, 409, 411, 413,
+ 415, 417, 430, 431, 433, 436, 438, 441, 443, 447,
+ 448, 449, 450, 451, 453, 454, 455, 456, 457, 458
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "NAME", "STRING", "NUMBER", "ADD", "SUB",
+ "MUL", "AND", "OR", "XOR", "QUEST", "COLON", "NOT", "INC", "DEC", "ASOP",
+ "RELOP", "EQUOP", "DIVOP", "SHIFTL", "SHIFTR", "ANDAND", "XORXOR",
+ "OROR", "FUNCTION", "GENFUNC", "PADFUNC", "AUTHFUNC", "CRYPTFUNC",
+ "IKE_CRYPTFUNC", "BSAFUNC", "IKE_P2_HASHFUNC", "DHCPAUTHFUNC", "FRAME",
+ "PACKET", "HEADER", "UPPER", "ISAKMP_UPPER", "OPTION", "PAYLOAD",
+ "DNSHDR", "PACKET_REF", "HEADER_REF", "EXTENT_REF", "UPPER_REF",
+ "OPTION_REF", "ISAKMP_ENCRYPTION_REF", "PAYLOAD_REF", "DNSQD_REF",
+ "DNSAN_REF", "DNSNS_REF", "DNSAR_REF", "ALGORITHM", "ALGOMEM_PAD",
+ "ALGOMEM_CRYPT", "ALGOMEM_AUTH", "ALGOFUNC", "ALGORITHM_REF", "MEMBER",
+ "DATA", "PAD", "OCTETS", "ANY", "AUTO", "ZERO", "FILL", "STOP", "BOOL",
+ "VOID", "V4ADDR", "V6ADDR", "ETHER", "DUMMY", "LP", "RP", "LC", "RC",
+ "LB", "RB", "CM", "SM", "EQ", "NE", "LT", "GT", "LE", "GE", "SH", "SQ",
+ "$accept", "file", "define.l.", "define.l", "define", "frame.def",
+ "frame.prefix", "frame.body", "packet.def", "packet.prefix",
+ "packet.body", "header.def", "header.prefix", "header.body",
+ "option.def", "option.prefix", "option.body", "upper.def",
+ "upper.prefix", "upper.body", "isakmp_upper.def", "isakmp_upper.prefix",
+ "isakmp_upper.body", "payload.def", "payload.prefix", "payload.body",
+ "algorithm.def", "algorithm.prefix", "algorithm.body", "dnshdr.def",
+ "dnshdr.prefix", "dnshdr.body", "extent.ref.l.", "extent.ref.l",
+ "member.def.l.", "member.def.l", "data.def.l", "algomem.def.l.",
+ "algomem.def.l", "payload.ref.", "upper.ref.", "header.ref.",
+ "packet.ref.", "isakmp_encryption.ref.", "dnsqd.ref.", "dnsan.ref.",
+ "dnsns.ref.", "dnsar.ref.", "packet.ref", "header.ref",
+ "isakmp_encryption.ref", "extent.ref", "upper.ref", "payload.ref",
+ "dnsqd.ref", "dnsan.ref", "dnsns.ref", "dnsar.ref", "data.def",
+ "member.def", "algomem.def", "cmp.term", "data.term", "upper.term",
+ "opt.term", "mem.term", "eq.name", "eq.anyname", "eq.upper.term",
+ "eq.opt.term", "eq.data.term", "eq.mem.term", "cmp.value", "op.mem.term",
+ "values.prefix", "values", "number.l.", "number.l", "anyname",
+ "arg.term", "arg.l.", "arg.l", "func_call", "function", "bsa_call",
+ "bsafunc", "ike_p2_hash_call", "ike_p2_hashfunc", "dhcpauth_call",
+ "dhcpauthfunc", "padfunc", "crpyt_call", "crpytfunc", "ike_crpyt_call",
+ "ike_crpytfunc", "auth_call", "authfunc", "action", "eq", "cmp", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const unsigned short int yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const unsigned char yyr1[] =
+{
+ 0, 91, 92, 93, 93, 94, 94, 95, 95, 95,
+ 95, 95, 95, 95, 95, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 123, 124, 124, 125, 125, 126,
+ 126, 127, 127, 128, 128, 129, 129, 130, 130, 131,
+ 131, 132, 132, 133, 133, 134, 134, 135, 135, 136,
+ 136, 137, 137, 138, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 150, 150, 150,
+ 150, 150, 150, 151, 151, 151, 151, 152, 153, 153,
+ 153, 154, 154, 155, 155, 155, 156, 156, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 164, 165, 166,
+ 167, 167, 168, 168, 169, 169, 170, 170, 170, 170,
+ 171, 171, 172, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 188, 188, 188, 188, 189, 190, 190, 190, 190, 190
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const unsigned char yyr2[] =
+{
+ 0, 2, 1, 0, 1, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 3, 2, 3,
+ 3, 3, 3, 3, 2, 3, 3, 2, 3, 3,
+ 3, 3, 3, 4, 3, 3, 1, 3, 3, 1,
+ 3, 3, 5, 0, 1, 1, 2, 0, 1, 1,
+ 2, 1, 2, 0, 1, 1, 2, 0, 1, 0,
+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 1, 0, 1, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 2, 1, 1, 1, 3,
+ 0, 1, 1, 3, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 3, 2, 3, 2, 3, 2, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned char yydefact[] =
+{
+ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 4, 5, 7, 0, 8, 0, 9, 47,
+ 11, 47, 12, 61, 13, 0, 14, 0, 15, 53,
+ 10, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 6, 0, 0, 63, 0, 43, 0, 0,
+ 0, 0, 0, 57, 48, 49, 0, 57, 0, 47,
+ 62, 0, 65, 0, 0, 36, 51, 0, 0, 0,
+ 0, 39, 54, 55, 0, 67, 17, 20, 23, 29,
+ 32, 26, 35, 41, 38, 0, 0, 16, 0, 18,
+ 64, 19, 0, 59, 44, 45, 154, 0, 0, 0,
+ 154, 155, 156, 157, 158, 159, 116, 117, 0, 0,
+ 0, 0, 0, 22, 0, 24, 58, 50, 25, 27,
+ 28, 57, 31, 0, 47, 66, 0, 34, 52, 0,
+ 0, 0, 37, 56, 40, 0, 69, 68, 109, 76,
+ 0, 0, 0, 21, 60, 46, 88, 103, 0, 149,
+ 150, 151, 152, 153, 112, 130, 105, 104, 89, 0,
+ 0, 0, 130, 0, 130, 0, 130, 0, 86, 106,
+ 114, 108, 107, 97, 115, 87, 98, 118, 113, 120,
+ 99, 100, 0, 0, 30, 0, 57, 85, 0, 0,
+ 0, 0, 130, 0, 130, 0, 0, 130, 0, 0,
+ 0, 71, 70, 75, 78, 0, 0, 134, 128, 127,
+ 126, 132, 0, 131, 129, 136, 138, 140, 0, 90,
+ 0, 91, 0, 92, 122, 0, 121, 125, 124, 110,
+ 80, 77, 33, 0, 93, 143, 145, 0, 94, 0,
+ 95, 147, 0, 96, 81, 0, 0, 73, 72, 79,
+ 101, 111, 102, 135, 0, 137, 139, 141, 119, 0,
+ 142, 144, 146, 148, 82, 0, 0, 42, 74, 133,
+ 123, 83, 0, 84
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+ -1, 10, 11, 12, 13, 14, 15, 44, 16, 17,
+ 46, 18, 19, 52, 20, 21, 56, 22, 23, 58,
+ 24, 25, 61, 26, 27, 64, 28, 29, 70, 30,
+ 31, 74, 93, 94, 53, 54, 65, 71, 72, 115,
+ 143, 59, 89, 124, 136, 201, 247, 267, 90, 45,
+ 125, 95, 144, 116, 137, 202, 248, 268, 66, 55,
+ 73, 174, 178, 251, 154, 170, 86, 183, 205, 97,
+ 111, 106, 107, 108, 179, 180, 225, 226, 229, 211,
+ 212, 213, 155, 214, 162, 163, 164, 165, 166, 167,
+ 189, 192, 193, 194, 195, 197, 198, 157, 98, 110
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -151
+static const short int yypact[] =
+{
+ 52, 20, 37, 43, 45, 56, 57, 58, 59, 60,
+ 27, -151, 52, -151, -151, 51, -151, 51, -151, -26,
+ -151, -26, -151, 51, -151, 51, -151, 3, -151, -19,
+ -151, -26, -11, -9, 21, 23, 25, 26, 28, 30,
+ 31, -151, -151, 14, 32, 66, 34, 68, 18, 14,
+ -33, 18, 36, 67, -26, -151, 39, 67, 40, -26,
+ -151, 41, 72, 18, 44, 3, -151, 38, 42, 46,
+ 48, -151, -19, -151, 49, 65, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, 120, 53, -151, 14, -151,
+ -151, -151, 14, 78, 68, -151, -151, 54, 5, 55,
+ 24, -151, -151, -151, -151, -151, -151, -151, 61, 17,
+ 123, 62, 2, -151, 47, -151, -151, -151, -151, -151,
+ -151, 67, -151, 14, -26, -151, 63, -151, -151, 105,
+ -21, 109, -151, -151, -151, 18, 83, -151, -151, -151,
+ 64, 69, 18, -151, -151, -151, -151, -151, 73, -151,
+ -151, -151, -151, -151, -151, 15, -151, -151, -151, 74,
+ 75, 77, 15, 71, 15, 76, 15, 79, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, 134,
+ -151, -151, 22, 80, -151, 81, 67, -151, 82, 84,
+ 85, 89, 15, 86, 15, 87, 90, 15, 88, 91,
+ 18, 95, -151, -151, -151, 92, 10, -151, -151, -151,
+ -151, -151, 96, 94, -151, -151, -151, -151, 100, -151,
+ 101, -151, 102, -151, -151, 93, 98, -151, -151, -151,
+ -151, -151, -151, 104, -151, -151, -151, 106, -151, 107,
+ -151, -151, 108, -151, -151, 99, 18, 103, -151, -151,
+ -151, -151, -151, -151, 15, -151, -151, -151, -151, 135,
+ -151, -151, -151, -151, -151, 110, 18, -151, -151, -151,
+ -151, -151, 111, -151
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const short int yypgoto[] =
+{
+ -151, -151, -151, -151, 129, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -20, -151, -151, -151, -151, -54,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, 7,
+ -151, 97, -151, -151, -151, -151, -151, -151, 121, 113,
+ 70, -151, -151, -151, -151, -151, -43, -151, -151, -135,
+ 122, -151, -151, -151, -151, -151, -151, -151, -151, -100,
+ -150, -151, -151, -83, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -107, -46, -151
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -1
+static const unsigned short int yytable[] =
+{
+ 199, 57, 172, 119, 109, 112, 99, 176, 147, 190,
+ 191, 75, 218, 250, 220, 156, 222, 112, 208, 209,
+ 210, 48, 169, 32, 47, 227, 171, 41, 148, 181,
+ 60, 148, 62, 49, 50, 51, 67, 68, 69, 121,
+ 33, 148, 237, 148, 239, 140, 34, 242, 35, 141,
+ 100, 101, 102, 103, 104, 105, 159, 160, 161, 36,
+ 37, 38, 39, 40, 63, 245, 76, 184, 77, 149,
+ 150, 151, 152, 153, 149, 150, 151, 152, 153, 177,
+ 185, 149, 150, 151, 152, 153, 228, 1, 2, 3,
+ 4, 5, 6, 7, 8, 43, 206, 85, 78, 252,
+ 79, 96, 80, 81, 186, 82, 9, 83, 84, 88,
+ 87, 265, 91, 92, 113, 135, 114, 118, 120, 122,
+ 123, 129, 127, 138, 142, 130, 132, 134, 173, 131,
+ 182, 272, 232, 188, 200, 139, 146, 158, 196, 224,
+ 270, 42, 133, 168, 175, 187, 203, 246, 207, 215,
+ 216, 204, 217, 219, 269, 0, 266, 233, 221, 0,
+ 235, 223, 230, 231, 236, 241, 234, 117, 238, 240,
+ 243, 258, 253, 244, 249, 254, 255, 256, 257, 259,
+ 260, 264, 261, 262, 263, 126, 128, 0, 0, 0,
+ 0, 145, 271, 273
+};
+
+static const short int yycheck[] =
+{
+ 135, 21, 109, 57, 50, 51, 49, 5, 3, 30,
+ 31, 31, 162, 3, 164, 98, 166, 63, 3, 4,
+ 5, 47, 5, 3, 17, 3, 109, 0, 26, 112,
+ 23, 26, 25, 59, 60, 61, 55, 56, 57, 59,
+ 3, 26, 192, 26, 194, 88, 3, 197, 3, 92,
+ 83, 84, 85, 86, 87, 88, 32, 33, 34, 3,
+ 3, 3, 3, 3, 61, 200, 77, 121, 77, 64,
+ 65, 66, 67, 68, 64, 65, 66, 67, 68, 77,
+ 123, 64, 65, 66, 67, 68, 64, 35, 36, 37,
+ 38, 39, 40, 41, 42, 44, 142, 83, 77, 206,
+ 77, 83, 77, 77, 124, 77, 54, 77, 77, 43,
+ 78, 246, 78, 45, 78, 50, 49, 78, 78, 78,
+ 48, 83, 78, 3, 46, 83, 78, 78, 5, 83,
+ 83, 266, 186, 28, 51, 82, 82, 82, 29, 5,
+ 5, 12, 72, 82, 82, 82, 82, 52, 75, 75,
+ 75, 82, 75, 82, 254, -1, 53, 75, 82, -1,
+ 75, 82, 82, 82, 75, 75, 82, 54, 82, 82,
+ 82, 78, 76, 82, 82, 81, 76, 76, 76, 81,
+ 76, 82, 76, 76, 76, 63, 65, -1, -1, -1,
+ -1, 94, 82, 82
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned char yystos[] =
+{
+ 0, 35, 36, 37, 38, 39, 40, 41, 42, 54,
+ 92, 93, 94, 95, 96, 97, 99, 100, 102, 103,
+ 105, 106, 108, 109, 111, 112, 114, 115, 117, 118,
+ 120, 121, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 0, 95, 44, 98, 140, 101, 140, 47, 59,
+ 60, 61, 104, 125, 126, 150, 107, 125, 110, 132,
+ 140, 113, 140, 61, 116, 127, 149, 55, 56, 57,
+ 119, 128, 129, 151, 122, 125, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 83, 157, 78, 43, 133,
+ 139, 78, 45, 123, 124, 142, 83, 160, 189, 157,
+ 83, 84, 85, 86, 87, 88, 162, 163, 164, 189,
+ 190, 161, 189, 78, 49, 130, 144, 150, 78, 130,
+ 78, 125, 78, 48, 134, 141, 161, 78, 149, 83,
+ 83, 83, 78, 151, 78, 50, 135, 145, 3, 82,
+ 157, 157, 46, 131, 143, 142, 82, 3, 26, 64,
+ 65, 66, 67, 68, 155, 173, 174, 188, 82, 32,
+ 33, 34, 175, 176, 177, 178, 179, 180, 82, 5,
+ 156, 174, 188, 5, 152, 82, 5, 77, 153, 165,
+ 166, 174, 83, 158, 130, 157, 125, 82, 28, 181,
+ 30, 31, 182, 183, 184, 185, 29, 186, 187, 160,
+ 51, 136, 146, 82, 82, 159, 189, 75, 3, 4,
+ 5, 170, 171, 172, 174, 75, 75, 75, 171, 82,
+ 171, 82, 171, 82, 5, 167, 168, 3, 64, 169,
+ 82, 82, 130, 75, 82, 75, 75, 171, 82, 171,
+ 82, 75, 171, 82, 82, 160, 52, 137, 147, 82,
+ 3, 154, 188, 76, 81, 76, 76, 76, 78, 81,
+ 76, 76, 76, 76, 82, 160, 53, 138, 148, 170,
+ 5, 82, 160, 82
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (0)
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ short int *bottom;
+ short int *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+ int yyrule;
+#endif
+{
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+ yyrule - 1, yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ size_t yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+ YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol. */
+int yychar;
+
+/* The semantic value of the look-ahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+ ;
+#endif
+#endif
+{
+
+ int yystate;
+ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Look-ahead token as an internal (translated) token number. */
+ int yytoken = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ short int *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK (yyvsp--, yyssp--)
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short int *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short int *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a look-ahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to look-ahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a look-ahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 3:
+#line 202 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 16:
+#line 219 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 17:
+#line 220 "PzParse.y"
+ {
+ compound_=(yyvsp[-2])->name((yyvsp[-1])); PcObject::frame((yyvsp[-1]));}
+ break;
+
+ case 19:
+#line 224 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 20:
+#line 225 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 22:
+#line 228 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 23:
+#line 229 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 25:
+#line 232 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 26:
+#line 233 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 28:
+#line 236 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 29:
+#line 237 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 31:
+#line 240 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 32:
+#line 241 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 34:
+#line 244 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 35:
+#line 245 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 37:
+#line 248 "PzParse.y"
+ {compound_=0;}
+ break;
+
+ case 38:
+#line 249 "PzParse.y"
+ {compound_=(yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 40:
+#line 252 "PzParse.y"
+ {compound_ = 0;}
+ break;
+
+ case 41:
+#line 253 "PzParse.y"
+ {compound_ = (yyvsp[-2])->name((yyvsp[-1]));}
+ break;
+
+ case 43:
+#line 259 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 47:
+#line 267 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 53:
+#line 273 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 57:
+#line 279 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 59:
+#line 281 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 61:
+#line 283 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 63:
+#line 285 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 65:
+#line 288 "PzParse.y"
+ {(yyval) = 0;}
+ break;
+
+ case 67:
+#line 291 "PzParse.y"
+ {(yyval) = 0;}
+ break;
+
+ case 69:
+#line 294 "PzParse.y"
+ {(yyval) = 0;}
+ break;
+
+ case 71:
+#line 297 "PzParse.y"
+ {(yyval) = 0;}
+ break;
+
+ case 73:
+#line 300 "PzParse.y"
+ {(yyval) = 0;}
+ break;
+
+ case 75:
+#line 307 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 76:
+#line 309 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 77:
+#line 311 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 78:
+#line 313 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 79:
+#line 315 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 80:
+#line 319 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 81:
+#line 323 "PzParse.y"
+ {compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 82:
+#line 324 "PzParse.y"
+ {compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 83:
+#line 325 "PzParse.y"
+ {compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 84:
+#line 326 "PzParse.y"
+ {compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 85:
+#line 329 "PzParse.y"
+ {
+ compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 86:
+#line 332 "PzParse.y"
+ { compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 87:
+#line 333 "PzParse.y"
+ { compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 88:
+#line 334 "PzParse.y"
+ { compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 89:
+#line 335 "PzParse.y"
+ { compound_->member((yyvsp[-2])->rvalue((yyvsp[-1])));}
+ break;
+
+ case 90:
+#line 336 "PzParse.y"
+ { compound_->bsa_member((yyvsp[-1]));}
+ break;
+
+ case 91:
+#line 337 "PzParse.y"
+ {
+ compound_->member((yyvsp[-3])->rvalue((yyvsp[-1])));
+ compound_->ike_p2_hash_member((yyvsp[-1])); }
+ break;
+
+ case 92:
+#line 340 "PzParse.y"
+ { compound_->dhcpauth_member((yyvsp[-1]));}
+ break;
+
+ case 93:
+#line 346 "PzParse.y"
+ {
+ compound_->pad_member((yyvsp[-1]));}
+ break;
+
+ case 94:
+#line 348 "PzParse.y"
+ {
+ compound_->crypt_member((yyvsp[-1]));}
+ break;
+
+ case 95:
+#line 350 "PzParse.y"
+ {
+ compound_->crypt_member((yyvsp[-1]));}
+ break;
+
+ case 96:
+#line 352 "PzParse.y"
+ {
+ compound_->auth_member((yyvsp[-1]));}
+ break;
+
+ case 97:
+#line 358 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 98:
+#line 359 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 99:
+#line 360 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 100:
+#line 361 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 101:
+#line 362 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 102:
+#line 363 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 103:
+#line 364 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 104:
+#line 365 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 105:
+#line 366 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 106:
+#line 367 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 107:
+#line 368 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 108:
+#line 369 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 109:
+#line 371 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 110:
+#line 372 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 111:
+#line 373 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 112:
+#line 374 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 113:
+#line 375 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 114:
+#line 376 "PzParse.y"
+ {(yyval)=(yyvsp[-1])->rvalue((yyvsp[0]));}
+ break;
+
+ case 115:
+#line 377 "PzParse.y"
+ {(yyval)=(yyvsp[-1])->rvalue((yyvsp[0]));}
+ break;
+
+ case 116:
+#line 378 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 117:
+#line 379 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 118:
+#line 381 "PzParse.y"
+ {numbers_=new PvNumbers;}
+ break;
+
+ case 119:
+#line 382 "PzParse.y"
+ {
+ PvNumbers* ns=numbers_; numbers_=0;
+ PvOctets* oct=ns->octetString();
+ delete ns;
+ (yyval)=oct;}
+ break;
+
+ case 120:
+#line 387 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 121:
+#line 388 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 122:
+#line 389 "PzParse.y"
+ {numbers_->add((yyvsp[0]));}
+ break;
+
+ case 123:
+#line 390 "PzParse.y"
+ {numbers_->add((yyvsp[0]));}
+ break;
+
+ case 124:
+#line 392 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 125:
+#line 393 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 126:
+#line 394 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 127:
+#line 395 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 128:
+#line 396 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 129:
+#line 397 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 130:
+#line 398 "PzParse.y"
+ {(yyval)=0;}
+ break;
+
+ case 131:
+#line 399 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 132:
+#line 400 "PzParse.y"
+ {function_->argument((yyvsp[0]));}
+ break;
+
+ case 133:
+#line 401 "PzParse.y"
+ {function_->argument((yyvsp[0]));}
+ break;
+
+ case 134:
+#line 402 "PzParse.y"
+ {
+ function_=(PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 135:
+#line 404 "PzParse.y"
+ {
+ function_->checkArgument();
+ (yyval)=(yyvsp[-2]); function_=(PvFunction*)funcQue_.pop();}
+ break;
+
+ case 136:
+#line 407 "PzParse.y"
+ {function_ = (PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 137:
+#line 409 "PzParse.y"
+ {function_->checkArgument(); (yyval)=(yyvsp[-2]); function_ = (PvFunction*)funcQue_.pop();}
+ break;
+
+ case 138:
+#line 411 "PzParse.y"
+ {function_ = (PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 139:
+#line 413 "PzParse.y"
+ {function_->checkArgument(); (yyval)=(yyvsp[-2]); function_ = (PvFunction*)funcQue_.pop();}
+ break;
+
+ case 140:
+#line 415 "PzParse.y"
+ {function_ = (PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 141:
+#line 417 "PzParse.y"
+ {function_->checkArgument(); (yyval)=(yyvsp[-2]); function_ = (PvFunction*)funcQue_.pop();}
+ break;
+
+ case 142:
+#line 430 "PzParse.y"
+ {(yyval)=(yyvsp[-2]);}
+ break;
+
+ case 143:
+#line 431 "PzParse.y"
+ {
+ function_=(PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 144:
+#line 433 "PzParse.y"
+ {
+ function_->checkArgument();
+ (yyval)=(yyvsp[-2]); function_=(PvFunction*)funcQue_.pop();}
+ break;
+
+ case 145:
+#line 436 "PzParse.y"
+ {
+ function_=(PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 146:
+#line 438 "PzParse.y"
+ {
+ function_->checkArgument();
+ (yyval)=(yyvsp[-2]); function_=(PvFunction*)funcQue_.pop();}
+ break;
+
+ case 147:
+#line 441 "PzParse.y"
+ {
+ function_=(PvFunction*)funcQue_.push((yyvsp[-1])); (yyval)=(yyvsp[-1]);}
+ break;
+
+ case 148:
+#line 443 "PzParse.y"
+ {
+ function_->checkArgument();
+ (yyval)=(yyvsp[-2]); function_=(PvFunction*)funcQue_.pop();}
+ break;
+
+ case 149:
+#line 447 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 150:
+#line 448 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 151:
+#line 449 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 152:
+#line 450 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 153:
+#line 451 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 154:
+#line 453 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 155:
+#line 454 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 156:
+#line 455 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 157:
+#line 456 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 158:
+#line 457 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+ case 159:
+#line 458 "PzParse.y"
+ {(yyval)=(yyvsp[0]);}
+ break;
+
+
+ default: break;
+ }
+
+/* Line 1126 of yacc.c. */
+#line 2181 "y.tab.c"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+
+
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ char *yymsg = 0;
+# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+#if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+
+ if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyf))
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ goto yyexhaustedlab;
+ }
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror (YY_("syntax error"));
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse look-ahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding", yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse look-ahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (0)
+ goto yyerrorlab;
+
+yyvsp -= yylen;
+ yyssp -= yylen;
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping", yystos[yystate], yyvsp);
+ YYPOPSTACK;
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEOF && yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK;
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+
+
+#line 459 "PzParse.y"
+
+
diff -urN tahi-linux-3.0.12/lib/pkt/PzParse.h tahi-linux-3.0.12-linux/lib/pkt/PzParse.h
--- tahi-linux-3.0.12/lib/pkt/PzParse.h 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/pkt/PzParse.h 2007-12-09 23:19:59.000000000 +0100
@@ -0,0 +1,225 @@
+/* A Bison parser, made by GNU Bison 2.1. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ NAME = 258,
+ STRING = 259,
+ NUMBER = 260,
+ ADD = 261,
+ SUB = 262,
+ MUL = 263,
+ AND = 264,
+ OR = 265,
+ XOR = 266,
+ QUEST = 267,
+ COLON = 268,
+ NOT = 269,
+ INC = 270,
+ DEC = 271,
+ ASOP = 272,
+ RELOP = 273,
+ EQUOP = 274,
+ DIVOP = 275,
+ SHIFTL = 276,
+ SHIFTR = 277,
+ ANDAND = 278,
+ XORXOR = 279,
+ OROR = 280,
+ FUNCTION = 281,
+ GENFUNC = 282,
+ PADFUNC = 283,
+ AUTHFUNC = 284,
+ CRYPTFUNC = 285,
+ IKE_CRYPTFUNC = 286,
+ BSAFUNC = 287,
+ IKE_P2_HASHFUNC = 288,
+ DHCPAUTHFUNC = 289,
+ FRAME = 290,
+ PACKET = 291,
+ HEADER = 292,
+ UPPER = 293,
+ ISAKMP_UPPER = 294,
+ OPTION = 295,
+ PAYLOAD = 296,
+ DNSHDR = 297,
+ PACKET_REF = 298,
+ HEADER_REF = 299,
+ EXTENT_REF = 300,
+ UPPER_REF = 301,
+ OPTION_REF = 302,
+ ISAKMP_ENCRYPTION_REF = 303,
+ PAYLOAD_REF = 304,
+ DNSQD_REF = 305,
+ DNSAN_REF = 306,
+ DNSNS_REF = 307,
+ DNSAR_REF = 308,
+ ALGORITHM = 309,
+ ALGOMEM_PAD = 310,
+ ALGOMEM_CRYPT = 311,
+ ALGOMEM_AUTH = 312,
+ ALGOFUNC = 313,
+ ALGORITHM_REF = 314,
+ MEMBER = 315,
+ DATA = 316,
+ PAD = 317,
+ OCTETS = 318,
+ ANY = 319,
+ AUTO = 320,
+ ZERO = 321,
+ FILL = 322,
+ STOP = 323,
+ BOOL = 324,
+ VOID = 325,
+ V4ADDR = 326,
+ V6ADDR = 327,
+ ETHER = 328,
+ DUMMY = 329,
+ LP = 330,
+ RP = 331,
+ LC = 332,
+ RC = 333,
+ LB = 334,
+ RB = 335,
+ CM = 336,
+ SM = 337,
+ EQ = 338,
+ NE = 339,
+ LT = 340,
+ GT = 341,
+ LE = 342,
+ GE = 343,
+ SH = 344,
+ SQ = 345
+ };
+#endif
+/* Tokens. */
+#define NAME 258
+#define STRING 259
+#define NUMBER 260
+#define ADD 261
+#define SUB 262
+#define MUL 263
+#define AND 264
+#define OR 265
+#define XOR 266
+#define QUEST 267
+#define COLON 268
+#define NOT 269
+#define INC 270
+#define DEC 271
+#define ASOP 272
+#define RELOP 273
+#define EQUOP 274
+#define DIVOP 275
+#define SHIFTL 276
+#define SHIFTR 277
+#define ANDAND 278
+#define XORXOR 279
+#define OROR 280
+#define FUNCTION 281
+#define GENFUNC 282
+#define PADFUNC 283
+#define AUTHFUNC 284
+#define CRYPTFUNC 285
+#define IKE_CRYPTFUNC 286
+#define BSAFUNC 287
+#define IKE_P2_HASHFUNC 288
+#define DHCPAUTHFUNC 289
+#define FRAME 290
+#define PACKET 291
+#define HEADER 292
+#define UPPER 293
+#define ISAKMP_UPPER 294
+#define OPTION 295
+#define PAYLOAD 296
+#define DNSHDR 297
+#define PACKET_REF 298
+#define HEADER_REF 299
+#define EXTENT_REF 300
+#define UPPER_REF 301
+#define OPTION_REF 302
+#define ISAKMP_ENCRYPTION_REF 303
+#define PAYLOAD_REF 304
+#define DNSQD_REF 305
+#define DNSAN_REF 306
+#define DNSNS_REF 307
+#define DNSAR_REF 308
+#define ALGORITHM 309
+#define ALGOMEM_PAD 310
+#define ALGOMEM_CRYPT 311
+#define ALGOMEM_AUTH 312
+#define ALGOFUNC 313
+#define ALGORITHM_REF 314
+#define MEMBER 315
+#define DATA 316
+#define PAD 317
+#define OCTETS 318
+#define ANY 319
+#define AUTO 320
+#define ZERO 321
+#define FILL 322
+#define STOP 323
+#define BOOL 324
+#define VOID 325
+#define V4ADDR 326
+#define V6ADDR 327
+#define ETHER 328
+#define DUMMY 329
+#define LP 330
+#define RP 331
+#define LC 332
+#define RC 333
+#define LB 334
+#define RB 335
+#define CM 336
+#define SM 337
+#define EQ 338
+#define NE 339
+#define LT 340
+#define GT 341
+#define LE 342
+#define GE 343
+#define SH 344
+#define SQ 345
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+typedef int YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+/* extern YYSTYPE yylval; */
+
+
+
diff -urN tahi-linux-3.0.12/lib/pkt/PzParse.rule tahi-linux-3.0.12-linux/lib/pkt/PzParse.rule
--- tahi-linux-3.0.12/lib/pkt/PzParse.rule 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/pkt/PzParse.rule 2007-12-09 23:19:58.000000000 +0100
@@ -0,0 +1,2966 @@
+Useless nonterminals
+
+ algorithm.ref
+
+
+Terminals which are not used
+
+ ADD
+ SUB
+ MUL
+ AND
+ OR
+ XOR
+ QUEST
+ COLON
+ NOT
+ INC
+ DEC
+ ASOP
+ RELOP
+ EQUOP
+ DIVOP
+ SHIFTL
+ SHIFTR
+ ANDAND
+ XORXOR
+ OROR
+ GENFUNC
+ ALGOFUNC
+ PAD
+ OCTETS
+ BOOL
+ VOID
+ V4ADDR
+ V6ADDR
+ ETHER
+ DUMMY
+ LB
+ RB
+ SH
+ SQ
+
+
+Useless rules
+
+ 159 algorithm.ref: ALGORITHM_REF eq.name SM
+
+
+Grammar
+
+ 0 $accept: file $end
+
+ 1 file: define.l.
+
+ 2 define.l.: /* empty */
+ 3 | define.l
+
+ 4 define.l: define
+ 5 | define.l define
+
+ 6 define: frame.def
+ 7 | packet.def
+ 8 | header.def
+ 9 | dnshdr.def
+ 10 | option.def
+ 11 | upper.def
+ 12 | isakmp_upper.def
+ 13 | payload.def
+ 14 | algorithm.def
+
+ 15 frame.def: frame.prefix frame.body RC
+
+ 16 frame.prefix: FRAME NAME LC
+
+ 17 frame.body: header.ref packet.ref.
+
+ 18 packet.def: packet.prefix packet.body RC
+
+ 19 packet.prefix: PACKET NAME LC
+
+ 20 packet.body: header.ref extent.ref.l. upper.ref.
+
+ 21 header.def: header.prefix header.body RC
+
+ 22 header.prefix: HEADER NAME LC
+
+ 23 header.body: member.def.l. payload.ref.
+
+ 24 option.def: option.prefix option.body RC
+
+ 25 option.prefix: OPTION NAME LC
+
+ 26 option.body: member.def.l. payload.ref.
+
+ 27 upper.def: upper.prefix upper.body RC
+
+ 28 upper.prefix: UPPER NAME LC
+
+ 29 upper.body: header.ref. member.def.l. payload.ref.
+
+ 30 isakmp_upper.def: isakmp_upper.prefix isakmp_upper.body RC
+
+ 31 isakmp_upper.prefix: ISAKMP_UPPER NAME LC
+
+ 32 isakmp_upper.body: header.ref isakmp_encryption.ref. member.def.l. payload.ref.
+
+ 33 payload.def: payload.prefix payload.body RC
+
+ 34 payload.prefix: PAYLOAD NAME LC
+
+ 35 payload.body: data.def.l
+
+ 36 algorithm.def: algorithm.prefix algorithm.body RC
+
+ 37 algorithm.prefix: ALGORITHM NAME LC
+
+ 38 algorithm.body: algomem.def.l.
+
+ 39 dnshdr.def: dnshdr.prefix dnshdr.body RC
+
+ 40 dnshdr.prefix: DNSHDR NAME LC
+
+ 41 dnshdr.body: member.def.l. dnsqd.ref. dnsan.ref. dnsns.ref. dnsar.ref.
+
+ 42 extent.ref.l.: /* empty */
+ 43 | extent.ref.l
+
+ 44 extent.ref.l: extent.ref
+ 45 | extent.ref.l extent.ref
+
+ 46 member.def.l.: /* empty */
+ 47 | member.def.l
+
+ 48 member.def.l: member.def
+ 49 | member.def.l member.def
+
+ 50 data.def.l: data.def
+ 51 | data.def.l data.def
+
+ 52 algomem.def.l.: /* empty */
+ 53 | algomem.def.l
+
+ 54 algomem.def.l: algomem.def
+ 55 | algomem.def.l algomem.def
+
+ 56 payload.ref.: /* empty */
+ 57 | payload.ref
+
+ 58 upper.ref.: /* empty */
+ 59 | upper.ref
+
+ 60 header.ref.: /* empty */
+ 61 | header.ref
+
+ 62 packet.ref.: /* empty */
+ 63 | packet.ref
+
+ 64 isakmp_encryption.ref.: /* empty */
+ 65 | isakmp_encryption.ref
+
+ 66 dnsqd.ref.: /* empty */
+ 67 | dnsqd.ref
+
+ 68 dnsan.ref.: /* empty */
+ 69 | dnsan.ref
+
+ 70 dnsns.ref.: /* empty */
+ 71 | dnsns.ref
+
+ 72 dnsar.ref.: /* empty */
+ 73 | dnsar.ref
+
+ 74 packet.ref: PACKET_REF eq.name SM
+
+ 75 header.ref: HEADER_REF eq.name SM
+
+ 76 isakmp_encryption.ref: ISAKMP_ENCRYPTION_REF eq.name SM
+
+ 77 extent.ref: EXTENT_REF eq.name SM
+
+ 78 upper.ref: UPPER_REF eq.upper.term SM
+
+ 79 payload.ref: PAYLOAD_REF eq.anyname SM
+
+ 80 dnsqd.ref: DNSQD_REF eq.opt.term SM
+
+ 81 dnsan.ref: DNSAN_REF eq.opt.term SM
+
+ 82 dnsns.ref: DNSNS_REF eq.opt.term SM
+
+ 83 dnsar.ref: DNSAR_REF eq.opt.term SM
+
+ 84 data.def: DATA eq.data.term SM
+
+ 85 member.def: MEMBER op.mem.term SM
+ 86 | DATA eq.data.term SM
+ 87 | OPTION_REF eq.opt.term SM
+ 88 | ALGORITHM_REF eq.name SM
+ 89 | MEMBER EQ bsafunc SM
+ 90 | MEMBER EQ ike_p2_hashfunc SM
+ 91 | MEMBER EQ dhcpauthfunc SM
+
+ 92 algomem.def: ALGOMEM_PAD EQ padfunc SM
+ 93 | ALGOMEM_CRYPT EQ crpytfunc SM
+ 94 | ALGOMEM_CRYPT EQ ike_crpytfunc SM
+ 95 | ALGOMEM_AUTH EQ authfunc SM
+
+ 96 cmp.term: NUMBER
+
+ 97 data.term: NUMBER
+ 98 | values
+ 99 | function
+
+ 100 upper.term: NAME
+ 101 | action
+
+ 102 opt.term: NAME
+ 103 | action
+ 104 | function
+
+ 105 mem.term: NUMBER
+ 106 | action
+ 107 | function
+
+ 108 eq.name: EQ NAME
+
+ 109 eq.anyname: EQ anyname
+
+ 110 eq.upper.term: eq upper.term
+
+ 111 eq.opt.term: eq opt.term
+
+ 112 eq.data.term: eq data.term
+
+ 113 eq.mem.term: eq mem.term
+
+ 114 cmp.value: cmp cmp.term
+
+ 115 op.mem.term: eq.mem.term
+ 116 | cmp.value
+
+ 117 values.prefix: LC
+
+ 118 values: values.prefix number.l. RC
+
+ 119 number.l.: /* empty */
+ 120 | number.l
+
+ 121 number.l: NUMBER
+ 122 | number.l CM NUMBER
+
+ 123 anyname: ANY
+ 124 | NAME
+
+ 125 arg.term: NUMBER
+ 126 | STRING
+ 127 | NAME
+ 128 | function
+
+ 129 arg.l.: /* empty */
+ 130 | arg.l
+
+ 131 arg.l: arg.term
+ 132 | arg.l CM arg.term
+
+ 133 func_call: FUNCTION LP
+
+ 134 function: func_call arg.l. RP
+
+ 135 bsa_call: BSAFUNC LP
+
+ 136 bsafunc: bsa_call arg.l. RP
+
+ 137 ike_p2_hash_call: IKE_P2_HASHFUNC LP
+
+ 138 ike_p2_hashfunc: ike_p2_hash_call arg.l. RP
+
+ 139 dhcpauth_call: DHCPAUTHFUNC LP
+
+ 140 dhcpauthfunc: dhcpauth_call arg.l. RP
+
+ 141 padfunc: PADFUNC LP RP
+
+ 142 crpyt_call: CRYPTFUNC LP
+
+ 143 crpytfunc: crpyt_call arg.l. RP
+
+ 144 ike_crpyt_call: IKE_CRYPTFUNC LP
+
+ 145 ike_crpytfunc: ike_crpyt_call arg.l. RP
+
+ 146 auth_call: AUTHFUNC LP
+
+ 147 authfunc: auth_call arg.l. RP
+
+ 148 action: ANY
+ 149 | AUTO
+ 150 | ZERO
+ 151 | FILL
+ 152 | STOP
+
+ 153 eq: EQ
+
+ 154 cmp: NE
+ 155 | LT
+ 156 | GT
+ 157 | LE
+ 158 | GE
+
+
+Terminals, with rules where they appear
+
+$end (0) 0
+error (256)
+NAME (258) 16 19 22 25 28 31 34 37 40 100 102 108 124 127
+STRING (259) 126
+NUMBER (260) 96 97 105 121 122 125
+ADD (261)
+SUB (262)
+MUL (263)
+AND (264)
+OR (265)
+XOR (266)
+QUEST (267)
+COLON (268)
+NOT (269)
+INC (270)
+DEC (271)
+ASOP (272)
+RELOP (273)
+EQUOP (274)
+DIVOP (275)
+SHIFTL (276)
+SHIFTR (277)
+ANDAND (278)
+XORXOR (279)
+OROR (280)
+FUNCTION (281) 133
+GENFUNC (282)
+PADFUNC (283) 141
+AUTHFUNC (284) 146
+CRYPTFUNC (285) 142
+IKE_CRYPTFUNC (286) 144
+BSAFUNC (287) 135
+IKE_P2_HASHFUNC (288) 137
+DHCPAUTHFUNC (289) 139
+FRAME (290) 16
+PACKET (291) 19
+HEADER (292) 22
+UPPER (293) 28
+ISAKMP_UPPER (294) 31
+OPTION (295) 25
+PAYLOAD (296) 34
+DNSHDR (297) 40
+PACKET_REF (298) 74
+HEADER_REF (299) 75
+EXTENT_REF (300) 77
+UPPER_REF (301) 78
+OPTION_REF (302) 87
+ISAKMP_ENCRYPTION_REF (303) 76
+PAYLOAD_REF (304) 79
+DNSQD_REF (305) 80
+DNSAN_REF (306) 81
+DNSNS_REF (307) 82
+DNSAR_REF (308) 83
+ALGORITHM (309) 37
+ALGOMEM_PAD (310) 92
+ALGOMEM_CRYPT (311) 93 94
+ALGOMEM_AUTH (312) 95
+ALGOFUNC (313)
+ALGORITHM_REF (314) 88
+MEMBER (315) 85 89 90 91
+DATA (316) 84 86
+PAD (317)
+OCTETS (318)
+ANY (319) 123 148
+AUTO (320) 149
+ZERO (321) 150
+FILL (322) 151
+STOP (323) 152
+BOOL (324)
+VOID (325)
+V4ADDR (326)
+V6ADDR (327)
+ETHER (328)
+DUMMY (329)
+LP (330) 133 135 137 139 141 142 144 146
+RP (331) 134 136 138 140 141 143 145 147
+LC (332) 16 19 22 25 28 31 34 37 40 117
+RC (333) 15 18 21 24 27 30 33 36 39 118
+LB (334)
+RB (335)
+CM (336) 122 132
+SM (337) 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
+ 94 95
+EQ (338) 89 90 91 92 93 94 95 108 109 153
+NE (339) 154
+LT (340) 155
+GT (341) 156
+LE (342) 157
+GE (343) 158
+SH (344)
+SQ (345)
+
+
+Nonterminals, with rules where they appear
+
+$accept (91)
+ on left: 0
+file (92)
+ on left: 1, on right: 0
+define.l. (93)
+ on left: 2 3, on right: 1
+define.l (94)
+ on left: 4 5, on right: 3 5
+define (95)
+ on left: 6 7 8 9 10 11 12 13 14, on right: 4 5
+frame.def (96)
+ on left: 15, on right: 6
+frame.prefix (97)
+ on left: 16, on right: 15
+frame.body (98)
+ on left: 17, on right: 15
+packet.def (99)
+ on left: 18, on right: 7
+packet.prefix (100)
+ on left: 19, on right: 18
+packet.body (101)
+ on left: 20, on right: 18
+header.def (102)
+ on left: 21, on right: 8
+header.prefix (103)
+ on left: 22, on right: 21
+header.body (104)
+ on left: 23, on right: 21
+option.def (105)
+ on left: 24, on right: 10
+option.prefix (106)
+ on left: 25, on right: 24
+option.body (107)
+ on left: 26, on right: 24
+upper.def (108)
+ on left: 27, on right: 11
+upper.prefix (109)
+ on left: 28, on right: 27
+upper.body (110)
+ on left: 29, on right: 27
+isakmp_upper.def (111)
+ on left: 30, on right: 12
+isakmp_upper.prefix (112)
+ on left: 31, on right: 30
+isakmp_upper.body (113)
+ on left: 32, on right: 30
+payload.def (114)
+ on left: 33, on right: 13
+payload.prefix (115)
+ on left: 34, on right: 33
+payload.body (116)
+ on left: 35, on right: 33
+algorithm.def (117)
+ on left: 36, on right: 14
+algorithm.prefix (118)
+ on left: 37, on right: 36
+algorithm.body (119)
+ on left: 38, on right: 36
+dnshdr.def (120)
+ on left: 39, on right: 9
+dnshdr.prefix (121)
+ on left: 40, on right: 39
+dnshdr.body (122)
+ on left: 41, on right: 39
+extent.ref.l. (123)
+ on left: 42 43, on right: 20
+extent.ref.l (124)
+ on left: 44 45, on right: 43 45
+member.def.l. (125)
+ on left: 46 47, on right: 23 26 29 32 41
+member.def.l (126)
+ on left: 48 49, on right: 47 49
+data.def.l (127)
+ on left: 50 51, on right: 35 51
+algomem.def.l. (128)
+ on left: 52 53, on right: 38
+algomem.def.l (129)
+ on left: 54 55, on right: 53 55
+payload.ref. (130)
+ on left: 56 57, on right: 23 26 29 32
+upper.ref. (131)
+ on left: 58 59, on right: 20
+header.ref. (132)
+ on left: 60 61, on right: 29
+packet.ref. (133)
+ on left: 62 63, on right: 17
+isakmp_encryption.ref. (134)
+ on left: 64 65, on right: 32
+dnsqd.ref. (135)
+ on left: 66 67, on right: 41
+dnsan.ref. (136)
+ on left: 68 69, on right: 41
+dnsns.ref. (137)
+ on left: 70 71, on right: 41
+dnsar.ref. (138)
+ on left: 72 73, on right: 41
+packet.ref (139)
+ on left: 74, on right: 63
+header.ref (140)
+ on left: 75, on right: 17 20 32 61
+isakmp_encryption.ref (141)
+ on left: 76, on right: 65
+extent.ref (142)
+ on left: 77, on right: 44 45
+upper.ref (143)
+ on left: 78, on right: 59
+payload.ref (144)
+ on left: 79, on right: 57
+dnsqd.ref (145)
+ on left: 80, on right: 67
+dnsan.ref (146)
+ on left: 81, on right: 69
+dnsns.ref (147)
+ on left: 82, on right: 71
+dnsar.ref (148)
+ on left: 83, on right: 73
+data.def (149)
+ on left: 84, on right: 50 51
+member.def (150)
+ on left: 85 86 87 88 89 90 91, on right: 48 49
+algomem.def (151)
+ on left: 92 93 94 95, on right: 54 55
+cmp.term (152)
+ on left: 96, on right: 114
+data.term (153)
+ on left: 97 98 99, on right: 112
+upper.term (154)
+ on left: 100 101, on right: 110
+opt.term (155)
+ on left: 102 103 104, on right: 111
+mem.term (156)
+ on left: 105 106 107, on right: 113
+eq.name (157)
+ on left: 108, on right: 74 75 76 77 88
+eq.anyname (158)
+ on left: 109, on right: 79
+eq.upper.term (159)
+ on left: 110, on right: 78
+eq.opt.term (160)
+ on left: 111, on right: 80 81 82 83 87
+eq.data.term (161)
+ on left: 112, on right: 84 86
+eq.mem.term (162)
+ on left: 113, on right: 115
+cmp.value (163)
+ on left: 114, on right: 116
+op.mem.term (164)
+ on left: 115 116, on right: 85
+values.prefix (165)
+ on left: 117, on right: 118
+values (166)
+ on left: 118, on right: 98
+number.l. (167)
+ on left: 119 120, on right: 118
+number.l (168)
+ on left: 121 122, on right: 120 122
+anyname (169)
+ on left: 123 124, on right: 109
+arg.term (170)
+ on left: 125 126 127 128, on right: 131 132
+arg.l. (171)
+ on left: 129 130, on right: 134 136 138 140 143 145 147
+arg.l (172)
+ on left: 131 132, on right: 130 132
+func_call (173)
+ on left: 133, on right: 134
+function (174)
+ on left: 134, on right: 99 104 107 128
+bsa_call (175)
+ on left: 135, on right: 136
+bsafunc (176)
+ on left: 136, on right: 89
+ike_p2_hash_call (177)
+ on left: 137, on right: 138
+ike_p2_hashfunc (178)
+ on left: 138, on right: 90
+dhcpauth_call (179)
+ on left: 139, on right: 140
+dhcpauthfunc (180)
+ on left: 140, on right: 91
+padfunc (181)
+ on left: 141, on right: 92
+crpyt_call (182)
+ on left: 142, on right: 143
+crpytfunc (183)
+ on left: 143, on right: 93
+ike_crpyt_call (184)
+ on left: 144, on right: 145
+ike_crpytfunc (185)
+ on left: 145, on right: 94
+auth_call (186)
+ on left: 146, on right: 147
+authfunc (187)
+ on left: 147, on right: 95
+action (188)
+ on left: 148 149 150 151 152, on right: 101 103 106
+eq (189)
+ on left: 153, on right: 110 111 112 113
+cmp (190)
+ on left: 154 155 156 157 158, on right: 114
+
+
+state 0
+
+ 0 $accept: . file $end
+
+ FRAME shift, and go to state 1
+ PACKET shift, and go to state 2
+ HEADER shift, and go to state 3
+ UPPER shift, and go to state 4
+ ISAKMP_UPPER shift, and go to state 5
+ OPTION shift, and go to state 6
+ PAYLOAD shift, and go to state 7
+ DNSHDR shift, and go to state 8
+ ALGORITHM shift, and go to state 9
+
+ $default reduce using rule 2 (define.l.)
+
+ file go to state 10
+ define.l. go to state 11
+ define.l go to state 12
+ define go to state 13
+ frame.def go to state 14
+ frame.prefix go to state 15
+ packet.def go to state 16
+ packet.prefix go to state 17
+ header.def go to state 18
+ header.prefix go to state 19
+ option.def go to state 20
+ option.prefix go to state 21
+ upper.def go to state 22
+ upper.prefix go to state 23
+ isakmp_upper.def go to state 24
+ isakmp_upper.prefix go to state 25
+ payload.def go to state 26
+ payload.prefix go to state 27
+ algorithm.def go to state 28
+ algorithm.prefix go to state 29
+ dnshdr.def go to state 30
+ dnshdr.prefix go to state 31
+
+
+state 1
+
+ 16 frame.prefix: FRAME . NAME LC
+
+ NAME shift, and go to state 32
+
+
+state 2
+
+ 19 packet.prefix: PACKET . NAME LC
+
+ NAME shift, and go to state 33
+
+
+state 3
+
+ 22 header.prefix: HEADER . NAME LC
+
+ NAME shift, and go to state 34
+
+
+state 4
+
+ 28 upper.prefix: UPPER . NAME LC
+
+ NAME shift, and go to state 35
+
+
+state 5
+
+ 31 isakmp_upper.prefix: ISAKMP_UPPER . NAME LC
+
+ NAME shift, and go to state 36
+
+
+state 6
+
+ 25 option.prefix: OPTION . NAME LC
+
+ NAME shift, and go to state 37
+
+
+state 7
+
+ 34 payload.prefix: PAYLOAD . NAME LC
+
+ NAME shift, and go to state 38
+
+
+state 8
+
+ 40 dnshdr.prefix: DNSHDR . NAME LC
+
+ NAME shift, and go to state 39
+
+
+state 9
+
+ 37 algorithm.prefix: ALGORITHM . NAME LC
+
+ NAME shift, and go to state 40
+
+
+state 10
+
+ 0 $accept: file . $end
+
+ $end shift, and go to state 41
+
+
+state 11
+
+ 1 file: define.l. .
+
+ $default reduce using rule 1 (file)
+
+
+state 12
+
+ 3 define.l.: define.l .
+ 5 define.l: define.l . define
+
+ FRAME shift, and go to state 1
+ PACKET shift, and go to state 2
+ HEADER shift, and go to state 3
+ UPPER shift, and go to state 4
+ ISAKMP_UPPER shift, and go to state 5
+ OPTION shift, and go to state 6
+ PAYLOAD shift, and go to state 7
+ DNSHDR shift, and go to state 8
+ ALGORITHM shift, and go to state 9
+
+ $default reduce using rule 3 (define.l.)
+
+ define go to state 42
+ frame.def go to state 14
+ frame.prefix go to state 15
+ packet.def go to state 16
+ packet.prefix go to state 17
+ header.def go to state 18
+ header.prefix go to state 19
+ option.def go to state 20
+ option.prefix go to state 21
+ upper.def go to state 22
+ upper.prefix go to state 23
+ isakmp_upper.def go to state 24
+ isakmp_upper.prefix go to state 25
+ payload.def go to state 26
+ payload.prefix go to state 27
+ algorithm.def go to state 28
+ algorithm.prefix go to state 29
+ dnshdr.def go to state 30
+ dnshdr.prefix go to state 31
+
+
+state 13
+
+ 4 define.l: define .
+
+ $default reduce using rule 4 (define.l)
+
+
+state 14
+
+ 6 define: frame.def .
+
+ $default reduce using rule 6 (define)
+
+
+state 15
+
+ 15 frame.def: frame.prefix . frame.body RC
+
+ HEADER_REF shift, and go to state 43
+
+ frame.body go to state 44
+ header.ref go to state 45
+
+
+state 16
+
+ 7 define: packet.def .
+
+ $default reduce using rule 7 (define)
+
+
+state 17
+
+ 18 packet.def: packet.prefix . packet.body RC
+
+ HEADER_REF shift, and go to state 43
+
+ packet.body go to state 46
+ header.ref go to state 47
+
+
+state 18
+
+ 8 define: header.def .
+
+ $default reduce using rule 8 (define)
+
+
+state 19
+
+ 21 header.def: header.prefix . header.body RC
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 46 (member.def.l.)
+
+ header.body go to state 52
+ member.def.l. go to state 53
+ member.def.l go to state 54
+ member.def go to state 55
+
+
+state 20
+
+ 10 define: option.def .
+
+ $default reduce using rule 10 (define)
+
+
+state 21
+
+ 24 option.def: option.prefix . option.body RC
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 46 (member.def.l.)
+
+ option.body go to state 56
+ member.def.l. go to state 57
+ member.def.l go to state 54
+ member.def go to state 55
+
+
+state 22
+
+ 11 define: upper.def .
+
+ $default reduce using rule 11 (define)
+
+
+state 23
+
+ 27 upper.def: upper.prefix . upper.body RC
+
+ HEADER_REF shift, and go to state 43
+
+ $default reduce using rule 60 (header.ref.)
+
+ upper.body go to state 58
+ header.ref. go to state 59
+ header.ref go to state 60
+
+
+state 24
+
+ 12 define: isakmp_upper.def .
+
+ $default reduce using rule 12 (define)
+
+
+state 25
+
+ 30 isakmp_upper.def: isakmp_upper.prefix . isakmp_upper.body RC
+
+ HEADER_REF shift, and go to state 43
+
+ isakmp_upper.body go to state 61
+ header.ref go to state 62
+
+
+state 26
+
+ 13 define: payload.def .
+
+ $default reduce using rule 13 (define)
+
+
+state 27
+
+ 33 payload.def: payload.prefix . payload.body RC
+
+ DATA shift, and go to state 63
+
+ payload.body go to state 64
+ data.def.l go to state 65
+ data.def go to state 66
+
+
+state 28
+
+ 14 define: algorithm.def .
+
+ $default reduce using rule 14 (define)
+
+
+state 29
+
+ 36 algorithm.def: algorithm.prefix . algorithm.body RC
+
+ ALGOMEM_PAD shift, and go to state 67
+ ALGOMEM_CRYPT shift, and go to state 68
+ ALGOMEM_AUTH shift, and go to state 69
+
+ $default reduce using rule 52 (algomem.def.l.)
+
+ algorithm.body go to state 70
+ algomem.def.l. go to state 71
+ algomem.def.l go to state 72
+ algomem.def go to state 73
+
+
+state 30
+
+ 9 define: dnshdr.def .
+
+ $default reduce using rule 9 (define)
+
+
+state 31
+
+ 39 dnshdr.def: dnshdr.prefix . dnshdr.body RC
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 46 (member.def.l.)
+
+ dnshdr.body go to state 74
+ member.def.l. go to state 75
+ member.def.l go to state 54
+ member.def go to state 55
+
+
+state 32
+
+ 16 frame.prefix: FRAME NAME . LC
+
+ LC shift, and go to state 76
+
+
+state 33
+
+ 19 packet.prefix: PACKET NAME . LC
+
+ LC shift, and go to state 77
+
+
+state 34
+
+ 22 header.prefix: HEADER NAME . LC
+
+ LC shift, and go to state 78
+
+
+state 35
+
+ 28 upper.prefix: UPPER NAME . LC
+
+ LC shift, and go to state 79
+
+
+state 36
+
+ 31 isakmp_upper.prefix: ISAKMP_UPPER NAME . LC
+
+ LC shift, and go to state 80
+
+
+state 37
+
+ 25 option.prefix: OPTION NAME . LC
+
+ LC shift, and go to state 81
+
+
+state 38
+
+ 34 payload.prefix: PAYLOAD NAME . LC
+
+ LC shift, and go to state 82
+
+
+state 39
+
+ 40 dnshdr.prefix: DNSHDR NAME . LC
+
+ LC shift, and go to state 83
+
+
+state 40
+
+ 37 algorithm.prefix: ALGORITHM NAME . LC
+
+ LC shift, and go to state 84
+
+
+state 41
+
+ 0 $accept: file $end .
+
+ $default accept
+
+
+state 42
+
+ 5 define.l: define.l define .
+
+ $default reduce using rule 5 (define.l)
+
+
+state 43
+
+ 75 header.ref: HEADER_REF . eq.name SM
+
+ EQ shift, and go to state 85
+
+ eq.name go to state 86
+
+
+state 44
+
+ 15 frame.def: frame.prefix frame.body . RC
+
+ RC shift, and go to state 87
+
+
+state 45
+
+ 17 frame.body: header.ref . packet.ref.
+
+ PACKET_REF shift, and go to state 88
+
+ $default reduce using rule 62 (packet.ref.)
+
+ packet.ref. go to state 89
+ packet.ref go to state 90
+
+
+state 46
+
+ 18 packet.def: packet.prefix packet.body . RC
+
+ RC shift, and go to state 91
+
+
+state 47
+
+ 20 packet.body: header.ref . extent.ref.l. upper.ref.
+
+ EXTENT_REF shift, and go to state 92
+
+ $default reduce using rule 42 (extent.ref.l.)
+
+ extent.ref.l. go to state 93
+ extent.ref.l go to state 94
+ extent.ref go to state 95
+
+
+state 48
+
+ 87 member.def: OPTION_REF . eq.opt.term SM
+
+ EQ shift, and go to state 96
+
+ eq.opt.term go to state 97
+ eq go to state 98
+
+
+state 49
+
+ 88 member.def: ALGORITHM_REF . eq.name SM
+
+ EQ shift, and go to state 85
+
+ eq.name go to state 99
+
+
+state 50
+
+ 85 member.def: MEMBER . op.mem.term SM
+ 89 | MEMBER . EQ bsafunc SM
+ 90 | MEMBER . EQ ike_p2_hashfunc SM
+ 91 | MEMBER . EQ dhcpauthfunc SM
+
+ EQ shift, and go to state 100
+ NE shift, and go to state 101
+ LT shift, and go to state 102
+ GT shift, and go to state 103
+ LE shift, and go to state 104
+ GE shift, and go to state 105
+
+ eq.mem.term go to state 106
+ cmp.value go to state 107
+ op.mem.term go to state 108
+ eq go to state 109
+ cmp go to state 110
+
+
+state 51
+
+ 86 member.def: DATA . eq.data.term SM
+
+ EQ shift, and go to state 96
+
+ eq.data.term go to state 111
+ eq go to state 112
+
+
+state 52
+
+ 21 header.def: header.prefix header.body . RC
+
+ RC shift, and go to state 113
+
+
+state 53
+
+ 23 header.body: member.def.l. . payload.ref.
+
+ PAYLOAD_REF shift, and go to state 114
+
+ $default reduce using rule 56 (payload.ref.)
+
+ payload.ref. go to state 115
+ payload.ref go to state 116
+
+
+state 54
+
+ 47 member.def.l.: member.def.l .
+ 49 member.def.l: member.def.l . member.def
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 47 (member.def.l.)
+
+ member.def go to state 117
+
+
+state 55
+
+ 48 member.def.l: member.def .
+
+ $default reduce using rule 48 (member.def.l)
+
+
+state 56
+
+ 24 option.def: option.prefix option.body . RC
+
+ RC shift, and go to state 118
+
+
+state 57
+
+ 26 option.body: member.def.l. . payload.ref.
+
+ PAYLOAD_REF shift, and go to state 114
+
+ $default reduce using rule 56 (payload.ref.)
+
+ payload.ref. go to state 119
+ payload.ref go to state 116
+
+
+state 58
+
+ 27 upper.def: upper.prefix upper.body . RC
+
+ RC shift, and go to state 120
+
+
+state 59
+
+ 29 upper.body: header.ref. . member.def.l. payload.ref.
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 46 (member.def.l.)
+
+ member.def.l. go to state 121
+ member.def.l go to state 54
+ member.def go to state 55
+
+
+state 60
+
+ 61 header.ref.: header.ref .
+
+ $default reduce using rule 61 (header.ref.)
+
+
+state 61
+
+ 30 isakmp_upper.def: isakmp_upper.prefix isakmp_upper.body . RC
+
+ RC shift, and go to state 122
+
+
+state 62
+
+ 32 isakmp_upper.body: header.ref . isakmp_encryption.ref. member.def.l. payload.ref.
+
+ ISAKMP_ENCRYPTION_REF shift, and go to state 123
+
+ $default reduce using rule 64 (isakmp_encryption.ref.)
+
+ isakmp_encryption.ref. go to state 124
+ isakmp_encryption.ref go to state 125
+
+
+state 63
+
+ 84 data.def: DATA . eq.data.term SM
+
+ EQ shift, and go to state 96
+
+ eq.data.term go to state 126
+ eq go to state 112
+
+
+state 64
+
+ 33 payload.def: payload.prefix payload.body . RC
+
+ RC shift, and go to state 127
+
+
+state 65
+
+ 35 payload.body: data.def.l .
+ 51 data.def.l: data.def.l . data.def
+
+ DATA shift, and go to state 63
+
+ $default reduce using rule 35 (payload.body)
+
+ data.def go to state 128
+
+
+state 66
+
+ 50 data.def.l: data.def .
+
+ $default reduce using rule 50 (data.def.l)
+
+
+state 67
+
+ 92 algomem.def: ALGOMEM_PAD . EQ padfunc SM
+
+ EQ shift, and go to state 129
+
+
+state 68
+
+ 93 algomem.def: ALGOMEM_CRYPT . EQ crpytfunc SM
+ 94 | ALGOMEM_CRYPT . EQ ike_crpytfunc SM
+
+ EQ shift, and go to state 130
+
+
+state 69
+
+ 95 algomem.def: ALGOMEM_AUTH . EQ authfunc SM
+
+ EQ shift, and go to state 131
+
+
+state 70
+
+ 36 algorithm.def: algorithm.prefix algorithm.body . RC
+
+ RC shift, and go to state 132
+
+
+state 71
+
+ 38 algorithm.body: algomem.def.l. .
+
+ $default reduce using rule 38 (algorithm.body)
+
+
+state 72
+
+ 53 algomem.def.l.: algomem.def.l .
+ 55 algomem.def.l: algomem.def.l . algomem.def
+
+ ALGOMEM_PAD shift, and go to state 67
+ ALGOMEM_CRYPT shift, and go to state 68
+ ALGOMEM_AUTH shift, and go to state 69
+
+ $default reduce using rule 53 (algomem.def.l.)
+
+ algomem.def go to state 133
+
+
+state 73
+
+ 54 algomem.def.l: algomem.def .
+
+ $default reduce using rule 54 (algomem.def.l)
+
+
+state 74
+
+ 39 dnshdr.def: dnshdr.prefix dnshdr.body . RC
+
+ RC shift, and go to state 134
+
+
+state 75
+
+ 41 dnshdr.body: member.def.l. . dnsqd.ref. dnsan.ref. dnsns.ref. dnsar.ref.
+
+ DNSQD_REF shift, and go to state 135
+
+ $default reduce using rule 66 (dnsqd.ref.)
+
+ dnsqd.ref. go to state 136
+ dnsqd.ref go to state 137
+
+
+state 76
+
+ 16 frame.prefix: FRAME NAME LC .
+
+ $default reduce using rule 16 (frame.prefix)
+
+
+state 77
+
+ 19 packet.prefix: PACKET NAME LC .
+
+ $default reduce using rule 19 (packet.prefix)
+
+
+state 78
+
+ 22 header.prefix: HEADER NAME LC .
+
+ $default reduce using rule 22 (header.prefix)
+
+
+state 79
+
+ 28 upper.prefix: UPPER NAME LC .
+
+ $default reduce using rule 28 (upper.prefix)
+
+
+state 80
+
+ 31 isakmp_upper.prefix: ISAKMP_UPPER NAME LC .
+
+ $default reduce using rule 31 (isakmp_upper.prefix)
+
+
+state 81
+
+ 25 option.prefix: OPTION NAME LC .
+
+ $default reduce using rule 25 (option.prefix)
+
+
+state 82
+
+ 34 payload.prefix: PAYLOAD NAME LC .
+
+ $default reduce using rule 34 (payload.prefix)
+
+
+state 83
+
+ 40 dnshdr.prefix: DNSHDR NAME LC .
+
+ $default reduce using rule 40 (dnshdr.prefix)
+
+
+state 84
+
+ 37 algorithm.prefix: ALGORITHM NAME LC .
+
+ $default reduce using rule 37 (algorithm.prefix)
+
+
+state 85
+
+ 108 eq.name: EQ . NAME
+
+ NAME shift, and go to state 138
+
+
+state 86
+
+ 75 header.ref: HEADER_REF eq.name . SM
+
+ SM shift, and go to state 139
+
+
+state 87
+
+ 15 frame.def: frame.prefix frame.body RC .
+
+ $default reduce using rule 15 (frame.def)
+
+
+state 88
+
+ 74 packet.ref: PACKET_REF . eq.name SM
+
+ EQ shift, and go to state 85
+
+ eq.name go to state 140
+
+
+state 89
+
+ 17 frame.body: header.ref packet.ref. .
+
+ $default reduce using rule 17 (frame.body)
+
+
+state 90
+
+ 63 packet.ref.: packet.ref .
+
+ $default reduce using rule 63 (packet.ref.)
+
+
+state 91
+
+ 18 packet.def: packet.prefix packet.body RC .
+
+ $default reduce using rule 18 (packet.def)
+
+
+state 92
+
+ 77 extent.ref: EXTENT_REF . eq.name SM
+
+ EQ shift, and go to state 85
+
+ eq.name go to state 141
+
+
+state 93
+
+ 20 packet.body: header.ref extent.ref.l. . upper.ref.
+
+ UPPER_REF shift, and go to state 142
+
+ $default reduce using rule 58 (upper.ref.)
+
+ upper.ref. go to state 143
+ upper.ref go to state 144
+
+
+state 94
+
+ 43 extent.ref.l.: extent.ref.l .
+ 45 extent.ref.l: extent.ref.l . extent.ref
+
+ EXTENT_REF shift, and go to state 92
+
+ $default reduce using rule 43 (extent.ref.l.)
+
+ extent.ref go to state 145
+
+
+state 95
+
+ 44 extent.ref.l: extent.ref .
+
+ $default reduce using rule 44 (extent.ref.l)
+
+
+state 96
+
+ 153 eq: EQ .
+
+ $default reduce using rule 153 (eq)
+
+
+state 97
+
+ 87 member.def: OPTION_REF eq.opt.term . SM
+
+ SM shift, and go to state 146
+
+
+state 98
+
+ 111 eq.opt.term: eq . opt.term
+
+ NAME shift, and go to state 147
+ FUNCTION shift, and go to state 148
+ ANY shift, and go to state 149
+ AUTO shift, and go to state 150
+ ZERO shift, and go to state 151
+ FILL shift, and go to state 152
+ STOP shift, and go to state 153
+
+ opt.term go to state 154
+ func_call go to state 155
+ function go to state 156
+ action go to state 157
+
+
+state 99
+
+ 88 member.def: ALGORITHM_REF eq.name . SM
+
+ SM shift, and go to state 158
+
+
+state 100
+
+ 89 member.def: MEMBER EQ . bsafunc SM
+ 90 | MEMBER EQ . ike_p2_hashfunc SM
+ 91 | MEMBER EQ . dhcpauthfunc SM
+ 153 eq: EQ .
+
+ BSAFUNC shift, and go to state 159
+ IKE_P2_HASHFUNC shift, and go to state 160
+ DHCPAUTHFUNC shift, and go to state 161
+
+ $default reduce using rule 153 (eq)
+
+ bsa_call go to state 162
+ bsafunc go to state 163
+ ike_p2_hash_call go to state 164
+ ike_p2_hashfunc go to state 165
+ dhcpauth_call go to state 166
+ dhcpauthfunc go to state 167
+
+
+state 101
+
+ 154 cmp: NE .
+
+ $default reduce using rule 154 (cmp)
+
+
+state 102
+
+ 155 cmp: LT .
+
+ $default reduce using rule 155 (cmp)
+
+
+state 103
+
+ 156 cmp: GT .
+
+ $default reduce using rule 156 (cmp)
+
+
+state 104
+
+ 157 cmp: LE .
+
+ $default reduce using rule 157 (cmp)
+
+
+state 105
+
+ 158 cmp: GE .
+
+ $default reduce using rule 158 (cmp)
+
+
+state 106
+
+ 115 op.mem.term: eq.mem.term .
+
+ $default reduce using rule 115 (op.mem.term)
+
+
+state 107
+
+ 116 op.mem.term: cmp.value .
+
+ $default reduce using rule 116 (op.mem.term)
+
+
+state 108
+
+ 85 member.def: MEMBER op.mem.term . SM
+
+ SM shift, and go to state 168
+
+
+state 109
+
+ 113 eq.mem.term: eq . mem.term
+
+ NUMBER shift, and go to state 169
+ FUNCTION shift, and go to state 148
+ ANY shift, and go to state 149
+ AUTO shift, and go to state 150
+ ZERO shift, and go to state 151
+ FILL shift, and go to state 152
+ STOP shift, and go to state 153
+
+ mem.term go to state 170
+ func_call go to state 155
+ function go to state 171
+ action go to state 172
+
+
+state 110
+
+ 114 cmp.value: cmp . cmp.term
+
+ NUMBER shift, and go to state 173
+
+ cmp.term go to state 174
+
+
+state 111
+
+ 86 member.def: DATA eq.data.term . SM
+
+ SM shift, and go to state 175
+
+
+state 112
+
+ 112 eq.data.term: eq . data.term
+
+ NUMBER shift, and go to state 176
+ FUNCTION shift, and go to state 148
+ LC shift, and go to state 177
+
+ data.term go to state 178
+ values.prefix go to state 179
+ values go to state 180
+ func_call go to state 155
+ function go to state 181
+
+
+state 113
+
+ 21 header.def: header.prefix header.body RC .
+
+ $default reduce using rule 21 (header.def)
+
+
+state 114
+
+ 79 payload.ref: PAYLOAD_REF . eq.anyname SM
+
+ EQ shift, and go to state 182
+
+ eq.anyname go to state 183
+
+
+state 115
+
+ 23 header.body: member.def.l. payload.ref. .
+
+ $default reduce using rule 23 (header.body)
+
+
+state 116
+
+ 57 payload.ref.: payload.ref .
+
+ $default reduce using rule 57 (payload.ref.)
+
+
+state 117
+
+ 49 member.def.l: member.def.l member.def .
+
+ $default reduce using rule 49 (member.def.l)
+
+
+state 118
+
+ 24 option.def: option.prefix option.body RC .
+
+ $default reduce using rule 24 (option.def)
+
+
+state 119
+
+ 26 option.body: member.def.l. payload.ref. .
+
+ $default reduce using rule 26 (option.body)
+
+
+state 120
+
+ 27 upper.def: upper.prefix upper.body RC .
+
+ $default reduce using rule 27 (upper.def)
+
+
+state 121
+
+ 29 upper.body: header.ref. member.def.l. . payload.ref.
+
+ PAYLOAD_REF shift, and go to state 114
+
+ $default reduce using rule 56 (payload.ref.)
+
+ payload.ref. go to state 184
+ payload.ref go to state 116
+
+
+state 122
+
+ 30 isakmp_upper.def: isakmp_upper.prefix isakmp_upper.body RC .
+
+ $default reduce using rule 30 (isakmp_upper.def)
+
+
+state 123
+
+ 76 isakmp_encryption.ref: ISAKMP_ENCRYPTION_REF . eq.name SM
+
+ EQ shift, and go to state 85
+
+ eq.name go to state 185
+
+
+state 124
+
+ 32 isakmp_upper.body: header.ref isakmp_encryption.ref. . member.def.l. payload.ref.
+
+ OPTION_REF shift, and go to state 48
+ ALGORITHM_REF shift, and go to state 49
+ MEMBER shift, and go to state 50
+ DATA shift, and go to state 51
+
+ $default reduce using rule 46 (member.def.l.)
+
+ member.def.l. go to state 186
+ member.def.l go to state 54
+ member.def go to state 55
+
+
+state 125
+
+ 65 isakmp_encryption.ref.: isakmp_encryption.ref .
+
+ $default reduce using rule 65 (isakmp_encryption.ref.)
+
+
+state 126
+
+ 84 data.def: DATA eq.data.term . SM
+
+ SM shift, and go to state 187
+
+
+state 127
+
+ 33 payload.def: payload.prefix payload.body RC .
+
+ $default reduce using rule 33 (payload.def)
+
+
+state 128
+
+ 51 data.def.l: data.def.l data.def .
+
+ $default reduce using rule 51 (data.def.l)
+
+
+state 129
+
+ 92 algomem.def: ALGOMEM_PAD EQ . padfunc SM
+
+ PADFUNC shift, and go to state 188
+
+ padfunc go to state 189
+
+
+state 130
+
+ 93 algomem.def: ALGOMEM_CRYPT EQ . crpytfunc SM
+ 94 | ALGOMEM_CRYPT EQ . ike_crpytfunc SM
+
+ CRYPTFUNC shift, and go to state 190
+ IKE_CRYPTFUNC shift, and go to state 191
+
+ crpyt_call go to state 192
+ crpytfunc go to state 193
+ ike_crpyt_call go to state 194
+ ike_crpytfunc go to state 195
+
+
+state 131
+
+ 95 algomem.def: ALGOMEM_AUTH EQ . authfunc SM
+
+ AUTHFUNC shift, and go to state 196
+
+ auth_call go to state 197
+ authfunc go to state 198
+
+
+state 132
+
+ 36 algorithm.def: algorithm.prefix algorithm.body RC .
+
+ $default reduce using rule 36 (algorithm.def)
+
+
+state 133
+
+ 55 algomem.def.l: algomem.def.l algomem.def .
+
+ $default reduce using rule 55 (algomem.def.l)
+
+
+state 134
+
+ 39 dnshdr.def: dnshdr.prefix dnshdr.body RC .
+
+ $default reduce using rule 39 (dnshdr.def)
+
+
+state 135
+
+ 80 dnsqd.ref: DNSQD_REF . eq.opt.term SM
+
+ EQ shift, and go to state 96
+
+ eq.opt.term go to state 199
+ eq go to state 98
+
+
+state 136
+
+ 41 dnshdr.body: member.def.l. dnsqd.ref. . dnsan.ref. dnsns.ref. dnsar.ref.
+
+ DNSAN_REF shift, and go to state 200
+
+ $default reduce using rule 68 (dnsan.ref.)
+
+ dnsan.ref. go to state 201
+ dnsan.ref go to state 202
+
+
+state 137
+
+ 67 dnsqd.ref.: dnsqd.ref .
+
+ $default reduce using rule 67 (dnsqd.ref.)
+
+
+state 138
+
+ 108 eq.name: EQ NAME .
+
+ $default reduce using rule 108 (eq.name)
+
+
+state 139
+
+ 75 header.ref: HEADER_REF eq.name SM .
+
+ $default reduce using rule 75 (header.ref)
+
+
+state 140
+
+ 74 packet.ref: PACKET_REF eq.name . SM
+
+ SM shift, and go to state 203
+
+
+state 141
+
+ 77 extent.ref: EXTENT_REF eq.name . SM
+
+ SM shift, and go to state 204
+
+
+state 142
+
+ 78 upper.ref: UPPER_REF . eq.upper.term SM
+
+ EQ shift, and go to state 96
+
+ eq.upper.term go to state 205
+ eq go to state 206
+
+
+state 143
+
+ 20 packet.body: header.ref extent.ref.l. upper.ref. .
+
+ $default reduce using rule 20 (packet.body)
+
+
+state 144
+
+ 59 upper.ref.: upper.ref .
+
+ $default reduce using rule 59 (upper.ref.)
+
+
+state 145
+
+ 45 extent.ref.l: extent.ref.l extent.ref .
+
+ $default reduce using rule 45 (extent.ref.l)
+
+
+state 146
+
+ 87 member.def: OPTION_REF eq.opt.term SM .
+
+ $default reduce using rule 87 (member.def)
+
+
+state 147
+
+ 102 opt.term: NAME .
+
+ $default reduce using rule 102 (opt.term)
+
+
+state 148
+
+ 133 func_call: FUNCTION . LP
+
+ LP shift, and go to state 207
+
+
+state 149
+
+ 148 action: ANY .
+
+ $default reduce using rule 148 (action)
+
+
+state 150
+
+ 149 action: AUTO .
+
+ $default reduce using rule 149 (action)
+
+
+state 151
+
+ 150 action: ZERO .
+
+ $default reduce using rule 150 (action)
+
+
+state 152
+
+ 151 action: FILL .
+
+ $default reduce using rule 151 (action)
+
+
+state 153
+
+ 152 action: STOP .
+
+ $default reduce using rule 152 (action)
+
+
+state 154
+
+ 111 eq.opt.term: eq opt.term .
+
+ $default reduce using rule 111 (eq.opt.term)
+
+
+state 155
+
+ 134 function: func_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 212
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 156
+
+ 104 opt.term: function .
+
+ $default reduce using rule 104 (opt.term)
+
+
+state 157
+
+ 103 opt.term: action .
+
+ $default reduce using rule 103 (opt.term)
+
+
+state 158
+
+ 88 member.def: ALGORITHM_REF eq.name SM .
+
+ $default reduce using rule 88 (member.def)
+
+
+state 159
+
+ 135 bsa_call: BSAFUNC . LP
+
+ LP shift, and go to state 215
+
+
+state 160
+
+ 137 ike_p2_hash_call: IKE_P2_HASHFUNC . LP
+
+ LP shift, and go to state 216
+
+
+state 161
+
+ 139 dhcpauth_call: DHCPAUTHFUNC . LP
+
+ LP shift, and go to state 217
+
+
+state 162
+
+ 136 bsafunc: bsa_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 218
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 163
+
+ 89 member.def: MEMBER EQ bsafunc . SM
+
+ SM shift, and go to state 219
+
+
+state 164
+
+ 138 ike_p2_hashfunc: ike_p2_hash_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 220
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 165
+
+ 90 member.def: MEMBER EQ ike_p2_hashfunc . SM
+
+ SM shift, and go to state 221
+
+
+state 166
+
+ 140 dhcpauthfunc: dhcpauth_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 222
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 167
+
+ 91 member.def: MEMBER EQ dhcpauthfunc . SM
+
+ SM shift, and go to state 223
+
+
+state 168
+
+ 85 member.def: MEMBER op.mem.term SM .
+
+ $default reduce using rule 85 (member.def)
+
+
+state 169
+
+ 105 mem.term: NUMBER .
+
+ $default reduce using rule 105 (mem.term)
+
+
+state 170
+
+ 113 eq.mem.term: eq mem.term .
+
+ $default reduce using rule 113 (eq.mem.term)
+
+
+state 171
+
+ 107 mem.term: function .
+
+ $default reduce using rule 107 (mem.term)
+
+
+state 172
+
+ 106 mem.term: action .
+
+ $default reduce using rule 106 (mem.term)
+
+
+state 173
+
+ 96 cmp.term: NUMBER .
+
+ $default reduce using rule 96 (cmp.term)
+
+
+state 174
+
+ 114 cmp.value: cmp cmp.term .
+
+ $default reduce using rule 114 (cmp.value)
+
+
+state 175
+
+ 86 member.def: DATA eq.data.term SM .
+
+ $default reduce using rule 86 (member.def)
+
+
+state 176
+
+ 97 data.term: NUMBER .
+
+ $default reduce using rule 97 (data.term)
+
+
+state 177
+
+ 117 values.prefix: LC .
+
+ $default reduce using rule 117 (values.prefix)
+
+
+state 178
+
+ 112 eq.data.term: eq data.term .
+
+ $default reduce using rule 112 (eq.data.term)
+
+
+state 179
+
+ 118 values: values.prefix . number.l. RC
+
+ NUMBER shift, and go to state 224
+
+ $default reduce using rule 119 (number.l.)
+
+ number.l. go to state 225
+ number.l go to state 226
+
+
+state 180
+
+ 98 data.term: values .
+
+ $default reduce using rule 98 (data.term)
+
+
+state 181
+
+ 99 data.term: function .
+
+ $default reduce using rule 99 (data.term)
+
+
+state 182
+
+ 109 eq.anyname: EQ . anyname
+
+ NAME shift, and go to state 227
+ ANY shift, and go to state 228
+
+ anyname go to state 229
+
+
+state 183
+
+ 79 payload.ref: PAYLOAD_REF eq.anyname . SM
+
+ SM shift, and go to state 230
+
+
+state 184
+
+ 29 upper.body: header.ref. member.def.l. payload.ref. .
+
+ $default reduce using rule 29 (upper.body)
+
+
+state 185
+
+ 76 isakmp_encryption.ref: ISAKMP_ENCRYPTION_REF eq.name . SM
+
+ SM shift, and go to state 231
+
+
+state 186
+
+ 32 isakmp_upper.body: header.ref isakmp_encryption.ref. member.def.l. . payload.ref.
+
+ PAYLOAD_REF shift, and go to state 114
+
+ $default reduce using rule 56 (payload.ref.)
+
+ payload.ref. go to state 232
+ payload.ref go to state 116
+
+
+state 187
+
+ 84 data.def: DATA eq.data.term SM .
+
+ $default reduce using rule 84 (data.def)
+
+
+state 188
+
+ 141 padfunc: PADFUNC . LP RP
+
+ LP shift, and go to state 233
+
+
+state 189
+
+ 92 algomem.def: ALGOMEM_PAD EQ padfunc . SM
+
+ SM shift, and go to state 234
+
+
+state 190
+
+ 142 crpyt_call: CRYPTFUNC . LP
+
+ LP shift, and go to state 235
+
+
+state 191
+
+ 144 ike_crpyt_call: IKE_CRYPTFUNC . LP
+
+ LP shift, and go to state 236
+
+
+state 192
+
+ 143 crpytfunc: crpyt_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 237
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 193
+
+ 93 algomem.def: ALGOMEM_CRYPT EQ crpytfunc . SM
+
+ SM shift, and go to state 238
+
+
+state 194
+
+ 145 ike_crpytfunc: ike_crpyt_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 239
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 195
+
+ 94 algomem.def: ALGOMEM_CRYPT EQ ike_crpytfunc . SM
+
+ SM shift, and go to state 240
+
+
+state 196
+
+ 146 auth_call: AUTHFUNC . LP
+
+ LP shift, and go to state 241
+
+
+state 197
+
+ 147 authfunc: auth_call . arg.l. RP
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ $default reduce using rule 129 (arg.l.)
+
+ arg.term go to state 211
+ arg.l. go to state 242
+ arg.l go to state 213
+ func_call go to state 155
+ function go to state 214
+
+
+state 198
+
+ 95 algomem.def: ALGOMEM_AUTH EQ authfunc . SM
+
+ SM shift, and go to state 243
+
+
+state 199
+
+ 80 dnsqd.ref: DNSQD_REF eq.opt.term . SM
+
+ SM shift, and go to state 244
+
+
+state 200
+
+ 81 dnsan.ref: DNSAN_REF . eq.opt.term SM
+
+ EQ shift, and go to state 96
+
+ eq.opt.term go to state 245
+ eq go to state 98
+
+
+state 201
+
+ 41 dnshdr.body: member.def.l. dnsqd.ref. dnsan.ref. . dnsns.ref. dnsar.ref.
+
+ DNSNS_REF shift, and go to state 246
+
+ $default reduce using rule 70 (dnsns.ref.)
+
+ dnsns.ref. go to state 247
+ dnsns.ref go to state 248
+
+
+state 202
+
+ 69 dnsan.ref.: dnsan.ref .
+
+ $default reduce using rule 69 (dnsan.ref.)
+
+
+state 203
+
+ 74 packet.ref: PACKET_REF eq.name SM .
+
+ $default reduce using rule 74 (packet.ref)
+
+
+state 204
+
+ 77 extent.ref: EXTENT_REF eq.name SM .
+
+ $default reduce using rule 77 (extent.ref)
+
+
+state 205
+
+ 78 upper.ref: UPPER_REF eq.upper.term . SM
+
+ SM shift, and go to state 249
+
+
+state 206
+
+ 110 eq.upper.term: eq . upper.term
+
+ NAME shift, and go to state 250
+ ANY shift, and go to state 149
+ AUTO shift, and go to state 150
+ ZERO shift, and go to state 151
+ FILL shift, and go to state 152
+ STOP shift, and go to state 153
+
+ upper.term go to state 251
+ action go to state 252
+
+
+state 207
+
+ 133 func_call: FUNCTION LP .
+
+ $default reduce using rule 133 (func_call)
+
+
+state 208
+
+ 127 arg.term: NAME .
+
+ $default reduce using rule 127 (arg.term)
+
+
+state 209
+
+ 126 arg.term: STRING .
+
+ $default reduce using rule 126 (arg.term)
+
+
+state 210
+
+ 125 arg.term: NUMBER .
+
+ $default reduce using rule 125 (arg.term)
+
+
+state 211
+
+ 131 arg.l: arg.term .
+
+ $default reduce using rule 131 (arg.l)
+
+
+state 212
+
+ 134 function: func_call arg.l. . RP
+
+ RP shift, and go to state 253
+
+
+state 213
+
+ 130 arg.l.: arg.l .
+ 132 arg.l: arg.l . CM arg.term
+
+ CM shift, and go to state 254
+
+ $default reduce using rule 130 (arg.l.)
+
+
+state 214
+
+ 128 arg.term: function .
+
+ $default reduce using rule 128 (arg.term)
+
+
+state 215
+
+ 135 bsa_call: BSAFUNC LP .
+
+ $default reduce using rule 135 (bsa_call)
+
+
+state 216
+
+ 137 ike_p2_hash_call: IKE_P2_HASHFUNC LP .
+
+ $default reduce using rule 137 (ike_p2_hash_call)
+
+
+state 217
+
+ 139 dhcpauth_call: DHCPAUTHFUNC LP .
+
+ $default reduce using rule 139 (dhcpauth_call)
+
+
+state 218
+
+ 136 bsafunc: bsa_call arg.l. . RP
+
+ RP shift, and go to state 255
+
+
+state 219
+
+ 89 member.def: MEMBER EQ bsafunc SM .
+
+ $default reduce using rule 89 (member.def)
+
+
+state 220
+
+ 138 ike_p2_hashfunc: ike_p2_hash_call arg.l. . RP
+
+ RP shift, and go to state 256
+
+
+state 221
+
+ 90 member.def: MEMBER EQ ike_p2_hashfunc SM .
+
+ $default reduce using rule 90 (member.def)
+
+
+state 222
+
+ 140 dhcpauthfunc: dhcpauth_call arg.l. . RP
+
+ RP shift, and go to state 257
+
+
+state 223
+
+ 91 member.def: MEMBER EQ dhcpauthfunc SM .
+
+ $default reduce using rule 91 (member.def)
+
+
+state 224
+
+ 121 number.l: NUMBER .
+
+ $default reduce using rule 121 (number.l)
+
+
+state 225
+
+ 118 values: values.prefix number.l. . RC
+
+ RC shift, and go to state 258
+
+
+state 226
+
+ 120 number.l.: number.l .
+ 122 number.l: number.l . CM NUMBER
+
+ CM shift, and go to state 259
+
+ $default reduce using rule 120 (number.l.)
+
+
+state 227
+
+ 124 anyname: NAME .
+
+ $default reduce using rule 124 (anyname)
+
+
+state 228
+
+ 123 anyname: ANY .
+
+ $default reduce using rule 123 (anyname)
+
+
+state 229
+
+ 109 eq.anyname: EQ anyname .
+
+ $default reduce using rule 109 (eq.anyname)
+
+
+state 230
+
+ 79 payload.ref: PAYLOAD_REF eq.anyname SM .
+
+ $default reduce using rule 79 (payload.ref)
+
+
+state 231
+
+ 76 isakmp_encryption.ref: ISAKMP_ENCRYPTION_REF eq.name SM .
+
+ $default reduce using rule 76 (isakmp_encryption.ref)
+
+
+state 232
+
+ 32 isakmp_upper.body: header.ref isakmp_encryption.ref. member.def.l. payload.ref. .
+
+ $default reduce using rule 32 (isakmp_upper.body)
+
+
+state 233
+
+ 141 padfunc: PADFUNC LP . RP
+
+ RP shift, and go to state 260
+
+
+state 234
+
+ 92 algomem.def: ALGOMEM_PAD EQ padfunc SM .
+
+ $default reduce using rule 92 (algomem.def)
+
+
+state 235
+
+ 142 crpyt_call: CRYPTFUNC LP .
+
+ $default reduce using rule 142 (crpyt_call)
+
+
+state 236
+
+ 144 ike_crpyt_call: IKE_CRYPTFUNC LP .
+
+ $default reduce using rule 144 (ike_crpyt_call)
+
+
+state 237
+
+ 143 crpytfunc: crpyt_call arg.l. . RP
+
+ RP shift, and go to state 261
+
+
+state 238
+
+ 93 algomem.def: ALGOMEM_CRYPT EQ crpytfunc SM .
+
+ $default reduce using rule 93 (algomem.def)
+
+
+state 239
+
+ 145 ike_crpytfunc: ike_crpyt_call arg.l. . RP
+
+ RP shift, and go to state 262
+
+
+state 240
+
+ 94 algomem.def: ALGOMEM_CRYPT EQ ike_crpytfunc SM .
+
+ $default reduce using rule 94 (algomem.def)
+
+
+state 241
+
+ 146 auth_call: AUTHFUNC LP .
+
+ $default reduce using rule 146 (auth_call)
+
+
+state 242
+
+ 147 authfunc: auth_call arg.l. . RP
+
+ RP shift, and go to state 263
+
+
+state 243
+
+ 95 algomem.def: ALGOMEM_AUTH EQ authfunc SM .
+
+ $default reduce using rule 95 (algomem.def)
+
+
+state 244
+
+ 80 dnsqd.ref: DNSQD_REF eq.opt.term SM .
+
+ $default reduce using rule 80 (dnsqd.ref)
+
+
+state 245
+
+ 81 dnsan.ref: DNSAN_REF eq.opt.term . SM
+
+ SM shift, and go to state 264
+
+
+state 246
+
+ 82 dnsns.ref: DNSNS_REF . eq.opt.term SM
+
+ EQ shift, and go to state 96
+
+ eq.opt.term go to state 265
+ eq go to state 98
+
+
+state 247
+
+ 41 dnshdr.body: member.def.l. dnsqd.ref. dnsan.ref. dnsns.ref. . dnsar.ref.
+
+ DNSAR_REF shift, and go to state 266
+
+ $default reduce using rule 72 (dnsar.ref.)
+
+ dnsar.ref. go to state 267
+ dnsar.ref go to state 268
+
+
+state 248
+
+ 71 dnsns.ref.: dnsns.ref .
+
+ $default reduce using rule 71 (dnsns.ref.)
+
+
+state 249
+
+ 78 upper.ref: UPPER_REF eq.upper.term SM .
+
+ $default reduce using rule 78 (upper.ref)
+
+
+state 250
+
+ 100 upper.term: NAME .
+
+ $default reduce using rule 100 (upper.term)
+
+
+state 251
+
+ 110 eq.upper.term: eq upper.term .
+
+ $default reduce using rule 110 (eq.upper.term)
+
+
+state 252
+
+ 101 upper.term: action .
+
+ $default reduce using rule 101 (upper.term)
+
+
+state 253
+
+ 134 function: func_call arg.l. RP .
+
+ $default reduce using rule 134 (function)
+
+
+state 254
+
+ 132 arg.l: arg.l CM . arg.term
+
+ NAME shift, and go to state 208
+ STRING shift, and go to state 209
+ NUMBER shift, and go to state 210
+ FUNCTION shift, and go to state 148
+
+ arg.term go to state 269
+ func_call go to state 155
+ function go to state 214
+
+
+state 255
+
+ 136 bsafunc: bsa_call arg.l. RP .
+
+ $default reduce using rule 136 (bsafunc)
+
+
+state 256
+
+ 138 ike_p2_hashfunc: ike_p2_hash_call arg.l. RP .
+
+ $default reduce using rule 138 (ike_p2_hashfunc)
+
+
+state 257
+
+ 140 dhcpauthfunc: dhcpauth_call arg.l. RP .
+
+ $default reduce using rule 140 (dhcpauthfunc)
+
+
+state 258
+
+ 118 values: values.prefix number.l. RC .
+
+ $default reduce using rule 118 (values)
+
+
+state 259
+
+ 122 number.l: number.l CM . NUMBER
+
+ NUMBER shift, and go to state 270
+
+
+state 260
+
+ 141 padfunc: PADFUNC LP RP .
+
+ $default reduce using rule 141 (padfunc)
+
+
+state 261
+
+ 143 crpytfunc: crpyt_call arg.l. RP .
+
+ $default reduce using rule 143 (crpytfunc)
+
+
+state 262
+
+ 145 ike_crpytfunc: ike_crpyt_call arg.l. RP .
+
+ $default reduce using rule 145 (ike_crpytfunc)
+
+
+state 263
+
+ 147 authfunc: auth_call arg.l. RP .
+
+ $default reduce using rule 147 (authfunc)
+
+
+state 264
+
+ 81 dnsan.ref: DNSAN_REF eq.opt.term SM .
+
+ $default reduce using rule 81 (dnsan.ref)
+
+
+state 265
+
+ 82 dnsns.ref: DNSNS_REF eq.opt.term . SM
+
+ SM shift, and go to state 271
+
+
+state 266
+
+ 83 dnsar.ref: DNSAR_REF . eq.opt.term SM
+
+ EQ shift, and go to state 96
+
+ eq.opt.term go to state 272
+ eq go to state 98
+
+
+state 267
+
+ 41 dnshdr.body: member.def.l. dnsqd.ref. dnsan.ref. dnsns.ref. dnsar.ref. .
+
+ $default reduce using rule 41 (dnshdr.body)
+
+
+state 268
+
+ 73 dnsar.ref.: dnsar.ref .
+
+ $default reduce using rule 73 (dnsar.ref.)
+
+
+state 269
+
+ 132 arg.l: arg.l CM arg.term .
+
+ $default reduce using rule 132 (arg.l)
+
+
+state 270
+
+ 122 number.l: number.l CM NUMBER .
+
+ $default reduce using rule 122 (number.l)
+
+
+state 271
+
+ 82 dnsns.ref: DNSNS_REF eq.opt.term SM .
+
+ $default reduce using rule 82 (dnsns.ref)
+
+
+state 272
+
+ 83 dnsar.ref: DNSAR_REF eq.opt.term . SM
+
+ SM shift, and go to state 273
+
+
+state 273
+
+ 83 dnsar.ref: DNSAR_REF eq.opt.term SM .
+
+ $default reduce using rule 83 (dnsar.ref)
diff -urN tahi-linux-3.0.12/lib/pkt/PzParse.y tahi-linux-3.0.12-linux/lib/pkt/PzParse.y
--- tahi-linux-3.0.12/lib/pkt/PzParse.y 2005-05-09 11:35:25.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/PzParse.y 2007-12-09 23:19:59.000000000 +0100
@@ -182,7 +182,11 @@
#define YYPARSE_PARAM_TYPE LxLexer&
#define yyparse(lex)parse(lex)
#else
+#if ! defined(__linux__)
#define yyparse()parse(LxLexer& lexer)
+#else
+#define yyparse(void)parse(LxLexer& lexer)
+#endif
#endif
#define yylex()lexer.lex(compound_)
#define yyerror lexer.yaccError
diff -urN tahi-linux-3.0.12/lib/pkt/RAFControl.h tahi-linux-3.0.12-linux/lib/pkt/RAFControl.h
--- tahi-linux-3.0.12/lib/pkt/RAFControl.h 2001-10-05 13:41:20.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/RAFControl.h 2007-12-09 23:19:59.000000000 +0100
@@ -70,7 +70,8 @@
CSTR reverseEvaluate(const McObject&,PvOctets&,bool&);
bool evaluateWith(RObject*,WObject*) const;
WObject* evaluateAlgorithm(RObject*) const;
- WObject* RAFControl::evaluate(RObject*);
+ // WObject* RAFControl::evaluate(RObject*);
+ WObject* evaluate(RObject*);
virtual void reset();
void applyFrame(const WObject* w) const;
const WAlgorithm* appliedAlgorithm() const;
diff -urN tahi-linux-3.0.12/lib/pkt/RunEnv.cc tahi-linux-3.0.12-linux/lib/pkt/RunEnv.cc
--- tahi-linux-3.0.12/lib/pkt/RunEnv.cc 2003-10-23 06:37:31.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/pkt/RunEnv.cc 2007-12-09 23:19:59.000000000 +0100
@@ -52,6 +52,9 @@
#include <sys/param.h>
#include <sys/time.h>
#include <unistd.h>
+#if defined(__linux__)
+#include <time.h>
+#endif
IfName::IfName(CSTR n,CSTR i,CSTR e):CmCString(n),interface_(i),ether_(e) {}
IfName::~IfName() {}
IfName* IfName::create(CSTR n,CSTR i,CSTR m,CSTR file,uint32_t line) {
diff -urN tahi-linux-3.0.12/lib/Pz/crypto/sha2/sha2.c tahi-linux-3.0.12-linux/lib/Pz/crypto/sha2/sha2.c
--- tahi-linux-3.0.12/lib/Pz/crypto/sha2/sha2.c 2003-04-18 12:46:37.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Pz/crypto/sha2/sha2.c 2007-12-09 23:19:58.000000000 +0100
@@ -39,7 +39,11 @@
#include <sys/types.h>
#include <sys/time.h>
+#if defined(__linux__)
+#include <endian.h>
+#else
#include <machine/endian.h>
+#endif
#include <crypto/sha2/sha2.h>
#include <openssl/evp.h>
Dateien tahi-linux-3.0.12/lib/Pz/libPz2.so und tahi-linux-3.0.12-linux/lib/Pz/libPz2.so sind verschieden.
diff -urN tahi-linux-3.0.12/lib/Pz/Makefile tahi-linux-3.0.12-linux/lib/Pz/Makefile
--- tahi-linux-3.0.12/lib/Pz/Makefile 2007-03-07 12:04:57.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/Pz/Makefile 2007-12-09 23:19:57.000000000 +0100
@@ -1,4 +1,8 @@
+CC=g++
+CC2=cc
+Cm=../Cm/
LIB= Pz
+LIB2= Pz2
SRCS= DmObject.cc ItPosition.cc McAH.cc McARP.cc McAlgorithm.cc \
McDHCPv6.cc McDNS.cc McESP.cc McEther.cc McICMPv4.cc \
McICMPv6.cc McIGMP.cc McIKE.cc McIPv4.cc McIPv6.cc McInit.cc \
@@ -8,11 +12,11 @@
MmHeader.cc MmObject.cc MvArgCheck.cc MvFunction.cc \
PAlgorithm.cc PControl.cc PObject.cc PcObject.cc PlObject.cc \
PrItem.cc PvAction.cc PvAutoItem.cc PvIfName.cc PvName.cc \
- PvObject.cc PvOctets.cc RObject.cc WObject.cc hmac.c \
- rijndael-alg-fst.c rijndael-api-fst.c sha2.c
+ PvObject.cc PvOctets.cc RObject.cc WObject.cc crypto/hmac/hmac.c
+SRCS2= crypto/rijndael/rijndael-alg-fst.c crypto/rijndael/rijndael-api-fst.c crypto/sha2/sha2.c
-CXXFLAGS+= -O0 -I$(Cm) -I.
-CFLAGS+= -I$(Cm) -I.
+CXXFLAGS+= -O0 -I$(Cm) -I. -pipe -g -DYYDEBUG -Wall -Woverloaded-virtual -fno-strict-aliasing
+CFLAGS+= -I$(Cm) -I. -pipe -g -DYYDEBUG -Wall -Woverloaded-virtual -fno-strict-aliasing
#CXXFLAGS= -pipe -g -Wall -I./ -I$(Cm)
#CFLAGS= -pipe -g -Wall -I./ -I$(Cm) -I/usr/local/include
@@ -35,33 +39,34 @@
# RFC 1905, Protocol Operations for SNMPv2
# CXXFLAGS+= -DNOT_USE_SNMP
-# RFC 3376, IGMPv3
-# CXXFLAGS+= -DNOT_USE_IGMPV3_QUERY
-
-# RFC 3810, MLDv2 for IPv6
-# CXXFLAGS+= -DUSE_MLDV2_QUERY
-
# RFC 3775, Mobility Support in IPv6
# CXXFLAGS+= -DRR_DBG
-# RFC 3315, DHCP for IPv6
-# CXXFLAGS+= -DDHCP_DBG
+# RFC 3376, IGMPv3
+# CXXFLAGS+= -DNOT_USE_IGMPV3_QUERY
# RFC 3768, VRRP
# draft-ietf-vrrp-ipv6-spec-06.txt, VRRP for IPv6
# CXXFLAGS+= -DVRRP_DBG
+# RFC 3810, MLDv2 for IPv6
+# CXXFLAGS+= -DUSE_MLDV2_QUERY
+
# RFC 2408, ISAKMP
# CXXFLAGS+= -DISAKMP_DBG
-# RFC 3566, AES-XCBC-MAC-96 Algorithm
-# CXXFLAGS+= -DAESXCBC_DBG
-
-# RFC 3686, Using AES Counter Mode With IPsec ESP
-# CXXFLAGS+= -DAESCTR_DBG
-
-# RFC 4303, IP Encapsulating Security Payload (ESP)
-# 2.2.1. Extended (64-bit) Sequence Number
-# CXXFLAGS+= -DESN_DBG
-
-.include "bsd.lib.mk"
+MKLINT=no
+# .include "bsd.lib.mk"
+all: Pz
+
+# you must be root for copying
+Pz:
+ $(CC) $(SRCS) $(CXXFLAGS) -shared -fPIC -o $(LIB)
+ cp $(LIB) /usr/lib/lib$(LIB).so
+ $(CC2) -c $(SRCS2) $(LIB) $(CFLAGS) -fPIC
+ ld -shared -soname libPz2.so -o libPz2.so -lc -lPz rijndael-alg-fst.o rijndael-api-fst.o sha2.o
+ cp libPz2.so /usr/lib
+
+clean:
+ - rm Pz* *.o libPz*
+ - rm /usr/lib/libPz*
diff -urN tahi-linux-3.0.12/lib/Pz/McIKE.h tahi-linux-3.0.12-linux/lib/Pz/McIKE.h
--- tahi-linux-3.0.12/lib/Pz/McIKE.h 2005-05-09 11:35:23.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Pz/McIKE.h 2007-12-09 23:19:58.000000000 +0100
@@ -398,7 +398,8 @@
class PaISAKMP: public PaESP {
public:
- PaISAKMP::PaISAKMP(const MObject *m, CSTR st, int l):
+ // PaISAKMP::PaISAKMP(const MObject *m, CSTR st, int l):
+ PaISAKMP(const MObject *m, CSTR st, int l):
PaESP(m, st, l) {};
virtual ~PaISAKMP() {}
diff -urN tahi-linux-3.0.12/lib/Pz/McSub.h tahi-linux-3.0.12-linux/lib/Pz/McSub.h
--- tahi-linux-3.0.12/lib/Pz/McSub.h 2004-09-22 09:31:37.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Pz/McSub.h 2007-12-09 23:19:58.000000000 +0100
@@ -49,7 +49,8 @@
#include "MmObject.h"
#include <sys/time.h> //for bpf.h
-#include <net/bpf.h>
+// #include <net/bpf.h>
+#include <pcap-bpf.h>
#include <sys/socket.h>
class PControl;
diff -urN tahi-linux-3.0.12/lib/Pz/MfAlgorithm.cc tahi-linux-3.0.12-linux/lib/Pz/MfAlgorithm.cc
--- tahi-linux-3.0.12/lib/Pz/MfAlgorithm.cc 2007-05-25 03:51:45.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Pz/MfAlgorithm.cc 2007-12-09 23:19:58.000000000 +0100
@@ -217,6 +217,7 @@
scheduleKeys(key,schd);
BF_cbc_encrypt(is,os,l,&schd,iv,DES_DECRYPT);}
+#if ! defined(__linux__)
#include <openssl/rc5.h>
//----------------------------------------------------------------------
// RC5 CRYPT ALGORITHM
@@ -234,6 +235,7 @@
RC5_32_KEY schd;
scheduleKeys(key,schd);
RC5_32_cbc_encrypt(is,os,l,&schd,iv,DES_DECRYPT);}
+#endif
#include <openssl/cast.h>
//----------------------------------------------------------------------
@@ -589,8 +591,10 @@
MfDESCBC::~MfDESCBC() {}
MfBLOWFISH::MfBLOWFISH(CSTR s,uint8_t k,uint8_t i,uint8_t a):MfCryptKey(s,k,i,a) {}
MfBLOWFISH::~MfBLOWFISH() {}
+#if ! defined(__linux__)
MfRC5::MfRC5(CSTR s,uint8_t k,uint8_t i,uint8_t a):MfCryptKey(s,k,i,a) {}
MfRC5::~MfRC5() {}
+#endif
MfCAST128::MfCAST128(CSTR s,uint8_t k,uint8_t i,uint8_t a):MfCryptKey(s,k,i,a) {}
MfCAST128::~MfCAST128() {}
MfDES3CBC::MfDES3CBC(CSTR s,uint8_t k,uint8_t i,uint8_t a):MfCryptKey(s,k,i,a) {}
diff -urN tahi-linux-3.0.12/lib/Pz/MfAlgorithm.h tahi-linux-3.0.12-linux/lib/Pz/MfAlgorithm.h
--- tahi-linux-3.0.12/lib/Pz/MfAlgorithm.h 2007-03-07 12:04:57.000000000 +0100
+++ tahi-linux-3.0.12-linux/lib/Pz/MfAlgorithm.h 2007-12-09 23:19:58.000000000 +0100
@@ -48,7 +48,9 @@
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/blowfish.h>
+#if ! defined(__linux__)
#include <openssl/rc5.h>
+#endif
#include <openssl/cast.h>
#include <openssl/aes.h>
@@ -242,6 +244,7 @@
};
//----------------------------------------------------------------------
+#if ! defined(__linux__)
class MfRC5:public MfCryptKey {
public:
MfRC5(CSTR,uint8_t,uint8_t,uint8_t);
@@ -250,6 +253,7 @@
virtual void encrypt(OCTSTR,OCTSTR,uint32_t,const PObject*,OCTSTR) const;
virtual void decrypt(OCTSTR,OCTSTR,uint32_t,const PObject*,OCTSTR) const;
};
+#endif
//----------------------------------------------------------------------
class MfCAST128:public MfCryptKey {
@@ -402,7 +406,8 @@
virtual PvOctets* result(OCTSTR, const PObjectList &) const;
struct aes_ctx *crypto_alloc_xcbc_block(void) const;
void crypto_free_xcbc_block(struct aes_ctx *) const;
- void MfAES_XCBC::_crypto_xcbc_init(struct aes_ctx *,
+ // void MfAES_XCBC::_crypto_xcbc_init(struct aes_ctx *,
+ void _crypto_xcbc_init(struct aes_ctx *,
const u_int8_t *, const int) const;
void xor_128(u_int8_t *, const u_int8_t *) const;
};
diff -urN tahi-linux-3.0.12/lib/Pz/PvOctets.cc tahi-linux-3.0.12-linux/lib/Pz/PvOctets.cc
--- tahi-linux-3.0.12/lib/Pz/PvOctets.cc 2005-05-09 11:35:24.000000000 +0200
+++ tahi-linux-3.0.12-linux/lib/Pz/PvOctets.cc 2007-12-09 23:19:58.000000000 +0100
@@ -67,6 +67,9 @@
}
*/
#endif
+#if defined(__linux__)
+#include <netinet/ether.h>
+#endif
#include <string.h>
PvOctets::~PvOctets() {
@@ -123,7 +126,11 @@
bool PvEther::pton(CSTR p) {
if(p==0) {return false;}
struct ether_addr *n=ether_aton((char*)p);
+#if defined(__linux__)
+ if(n!=0) {set(length(),n->ether_addr_octet);}
+#else
if(n!=0) {set(length(),n->octet);}
+#endif
return (n!=0);}
PvEther::PvEther(const PvV6Addr& v6,OCTSTR o):PvOctets(sizeof(etheraddr),o) {
multicast(v6);}
Dateien tahi-linux-3.0.12/lib/Pz/Pz und tahi-linux-3.0.12-linux/lib/Pz/Pz sind verschieden.
Dateien tahi-linux-3.0.12/lib/Pz/rijndael-alg-fst.o und tahi-linux-3.0.12-linux/lib/Pz/rijndael-alg-fst.o sind verschieden.
Dateien tahi-linux-3.0.12/lib/Pz/rijndael-api-fst.o und tahi-linux-3.0.12-linux/lib/Pz/rijndael-api-fst.o sind verschieden.
Dateien tahi-linux-3.0.12/lib/Pz/sha2.o und tahi-linux-3.0.12-linux/lib/Pz/sha2.o sind verschieden.
diff -urN tahi-linux-3.0.12/lorder tahi-linux-3.0.12-linux/lorder
--- tahi-linux-3.0.12/lorder 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/lorder 2007-12-09 23:19:59.000000000 +0100
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# *** This is a dummy lorder only for compiling TAHI on Linux ***
+#
+while [ $1 ]; do echo $1; shift; done;
+exit 0;
diff -urN tahi-linux-3.0.12/Makefile tahi-linux-3.0.12-linux/Makefile
--- tahi-linux-3.0.12/Makefile 2005-05-25 04:46:16.000000000 +0200
+++ tahi-linux-3.0.12-linux/Makefile 2007-12-09 23:19:59.000000000 +0100
@@ -8,6 +8,29 @@
#SECTIONS= 1 2 3 4 5 6 7 8 9 n
SECTIONS= 1
.MAIN: depend all
+
+all:
+ cd lib/; make all
+ cd bin/; make all
+ cd script/pmod/V6evalCommon/; perl Makefile.PL; make
+ cd script/pmod/V6evalRemote/; perl Makefile.PL; make
+ cd script/pmod/V6evalRemote/; perl Makefile.PL; make
+
+clean:
+ cd lib/; make clean
+ cd bin/; make clean
+ cd script/pmod/V6evalCommon/; make clean
+ cd script/pmod/V6evalRemote/; make clean
+ cd script/pmod/V6evalRemote/; make clean
+
+install:
+ cd etc; make install
+ cd include; make install
+ cd bin; make install
+ cd script/pmod/V6evalCommon/; make install
+ cd script/pmod/V6evalRemote/; make install
+ cd script/pmod/V6evalTool/; make install
+
beforeinstall:
for i in $(DIRS); do \
[ -d $$i ] || mkdir $$i; \
@@ -21,4 +44,4 @@
done
install -c -o bin -g bin -m 444 $(DOCFILES) $(PREFIX)/doc
-.include <bsd.subdir.mk>
+#.include <bsd.subdir.mk>
diff -urN tahi-linux-3.0.12/script/pmod/V6evalCommon/blib/lib/V6evalCommon.pm tahi-linux-3.0.12-linux/script/pmod/V6evalCommon/blib/lib/V6evalCommon.pm
--- tahi-linux-3.0.12/script/pmod/V6evalCommon/blib/lib/V6evalCommon.pm 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalCommon/blib/lib/V6evalCommon.pm 2007-12-09 23:19:59.000000000 +0100
@@ -0,0 +1,194 @@
+#
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Yokogawa Electric Corporation,
+# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+########################################################################
+package V6evalCommon;
+use Exporter;
+@ISA = qw(Exporter);
+use File::Basename;
+
+@EXPORT = qw(
+ pathinit
+ searchPath
+ $SeqName
+ $SeqDir
+ $V6EVALPREFX
+ $V6EVALROOT
+ $V6EVALBIN
+ $V6EVALETC
+ $V6EVALINC
+ );
+
+sub pathinit(@);
+sub searchPath($$);
+#sub readTnDef($);
+#sub readNutDef($);
+
+########################################################################
+# Path Init
+#-----------------------------------------------------------------------
+sub pathinit(@) { my(
+ $path, # path
+ ) = @_;
+ ($SeqName,$SeqDir,$SeqSuffix) = fileparse($0,'.seq');
+ $V6EVALPREFIX= "/usr/local/v6eval";
+ $V6EVALROOT = $path || $ENV{V6EVALROOT} || $V6EVALPREFIX;
+ $V6EVALBIN = $ENV{V6EVALBIN} || "$V6EVALROOT/bin/";
+ $V6EVALETC = $ENV{V6EVALETC} || "./:$V6EVALROOT/etc/";
+ $V6EVALINC = $ENV{V6EVALINC} || "$SeqDir:./:$V6EVALROOT/include/";
+}
+
+########################################################################
+# Search Path
+#-----------------------------------------------------------------------
+sub searchPath($$) { my(
+ $path, # path
+ $filename # filename for search
+ ) = @_;
+ my $fullname="";
+ if($filename =~ m!.*/.+!) {
+ $fullname=$filename;
+ }
+ my @paths=split(/:/,($path));
+ foreach(@paths) {
+ my $tmpname=$_ . "/" . $filename;
+ #my $tmpname=$_ . $filename;
+ if($fullname eq "") {
+ $fullname=$tmpname if(-r $tmpname);
+ }
+ }
+ $fullname;
+}
+
+__END__
+
+sub readTnDef($) { my(
+ $tn
+ ) = @_;
+ #---------------------------------------------------------------
+ # Check TN definition and setup environment
+ #---------------------------------------------------------------
+ my (%TnDef);
+ prTrace("Looking up $tn");
+ open(FILE,"$tn") || prErrExit("Can not open $tn");
+
+ my $lines=0;
+ while(<FILE>){
+ $lines++;
+
+ # skip comment line
+ next if(/^\s*$/ || /^#/);
+
+ #
+ chomp;
+
+ # check syntax
+ if( /^(socketpath)\s+(\S+)/ ) {
+ $SocketPath=$2;
+ }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/){
+ $TnDef{$1."_device"}=$2;
+ $TnDef{$1."_addr"}=$3;
+ }
+ elsif( /^(RemoteCuPath)\s+(\S+)/ ||
+ /^(RemoteDevice)\s+(\S+)/ ||
+ /^(RemoteDebug)\s+(\S+)/ ||
+ /^(RemoteIntDebug)\s+(\S+)/ ||
+ /^(RemoteLog)\s+(\S+)/ ||
+ /^(RemoteSpeed)\s+(\S+)/ ||
+ /^(RemoteLogout)\s+(\S+)/ ||
+ /^(RemoteMethod)\s+(\S+)/ ||
+ /^(filter)\s+(\S+)/){
+ }
+ else{ $TnDef{'error'} .= "line $lines : unknown directive $_\n";}
+
+ # set
+ if( /^(\S+)\s+(.*)/ ) {
+ if($TnDef{$1}){
+ $TnDef{'error'} .= "line $lines : duplicate entry $_\n";}
+ } else {
+ $TnDef{$1} = $2;
+ }
+ }
+ prTrace("TN : $_");
+ }
+ close FILE;
+
+ return %TnDef;
+}
+
+sub readNutDef($) { my(
+ $nut
+ ) = @_;
+ #---------------------------------------------------------------
+ # Check NUT definition and setup environment
+ #---------------------------------------------------------------
+ my (%NutDef);
+ prTrace("Looking up $nut");
+ open(FILE, "$nut") || prErrExit("Can not open $nut");
+
+ while(<FILE>){
+ next if(/^\s*$/ || /^#/); # remove comment
+ chomp;
+ if( /^(\S+)\s+(.*)/ ) {
+ $NutDef{$1} = $2;
+ }
+ if( /^(System)\s+(.*)/ ||
+ /^(TargetName)\s+(.*)/ ||
+ /^(HostName)\s+(.*)/ ||
+ /^(Type)\s+(.*)/ ) {
+ prLog("<TR><TD>$1</TD><TD>$2</TD></TR>");
+ } elsif(
+ /^(User)\s+(\S+)/ ||
+ /^(Password)\s+(\S+)/ ){
+ }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2})/){
+ $NutDef{$1."_device"}=$2;
+ $NutDef{$1."_addr"}=$3;
+ }
+ else{ $NutDef{'error'} .= "line $lines : unknown directive $_\n";}
+ prTrace("NUT: $_");
+ }
+ close FILE;
+
+ return %NutDef;
+}
diff -urN tahi-linux-3.0.12/script/pmod/V6evalCommon/Makefile.tmp tahi-linux-3.0.12-linux/script/pmod/V6evalCommon/Makefile.tmp
--- tahi-linux-3.0.12/script/pmod/V6evalCommon/Makefile.tmp 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalCommon/Makefile.tmp 2007-12-10 20:48:57.000000000 +0100
@@ -0,0 +1,786 @@
+# This Makefile is for the V6evalCommon extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.30 (Revision: Revision: 4535 ) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# MAKEFILE => q[Makefile.tmp]
+# NAME => q[V6evalCommon]
+# VERSION => q[1.00]
+# dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+# linkext => { LINKTYPE=>q[] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl5/5.8.8/i586-linux-thread-multi/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared
+LDFLAGS =
+LIBC = /lib/libc-2.6.1.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.6.22
+RANLIB = :
+SITELIBEXP = /usr/lib/perl5/site_perl/5.8.8
+SITEARCHEXP = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+SO = so
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.8.8
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = V6evalCommon
+NAME_SYM = V6evalCommon
+VERSION = 1.00
+VERSION_MACRO = VERSION
+VERSION_SYM = 1_00
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1.00
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR =
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/lib/perl5/5.8.8
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/lib/perl5/site_perl/5.8.8
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.8.8
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/lib/perl5/5.8.8
+PERL_ARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile.tmp
+MAKEFILE_OLD = Makefile.tmp.old
+MAKE_APERL_FILE = Makefile.tmp.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER = /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.30
+MM_REVISION = Revision: 4535
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = V6evalCommon
+BASEEXT = V6evalCommon
+PARENT_NAME =
+DLBASE = $(BASEEXT)
+VERSION_FROM =
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP =
+
+# Handy lists of source code files:
+XS_FILES =
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS =
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR = $(INST_LIB)
+INST_ARCHLIBDIR = $(INST_ARCHLIB)
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+# Extra linker info
+EXPORT_LIST =
+PERL_ARCHIVE =
+PERL_ARCHIVE_AFTER =
+
+
+TO_INST_PM = V6evalCommon.pm
+
+PM_TO_BLIB = V6evalCommon.pm \
+ $(INST_LIB)/V6evalCommon.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.50
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MACROSTART =
+MACROEND =
+USEMAKEFILE = -f
+FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = V6evalCommon
+DISTVNAME = V6evalCommon-1.00
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+ $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+ $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+ $(NOECHO) $(NOOP)
+
+help :
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+ $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+ $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+ $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+ $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_BIN)
+ $(NOECHO) $(CHMOD) 755 $(INST_BIN)
+ $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+ $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+ $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext ::
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all
+ $(NOECHO) $(NOOP)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+ - $(RM_F) \
+ *$(LIB_EXT) core \
+ core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
+ core.[0-9][0-9] $(BASEEXT).bso \
+ pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+ $(BASEEXT).x $(BOOTSTRAP) \
+ perl$(EXE_EXT) tmon.out \
+ *$(OBJ_EXT) pm_to_blib \
+ $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+ core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+ core.*perl.*.? $(MAKE_APERL_FILE) \
+ perl $(BASEEXT).def \
+ core.[0-9][0-9][0-9] mon.out \
+ lib$(BASEEXT).def perlmain.c \
+ perl.exe so_locations \
+ $(BASEEXT).exp
+ - $(RM_RF) \
+ blib
+ - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge :: clean realclean_subdirs
+ - $(RM_F) \
+ $(MAKEFILE_OLD) $(FIRST_MAKEFILE)
+ - $(RM_RF) \
+ $(DISTVNAME)
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+ $(NOECHO) $(ECHO) Generating META.yml
+ $(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
+ $(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
+ $(NOECHO) $(ECHO) 'name: V6evalCommon' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version: 1.00' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version_from: ' >> META_new.yml
+ $(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
+ $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) '' >> META_new.yml
+ $(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
+ $(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30' >> META_new.yml
+ -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+
+
+# --- MakeMaker signature section:
+signature :
+ cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+ $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+ $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+ $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta
+ $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+ -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
+ $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+ cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+ $(NOECHO) $(NOOP)
+
+install_perl :: all pure_perl_install doc_perl_install
+ $(NOECHO) $(NOOP)
+
+install_site :: all pure_site_install doc_site_install
+ $(NOECHO) $(NOOP)
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+ $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+ $(INST_BIN) $(DESTINSTALLSITEBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLVENDORLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+ $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+ $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+ $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+ $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+ -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+ $(PERLRUN) Makefile.PL
+ $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+ $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+ $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ $(NOECHO) $(PERLRUNINST) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+ $(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
+
+test_dynamic :: pure_all
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,00,0,0">' > $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <AUTHOR></AUTHOR>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i586-linux-thread-multi" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(TO_INST_PM)
+ $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
+ V6evalCommon.pm $(INST_LIB)/V6evalCommon.pm
+ $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff -urN tahi-linux-3.0.12/script/pmod/V6evalRemote/blib/lib/V6evalRemote.pm tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/blib/lib/V6evalRemote.pm
--- tahi-linux-3.0.12/script/pmod/V6evalRemote/blib/lib/V6evalRemote.pm 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/blib/lib/V6evalRemote.pm 2007-12-09 23:19:59.000000000 +0100
@@ -0,0 +1,1743 @@
+#
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+# Yokogawa Electric Corporation,
+# INTAP(Interoperability Technology Association for Information
+# Processing, Japan), IPA (Information-technology Promotion Agency, Japan).
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $TAHI: v6eval/script/pmod/V6evalRemote/V6evalRemote.pm,v 1.143 2006/02/03 10:40:15 akisada Exp $
+#
+########################################################################
+
+package V6evalRemote;
+use Exporter;
+@ISA = qw(Exporter);
+
+use 5;
+use Getopt::Std;
+use Expect;
+
+$debug=0;
+$retry=2;
+$exit_error=1;
+$init_timeout=0.2;
+$dummy_prompt='DUMMY_PROMPT';
+
+@EXPORT = qw(
+ rType
+ rDevice
+ rUser
+ rUserPrompt
+ rPasswordPrompt
+ rCommandPrompt
+ rDebug
+ rExpInternal
+ rLogStdout
+ rSendSpeed
+ rCmdOutput
+ rEnableLogout
+ rOpen
+ rLogin
+ rLogout
+ rClose
+ rCommandAsync
+ rCommand
+ rRebootAsync
+ rReboot
+ rPutfile
+ rInit
+ rShutdown
+ rArg
+ );
+
+my %storedSIG = ();
+
+########################################################################
+
+# The following status values must be same as V6evalTool.pm's ones.
+
+$exitPass=0; # PASS
+$exitNS=2; # Not yet supported
+$exitFail=32; # FAIL
+$exitFatal=64; # FATAL
+
+########################################################################
+BEGIN
+{
+ %storedSIG = %SIG;
+
+ foreach my $key (keys(%SIG)) {
+ $SIG{$key} = 'DEFAULT';
+ }
+
+ $SIG{CHLD}=\&_sigchld_handler;
+ $SIG{INT}=\&_sig_handler;
+ $SIG{TERM}=\&_sig_handler;
+
+ $Bye="~.";
+ $Type="tahi-v6eval";
+ $CU="cu";
+ $Device="cuaa0";
+ $User="root";
+ $Password="v6eval";
+ undef $Remote;
+ $Expect::Log_Stdout=0;
+ $SendSpeed=0;
+ $EnableLogout=0;
+
+ $CmdOutput="";
+
+ # login prompt
+ %prompt_user = (
+ );
+# %prompt_user = (
+# 'kame-freebsd', 'login: ',
+# 'freebsd43-i386', 'login: ',
+# 'hitachi-nr60', 'login:',
+# 'hitachi-nr60-v2', 'login:',
+# 'hitachi-gr2k', 'login:',
+# 'hitachi-gr2k-beta', 'login:',
+# 'nec-libra', 'login: ',
+# 'nec-libra-utcpip', 'login: ',
+# 'nec-mip6', 'login: ',
+# 'nec-ix1k', 'login: ',
+# 'sfc-mip6', 'login: ',
+# 'yamaha-ws-one', '(starts|Yamaha Corporation)',
+# 'linux-v6', 'login: ',
+# 'sun-solaris', 'login: ',
+# 'ms-win2k', 'Login: ',
+# 'cisco-ios', 'get started',
+# 'iij-seil', 'login: ',
+# 'telebit-tbc2k', 'Username:',
+# 'mgcs-sj6', 'login: ',
+# 'netbsd-i386', 'login: ',
+# 'kame-netbsd-i386', 'login: ',
+# 'freebsd-i386', 'login: ',
+# 'openbsd-i386', 'login: ',
+# 'aix', 'login: ',
+# 'hpux', 'login: ',
+# 'usagi-i386', 'login: ',
+# 'usagi24-i386', 'login: ',
+# 'mipl', 'login: ',
+# 'lcna', 'login: ',
+# 'ttb3010', 'login: ',
+# 'unitedlinux', 'login: ',
+# );
+
+ # password prompt
+ %prompt_password = (
+ );
+# %prompt_password = (
+# 'kame-freebsd', 'Password:',
+# 'freebsd43-i386', 'Password:',
+# 'hitachi-nr60', 'Password:',
+# 'hitachi-nr60-v2', 'Password:',
+# 'hitachi-gr2k', 'Password:',
+# 'hitachi-gr2k-beta', 'Password:',
+# 'nec-libra', 'Password:',
+# 'nec-libra-utcpip', 'Password:',
+# 'nec-mip6', 'Password:',
+# 'nec-ix1k', 'Password:',
+# 'sfc-mip6', 'Password:',
+# 'yamaha-ws-one', 'Password:',
+# 'linux-v6', 'Password: ',
+# 'sun-solaris', 'Password:',
+# 'ms-win2k', 'Password:',
+# 'cisco-ios', 'Password:',
+# 'iij-seil', 'DUMMY_PROMPT', # dummy
+# 'telebit-tbc2k', 'Password:',
+# 'mgcs-sj6', 'Password:',
+# 'netbsd-i386', 'Password:',
+# 'kame-netbsd-i386', 'Password:',
+# 'freebsd-i386', 'Password:',
+# 'openbsd-i386', 'Password:',
+# 'aix', 'Password:',
+# 'hpux', 'Password:',
+# 'usagi-i386', 'Password: ',
+# 'usagi24-i386', 'Password: ',
+# 'mipl', 'Password: ',
+# 'lcna', 'Password:',
+# 'ttb3010', 'Password:',
+# 'unitedlinux', 'Password: ',
+# );
+
+ # command prompt
+ %prompt_command = (
+ );
+# %prompt_command = (
+# 'kame-freebsd', '(\$|#) ',
+# 'freebsd43-i386', '(\$|#) ',
+# 'hitachi-nr60', '% ',
+# 'hitachi-nr60-v2', '% ',
+# 'hitachi-gr2k', '(command|admin)(:|>) ',
+# 'hitachi-gr2k-beta', '(command|admin): ',
+# 'nec-libra', '(\$|#) ',
+# 'nec-libra-utcpip', '(\$|#) ',
+# 'nec-mip6', '(\$|#) ',
+# 'nec-ix1k', '(\$|#) ',
+# 'sfc-mip6', '(\$|#) ',
+# 'yamaha-ws-one', '(>|#) ',
+# 'linux-v6', '# ',
+# 'sun-solaris', '# ',
+# 'ms-win2k', '.:.>',
+# 'cisco-ios', '(>|#)',
+# 'iij-seil', '\r(>|#) ',
+# 'telebit-tbc2k', '(> |% |accepted)',
+# 'mgcs-sj6', '(\$|#) ',
+# 'netbsd-i386', '(\$|#) ',
+# 'kame-netbsd-i386', '(\$|#) ',
+# 'freebsd-i386', '(\$|#) ',
+# 'openbsd-i386', '(\$|#) ',
+# 'aix', '(\$|#) ',
+# 'hpux', '(\$|#) ',
+# 'usagi-i386', '# ',
+# 'usagi24-i386', '# ',
+# 'mipl', '# ',
+# 'lcna', '(\$|#) ',
+# 'ttb3010', '(>|#) ',
+# 'unitedlinux', '# ',
+# );
+
+ # command of the admin mode if any
+ %cmd_admin = (
+ );
+# %cmd_admin = (
+# 'hitachi-gr2k', 'admin',
+# 'hitachi-gr2k-beta', 'admin',
+# 'yamaha-ws-one', 'administrator',
+# 'cisco-ios', 'enable',
+# 'iij-seil', '!sh',
+# 'telebit-tbc2k', "\esystem",
+# 'ttb3010', 'config',
+# );
+
+ # another command of the admin mode if any
+ %cmd_admin2 = (
+ );
+# %cmd_admin2 = (
+# 'telebit-tbc2k', "\epaxtcl0\r",
+# );
+
+ # logout command
+ %cmd_exit = (
+ );
+# %cmd_exit = (
+# 'kame-freebsd', 'exit',
+# 'freebsd43-i386', 'exit',
+# 'hitachi-nr60', 'exit',
+# 'hitachi-nr60-v2', 'exit',
+# 'hitachi-gr2k', 'exit',
+# 'hitachi-gr2k-beta', 'exit',
+# 'nec-libra', 'exit',
+# 'nec-libra-utcpip', 'exit',
+# 'nec-mip6', 'exit',
+# 'nec-ix1k', 'exit',
+# 'sfc-mip6', 'exit',
+# 'yamaha-ws-one', 'exit',
+# 'linux-v6', 'exit',
+# 'sun-solaris', 'exit',
+# 'ms-win2k', 'exit',
+# 'cisco-ios', 'exit',
+# 'iij-seil', 'exit',
+# 'telebit-tbc2k', "\elogout\r",
+# 'mgcs-sj6', 'exit',
+# 'netbsd-i386', 'exit',
+# 'kame-netbsd-i386', 'exit',
+# 'freebsd-i386', 'exit',
+# 'openbsd-i386', 'exit',
+# 'aix', 'exit',
+# 'hpux', 'exit',
+# 'usagi-i386', 'exit',
+# 'usagi24-i386', 'exit',
+# 'mipl', 'exit',
+# 'lcna', 'exit',
+# 'ttb3010', 'logout',
+# 'unitedlinux', 'exit',
+# );
+
+ # confirmation for logout
+ %prompt_exit_confirm = (
+ );
+# %prompt_exit_confirm = (
+# 'ms-win2k', 'ENTER',
+# );
+
+ # reply of the confirmation for logout
+ %reply_exit_confirm = (
+ );
+# %reply_exit_confirm = (
+# 'ms-win2k', "\r",
+# );
+
+ # command for initialize
+ %cmd_init = (
+ );
+# %cmd_init = (
+# 'ttb3010', 'init all',
+# );
+
+ # confirmation for Initialize
+ %prompt_init_confirm = (
+ );
+# %prompt_init_confirm = (
+# 'ttb3010', "y/n",
+# );
+
+ # reply of the confirmation for Initialize
+ %reply_init_confirm = (
+ );
+# %reply_init_confirm = (
+# 'ttb3010', "y",
+# );
+
+ # command for shutdown
+ %cmd_shutdown = (
+ );
+# %cmd_shutdown = (
+# 'ttb3010', "shutdown",
+# );
+
+ # confirmation for Initialize
+ %prompt_shutdown_confirm = (
+ );
+# %prompt_shutdown_confirm = (
+# # TTB asks [y/n]
+# 'ttb3010', "y/n",
+# );
+
+ # reply of the confirmation for Initialize
+ %reply_shutdown_confirm = (
+ );
+# %reply_shutdown_confirm = (
+# 'ttb3010', "y",
+# );
+
+
+ # reboot command
+ %cmd_reboot = (
+ );
+# %cmd_reboot = (
+# 'kame-freebsd', 'reboot',
+# 'freebsd43-i386', 'reboot',
+# 'hitachi-nr60', 'reboot',
+# 'hitachi-nr60-v2', 'reboot',
+# 'hitachi-gr2k', 'boot -nf',
+# 'hitachi-gr2k-beta', 'boot -nf',
+# 'nec-libra', 'reboot',
+# 'nec-libra-utcpip', 'reboot',
+# 'nec-mip6', 'reboot',
+# 'nec-ix1k', 'reload y',
+# 'sfc-mip6', 'reboot',
+# 'yamaha-ws-one', 'restart',
+# 'linux-v6', 'reboot',
+# 'sun-solaris', 'reboot',
+# # ms-win2k
+# 'cisco-ios', 'reload',
+# 'iij-seil', 'reboot',
+# 'telebit-tbc2k', 'restart',
+# 'mgcs-sj6', 'reboot',
+# 'netbsd-i386', 'reboot',
+# 'kame-netbsd-i386', 'reboot',
+# 'freebsd-i386', 'reboot',
+# 'openbsd-i386', 'reboot',
+# 'aix', 'reboot',
+# 'hpux', 'reboot',
+# 'usagi-i386', 'reboot',
+# 'usagi24-i386', 'reboot',
+# 'mipl', 'reboot',
+# 'lcna', 'reboot',
+# 'ttb3010', 'reboot',
+# 'unitedlinux', 'reboot',
+# );
+
+ # final confirmation for reboot if any
+ %prompt_reboot_confirm = (
+ );
+# %prompt_reboot_confirm = (
+# 'ms-win2k', 'ENTER',
+# # Proceed with reload? [confirm]
+# 'cisco-ios', 'confirm',
+# # Proceed with init? [y/n]
+# 'ttb3010', 'y/n',
+# );
+
+ # reply of the final confirmation for reboot
+ %reply_reboot_confirm = (
+ );
+# %reply_reboot_confirm = (
+# 'ms-win2k', "\r",
+# 'cisco-ios', 'y',
+# 'ttb3010', 'y',
+# );
+
+ # pre-final confirmation for reboot if any
+ %prompt_reboot_confirm2 = (
+ );
+# %prompt_reboot_confirm2 = (
+# # System configuration has been modified.
+# # Save? [yes/no]:
+# 'cisco-ios', 'yes/no',
+# );
+
+ # reply of the pre-final confirmation for reboot
+ %reply_reboot_confirm2 = (
+ );
+# %reply_reboot_confirm2 = (
+# 'cisco-ios', "no\r",
+# );
+
+ # final confirmation for shutdown if any
+ %prompt_shutdown_confirm = (
+ );
+# %prompt_shutdown_confirm = (
+# # Proceed with init? [y/n]
+# 'ttb3010', 'y/n',
+# );
+
+ # reply of the final confirmation for reboot
+ %reply_shutdown_confirm = (
+ );
+# %reply_shutdown_confirm = (
+# 'ttb3010', 'y',
+# );
+
+ # command for reading command status
+ %cmd_status = (
+ );
+# %cmd_status = (
+# 'kame-freebsd', 'echo $status',
+# 'freebsd43-i386', 'echo $status',
+# 'hitachi-nr60', 'echo $status',
+# 'hitachi-nr60-v2', 'echo $status',
+# 'hitachi-gr2k', 'echo $status',
+# 'hitachi-gr2k-beta', 'echo $status',
+# 'nec-libra', 'echo $status',
+# 'nec-libra-utcpip', 'echo $status',
+# 'nec-mip6', 'echo $status',
+# 'sfc-mip6', 'echo $status',
+# 'linux-v6', 'echo $?',
+# 'sun-solaris', 'echo $?',
+# # ms-win2k
+# # cisco-ios
+# # iij-seil
+# # ttb3010
+# 'mgcs-sj6', 'echo $status',
+# 'netbsd-i386', 'echo $status',
+# 'kame-netbsd-i386', 'echo $status',
+# 'freebsd-i386', 'echo $status',
+# 'openbsd-i386', 'echo $status',
+# 'aix', 'echo $?',
+# 'hpux', 'echo $?',
+# 'usagi-i386', 'echo $?',
+# 'usagi24-i386', 'echo $?',
+# 'mipl', 'echo $?',
+# 'lcna', 'echo $status',
+# 'unitedlinux', 'echo $?',
+# );
+}
+
+########################################################################
+END
+{
+ rClose();
+
+ foreach my $key (keys(%SIG)) {
+ $SIG{$key} = 'DEFAULT';
+ }
+
+ %SIG = %storedSIG;
+}
+
+########################################################################
+sub _sig_handler
+{
+ exit $exitFatal;
+ # call END for rClose()
+}
+
+########################################################################
+sub _sigchld_handler
+{
+ $! = 0;
+ $? = ($exit_error << 8);
+ print STDERR "``$CU -l $Device'' was killed with SIGCHLD.\n";
+ exit $exitFatal;
+}
+
+########################################################################
+sub rType(;$)
+{
+ my($x)=$Type;
+ $Type=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rDevice(;$)
+{
+ my($x)=$Device;
+ $Device=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rUser(;$)
+{
+ my($x)=$User;
+ $User=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rUserPrompt(;$)
+{
+ my($x)=$prompt_user{$Type};
+ $prompt_user{$Type}=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rPasswordPrompt(;$)
+{
+ my($x)=$prompt_password{$Type};
+ $prompt_password{$Type}=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rCommandPrompt(;$)
+{
+ my($x)=$prompt_command{$Type};
+ $prompt_command{$Type}=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rDebug(;$)
+{
+# return undef if $Remote == undef;
+ return undef if (!defined $Remote);
+ my($x)=$Remote->debug();
+ $Remote->debug(shift(@_)) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rExpInternal(;$)
+{
+# return undef if $Remote == undef;
+ return undef if (!defined $Remote);
+
+ my($x)=$Remote->exp_internal();
+ $Remote->exp_internal(shift(@_)) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rLogStdout(;$)
+{
+# return undef if $Remote == undef;
+ return undef if (!defind $Remote);
+
+ my($x)=$Remote->log_stdout();
+ $Remote->log_stdout(shift(@_)) if @_ != ();
+ $x
+}
+
+########################################################################
+sub rSendSpeed(;$)
+{
+ my($x)=$SendSpeed;
+ $SendSpeed=shift(@_) if @_ != ();
+ $x;
+}
+
+########################################################################
+sub rCmdOutput()
+{
+ my(@x);
+ @x=split(/\n/, $CmdOutput);
+}
+
+########################################################################
+sub rEnableLogout(;$)
+{
+ my($x)=$EnableLogout;
+# $EnableLogout=shift(@_) if @_ != ();
+ $EnableLogout=shift(@_) if (@_ > 0);
+ $x;
+}
+
+########################################################################
+sub rOpen()
+{
+# return undef if $Remote != undef;
+ return undef if (defined $Remote);
+
+ autoflush STDOUT 1;
+
+ getopts('t:T:d:u:p:v:i:o:U:P:C:Vs:l:h');
+
+ if($opt_h) {
+ usage();
+ exit 0;
+ }
+
+ $Type=$opt_t if defined($opt_t); # target type
+ $CU=$opt_T if defined($opt_T); # cu command path
+ $Device=$opt_d if defined($opt_d); # serial device name
+ $User=$opt_u if defined($opt_u); # user name
+ $Password=$opt_p if defined($opt_p); # password
+
+ $prompt_user{$Type}=$opt_U if defined($opt_U); # login prompt
+ $prompt_password{$Type}=$opt_P if defined($opt_P); # password prompt
+ $prompt_command{$Type}=$opt_C if defined($opt_C); # command prompt
+
+ $debug = 1 if defined($opt_V); # debug flag
+ $SendSpeed=$opt_s if defined($opt_s); # send speed
+ $EnableLogout=$opt_l if defined($opt_l); # enable logout
+
+ my $TermCmd = "$CU -l $Device";
+ $Remote = Expect->spawn("$TermCmd");
+# if($Remote == undef) {
+ if(!defined $Remote) {
+ print STDERR "$TermCmd exec failed\n";
+ return undef;
+ }
+
+ $Remote->debug($opt_v) if defined($opt_v); # debug level
+ $Remote->exp_internal($opt_i) if defined($opt_i); # internal debug level
+ $Remote->log_stdout($opt_o) if defined($opt_o); # stdout
+
+ my($v, $lval, $rval);
+ while($v = shift(@ARGV)) {
+ ($lval, $rval) = split(/=/, $v, 2);
+ $rval=1 if $rval =~ /^\s*$/;
+ $v='$main::rOpt_'."$lval".'=\''."$rval".'\'';
+ eval($v); # eval ``$main::rOpt<LVAL>=<RVAL>''
+ print STDERR "eval $v\n" if $debug;
+ }
+
+# if($Remote->expect(4, "onnect") == undef) {
+ if(!defined $Remote->expect(4, "onnect")) {
+ print STDERR "Unable to sync with cu\n";
+ return undef;
+ }
+ $Remote;
+}
+
+sub usage()
+{
+ print "V6evalRemote.pm system options:\n".
+ " -h\n".
+ " -t<target_type>\n".
+ " -T<cu command path>\n".
+ " -d<serial_device_name>\n".
+ " -u<user_name>\n".
+ " -p<password>\n".
+ " -U<login_prompt>\n".
+ " -P<password_prompt>\n".
+ " -C<command_prompt>\n".
+ " -v<debug level>\n".
+ " -i<internal debug level>\n".
+ " -o<stdout>\n".
+ " -V\n".
+ " -s<interval>\n".
+ " -l<enable_logout>\n";
+}
+
+########################################################################
+#
+#
+# START
+# |
+# | <----- A
+# |
+# Retry out? ---> ERROR
+# |
+# |
+# wait prompt ---------------------------+----+----> timeout
+# | | | OR
+# | login prompt | | command prompt &&
+# | | | logout
+# put user_name | | THEN
+# | | | goto A
+# | | |
+# wait prompt ----> timeout THEN goto A | |
+# | | |
+# | password prompt | |
+# | | |
+# | <----------------------------------+ |
+# | password prompt && !logout |
+# | |
+# put password |
+# | |
+# | |
+# wait prompt ----> timeout THEN goto A |
+# | |
+# | command prompt |
+# | |
+# | <---------------------------------------+
+# | command prompt
+# |
+# END
+#
+
+sub rLogin($)
+{
+ my($timeout)=@_;
+ my($retry)=8;
+ my($i)=0;
+ my($t)=$init_timeout;
+ my($is_admin)=0;
+ my($is_admin2)=0;
+
+ ### $timeout=50; # special patch for long login timeout (such as netbsd-i386)
+
+# if($Remote == undef) {
+ if(!defined $Remote) {
+ print STDERR "rOpen() should be called first.\n";
+ return 0;
+ }
+
+ if($debug) {
+ print STDERR "prompt_user: ``$prompt_user{$Type}'', ".
+ "prompt_password: ``$prompt_password{$Type}'', ".
+ "prompt_command: ``$prompt_command{$Type}''\n";
+ }
+
+ while($i<$retry) {
+ #
+ # wait for login prompt
+ #
+ print STDERR "rLogin: Wait for login prompt ($t sec)\n" if $debug;
+# next if $Remote->expect($t,
+# '-re', "$prompt_user{$Type}",
+# '-re', "$prompt_password{$Type}",
+# '-re', "$prompt_command{$Type}"
+# ) == undef;
+ next if (!defined $Remote->expect($t,
+ '-re', "$prompt_user{$Type}",
+ '-re', "$prompt_password{$Type}",
+ '-re', "$prompt_command{$Type}"
+ ));
+ $t=$timeout;
+ my($num)=$Remote->exp_match_number();
+ if($num == 1) {
+ #
+ # got login prompt
+ #
+ print STDERR "rLogin: Got login prompt\n" if $debug;
+ sendMessages("$User\r"); # put user name
+ } elsif($num == 2) {
+ #
+ # got password prompt
+ #
+ print STDERR "rLogin: Got password prompt\n" if $debug;
+ goto password;
+ } elsif($num == 3) {
+ #
+ # got command prompt
+ #
+ print STDERR "rLogin: Got command prompt\n" if $debug;
+ if(!$EnableLogout || $is_admin || $is_admin2) {
+ goto command;
+ } else {
+ rLogout($timeout);
+ next;
+ }
+ }
+
+ #
+ # wait for password prompt
+ #
+ if($prompt_password{$Type} eq $dummy_prompt) {
+ print STDERR "rlogin: password prompt is not defined\n"
+ if $debug;
+ } else {
+ print STDERR "rLogin: Wait for password prompt ($timeout sec)\n"
+ if $debug;
+# next if $Remote->expect($timeout,
+# '-re', "$prompt_password{$Type}",
+# ) == undef;
+ next if (!defined $Remote->expect($timeout,
+ '-re', "$prompt_password{$Type}",
+ ));
+ }
+ password:
+ if($prompt_password{$Type} ne $dummy_prompt) {
+ print STDERR "rLogin: Got password prompt\n" if $debug;
+ sendMessages("$Password\r"); # put password
+ }
+
+ #
+ # wait for command prompt
+ #
+ print STDERR "rLogin: Wait for command prompt ($timeout sec)\n"
+ if $debug;
+# next if $Remote->expect($timeout,
+# '-re', "$prompt_command{$Type}"
+# ) == undef;
+ next if (!defined $Remote->expect($timeout,
+ '-re', "$prompt_command{$Type}"
+ ));
+ command:
+ print STDERR "rLogin: Got command prompt\n" if $debug;
+
+ #
+ #
+ #
+ if($is_admin == 0 && $cmd_admin{$Type}) {
+ $is_admin = 1;
+ print STDERR "rLogin: Need admin command: $cmd_admin{$Type}\n" if $debug;
+ sendMessages("$cmd_admin{$Type}\r");
+ redo;
+ }
+
+ #
+ #
+ #
+ if($is_admin2 == 0 && $cmd_admin2{$Type}) {
+ $is_admin2 = 1;
+ print STDERR "rLogin: Need admin command2\n" if $debug;
+ sendMessages("$cmd_admin2{$Type}\r");
+ redo;
+ }
+
+ last;
+
+ } continue {
+ #
+ # timeout: never got any prompt
+ #
+ print STDERR "rLogin: Never got prompt; try again\n" if $debug;
+ sendMessages("\r");
+ $t=$timeout;
+ $i++;
+ }
+
+ if($i >= $retry) {
+ #
+ # Retry out
+ #
+ print STDERR "rLogin: Retry error (> $retry)\n";
+ print STDERR getOutput();
+ return 0;
+ }
+
+ #
+ # login
+ #
+ return 1;
+}
+
+########################################################################
+#
+# START
+# |
+# | <------- A
+# |
+# Retry out ? -----> ERROR
+# |
+# wait for prompt ------------+----------------------+
+# | | |
+# | login prompt OR | command prompt | timeout
+# | passowrd prompt | |
+# | put exit command |
+# END | |
+# goto A goto A
+#
+
+sub rLogout($)
+{
+ my($timeout)=@_;
+ my($retry)=6;
+ my($i)=0;
+ my($t)=$init_timeout;
+
+ if(!defined $Remote) {
+ print STDERR "rOpen() should be called first.\n";
+ return 0;
+ }
+
+ if($debug) {
+ print STDERR "prompt_user: ``$prompt_user{$Type}'', ".
+ "prompt_password: ``$prompt_password{$Type}'', ".
+ "prompt_command: ``$prompt_command{$Type}''\n";
+ }
+
+ #
+ # if $EnableLogout == 0 then keep login
+ #
+ if($EnableLogout == 0) {
+ print STDERR "rLogout: skip by not specifing ``-l'' $opt_l\n"
+ if $debug;
+ return 1;
+ }
+
+ my(@ptn)= (
+ '-re', "$prompt_user{$Type}",
+ '-re', "$prompt_password{$Type}",
+ '-re', "$prompt_command{$Type}"
+ );
+ push(@ptn, '-re', $prompt_exit_confirm{$Type})
+ if $prompt_exit_confirm{$Type};
+
+ while($i<$retry) {
+ #
+ # wait for login prompt
+ #
+ print STDERR "rLogout: Wait for prompt ($t sec)\n" if $debug;
+# next if $Remote->expect($t, @ptn) == undef;
+ next if (!defined $Remote->expect($t, @ptn));
+ $t=$timeout;
+ my($num)=$Remote->exp_match_number();
+ if($num == 1) {
+ #
+ # got login prompt
+ #
+ print STDERR "rLogout: Got login prompt\n" if $debug;
+ last;
+ } elsif($num == 2) {
+ #
+ # got password prompt
+ #
+ print STDERR "rLogout: Got password prompt\n" if $debug;
+ last;
+ } elsif($num == 3) {
+ #
+ # got command prompt
+ #
+ print STDERR "rLogout: Got command prompt\n" if $debug;
+ sendMessagesSync("$cmd_exit{$Type}\r");
+ $i++;
+ redo;
+ } elsif ($num == 4) {
+ #
+ # got confirmation message
+ #
+ print STDERR "rLogout: Got confirmation prompt\n" if $debug;
+ sendMessages("$reply_exit_confirm{$Type}");
+ $i++;
+ redo;
+ }
+ } continue {
+ #
+ # timeout: never got any prompt
+ #
+ print STDERR "rLogout: Never got prompt; try again\n" if $debug;
+ sendMessages("\r");
+ $t=$timeout;
+ $i++;
+ }
+
+ if($i >= $retry) {
+ #
+ # Retry out
+ #
+ print STDERR "rLogout: Retry error (> $retry)\n";
+ print STDERR getOutput();
+ return 0;
+ }
+
+ #
+ # logout
+ #
+ return 1;
+}
+
+########################################################################
+sub rClose()
+{
+# return 0 if $Remote == undef;
+ return 0 if (!defined $Remote);
+ $SIG{CHLD}='DEFAULT';
+
+ print $Remote "$Bye\r";
+ print $Remote "$Bye\r";
+ print $Remote "$Bye\r";
+ $Remote->soft_close();
+ undef $Remote;
+ 1;
+}
+
+########################################################################
+sub _rCommand($$$)
+{
+ my($cmd, $timeout, $sync)=@_;
+ my($i);
+
+ if(!$prompt_command{$Type}) {
+ print STDERR "$Type: Not defining the patterns of the prompts\n";
+ return 0;
+ }
+
+# return 0 if $Remote == undef;
+ return 0 if (!defined $Remote);
+
+ for($i=0, $t=$init_timeout; $i<$retry; $i++) {
+ print STDERR "_rCommand: Try to get command prompt ($t sec.)\n"
+ if $debug;
+# last if $Remote->expect($t, '-re', "$prompt_command{$Type}") != undef;
+ last if (defined $Remote->expect($t, '-re', "$prompt_command{$Type}"));
+ #
+ # Try to get any prompt
+ #
+ sendMessages("\r");
+ $t = $timeout;
+ }
+ if($i >= $retry) {
+ #
+ # retry error
+ #
+ print STDERR "_rCommand: never got command prompt\n";
+ print STDERR getOutput();
+ return 0;
+ }
+ print STDERR "_rCommand: Do ``$cmd'' command\n" if $debug;
+ if($sync) {
+ sendMessagesSync("$cmd\r");
+ } else {
+ sendMessages("$cmd\r");
+ }
+ return 3;
+}
+
+########################################################################
+sub rCommandAsync($$)
+{
+ my($cmd, $timeout)=@_;
+ return _rCommand($cmd, $timeout, 0);
+}
+
+########################################################################
+sub rCommand($$)
+{
+ my($cmd, $timeout)=@_;
+ my($i, $s, $t);
+
+ return 0 if _rCommand($cmd, $timeout, 1) == 0;
+
+ for($i=0, $t=$init_timeout; $i<$retry; $i++) {
+ print STDERR "rCommand: Try to get command prompt ($t sec)\n"
+ if $debug;
+# last if $Remote->expect($t, '-re', "$prompt_command{$Type}") != undef;
+ last if (defined $Remote->expect($t, '-re', "$prompt_command{$Type}"));
+ sendMessages("\r");
+ $t = $timeout;
+ }
+ if($i >= $retry) {
+ #
+ # retry error
+ #
+ print STDERR "rCommand: never got command exit status\n" if $debug;
+ return 3;
+ }
+ $CmdOutput=$Remote->exp_before();
+ print STDERR "rCommand: CmdOutput=``$CmdOutput''\n" if $debug;
+
+ if($cmd_status{$Type}) {
+ # Invoke for getting exit status
+ sendMessagesSync("$cmd_status{$Type}\r");
+
+ # Get exit status
+# if($Remote->expect($timeout, '-re', '[0-9]+') != undef) {
+ if(defined $Remote->expect($timeout, '-re', '[0-9]+')) {
+ $s = $Remote->exp_match();
+ print STDERR "rCommand: exit status: $s\n" if $debug;
+ return (($s == 0) ? 1 : 2);
+ }
+ }
+ print STDERR "rCommand: never got command exit status\n" if $debug;
+ return 3;
+}
+
+########################################################################
+sub rRebootAsync($)
+{
+ my($timeout)=@_;
+ my($i);
+
+ if(0) {
+ if(!$prompt_command{$Type}) {
+ print STDERR "$Type: Not defining the patterns of the prompts\n";
+ return 0;
+ }
+
+# return 0 if $Remote == undef;
+ return 0 if (!defined $Remote);
+
+ my($cmd)=$cmd_reboot{$Type};
+
+ for($i=0, $t=$init_timeout; $i<$retry; $i++) {
+ print STDERR "rRebootAsync: Try to get command prompt ($t sec.)\n"
+ if $debug;
+# last if
+# $Remote->expect($t, '-re', "$prompt_command{$Type}") != undef;
+ last if (defined $Remote->expect($t,
+ '-re',
+ "$prompt_command{$Type}"
+ ));
+ #
+ # Try to get any prompt
+ #
+ sendMessages("\r");
+ $t = $timeout;
+ }
+ if($i >= $retry) {
+ #
+ # retry error
+ #
+ print STDERR "rRebootAsync: never got command prompt\n";
+ print STDERR getOutput();
+ return 0;
+ }
+ print STDERR "rRebootAsync: Do ``$cmd'' command\n" if $debug;
+ sendMessagesSync("$cmd\r");
+ }
+ my($cmd)=$cmd_reboot{$Type};
+ return 0 if rCommandAsync($cmd, $timeout) == 0;
+
+ my(@ptn)=();
+ push(@ptn, '-re', "$prompt_reboot_confirm{$Type}")
+ if $prompt_reboot_confirm{$Type};
+ push(@ptn, '-re', "$prompt_reboot_confirm2{$Type}")
+ if $prompt_reboot_confirm2{$Type};
+
+ if(@ptn > 0) {
+ while(1) {
+# if($Remote->expect($timeout,
+# @ptn
+# ) == undef) {
+ if(!defined $Remote->expect($timeout,
+ @ptn
+ )) {
+ print STDERR
+ "Did not get any confirmation message in reboot\n";
+ return 0;
+ }
+ my($num)=$Remote->exp_match_number();
+ if($num == 1) {
+ print STDERR "rRebootAsync: Got reboot prompt #1\n" if $debug;
+ sendMessages("$reply_reboot_confirm{$Type}");
+ last;
+ } elsif($num == 2) {
+ print STDERR "rRebootAsync: Got reboot prompt #2\n" if $debug;
+ sendMessages("$reply_reboot_confirm2{$Type}");
+ # try again
+ } else {
+ print STDERR "rRebootAsync: Internal error\n";
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+########################################################################
+sub rReboot($)
+{
+ my($timeout) = @_;
+ my($i, $t);
+
+ if(!$prompt_user{$Type}) {
+ printf STDERR "$Type: Not defining the pattern of the prompts\n";
+ return 0
+ }
+ if($Type eq 'telebit-tbc2k') {
+ printf STDERR "rReboot: $Type: Does not support\n";
+ return 0
+ }
+
+ #
+ # Do reboot command
+ #
+ rRebootAsync(5) || return 0;
+
+ #
+ # The login again.
+ #
+ for($i=0, $t=$init_timeout; $i<$retry; $i++) {
+ print STDERR "rReboot: Try to get login prompt ($t sec)\n"
+ if $debug;
+# return 1 if $Remote->expect($t,
+# '-re', "$prompt_user{$Type}",
+# ) != undef;
+ return 1 if (defined $Remote->expect($t,
+ '-re', "$prompt_user{$Type}",
+ ));
+ sendMessages("\r");
+ $t = $timeout;
+ }
+ print STDERR "rReboot: never got login prompt\n";
+ print STDERR getOutput();
+ return 0;
+}
+
+########################################################################
+sub rPutfile($$$)
+{
+ my($from, $to, $timeout)=@_;
+
+ setTipVar($timeout, 'echocheck') || goto error;
+ print STDERR "rPutfile: Starting copying\n" if $debug;
+
+ unless(get_prompt($timeout)) {
+ goto error;
+ }
+
+ sendMessages("~p");
+ sendMessages("$from $to\r");
+
+ unless(get_prompt($timeout)) {
+ goto error;
+ }
+ #
+ #
+ #
+ sendMessages("\r"); # it's important if prompt pattern is ``^(>|#) ''
+# if($Remote->expect($timeout, '-re', "$prompt_command{$Type}") == undef) {
+ if(!defined $Remote->expect($timeout, '-re', "$prompt_command{$Type}")) {
+ print STDERR "Never sync with copy\n";
+ goto error;
+ }
+ print STDERR "rPutfile: Copying completed\n" if $debug;
+
+ #
+ #
+ #
+ return(1);
+
+error:
+ return(0);
+}
+
+########################################################################
+sub getOutput()
+{
+ my($s);
+
+ $s = sprintf("Before: ``%s''\nMatch: ``%s''\nAfter: ``%s''\n",
+ $Remote->exp_before(),
+ $Remote->exp_match(),
+ $Remote->exp_after()
+ );
+}
+
+########################################################################
+sub sendMessages(@)
+{
+ my(@strings)=@_;
+
+ foreach(@strings) {
+ if($SendSpeed == 0){
+ print $Remote $_;
+ } else {
+ $Remote-> send_slow($SendSpeed, $_);
+ }
+ }
+}
+
+########################################################################
+sub sendMessagesSync(@)
+{
+ my(@strings)=@_;
+ my($timeout)=5;
+
+ foreach(@strings) {
+ if($SendSpeed == 0){
+ print $Remote $_;
+ } else {
+ $Remote-> send_slow($SendSpeed, $_);
+ }
+
+ # Sync with command echo back
+ # It is important if a target is WIN2K
+# if($Remote->expect($timeout, "$_") == undef) {
+ if(!defined $Remote->expect($timeout, "$_")) {
+ print STDERR "sendMessagesSync: never got $_\n";
+ } else {
+ print STDERR "sendMessagesSync: got echo back of $_\n"
+ if $debug;
+ }
+ }
+}
+
+########################################################################
+sub setTipVar($@)
+{
+ my($timeout, @var)=@_;
+
+ foreach(@var) {
+ my($v)=$_;
+
+ unless(get_prompt($timeout)) {
+ return(0);
+ }
+
+ sendMessages("~s");
+ sendMessages("$v\r");
+
+ unless(get_prompt($timeout)) {
+ return(0);
+ }
+ }
+ return 1;
+}
+
+########################################################################
+sub rInit($)
+{
+ my($timeout)=@_;
+ my($i);
+
+ my($cmd)=$cmd_init{$Type};
+ return 0 if rCommandAsync($cmd, $timeout) == 0;
+
+ my(@ptn)=();
+ push(@ptn, '-re', "$prompt_init_confirm{$Type}")
+ if $prompt_init_confirm{$Type};
+ push(@ptn, '-re', "$prompt_command{$Type}")
+ if $prompt_command{$Type};
+
+ if(@ptn > 0) {
+ while(1) {
+# if($Remote->expect($timeout,
+# @ptn
+# ) == undef) {
+ if(!defined $Remote->expect($timeout,
+ @ptn
+ )) {
+ print STDERR
+ "Did not get any confirmation message in initialize\n";
+ return 0;
+ }
+ my($num)=$Remote->exp_match_number();
+ if($num == 1) {
+ print STDERR "rInit: Got confirm prompt #1\n" if $debug;
+ sendMessages("$reply_init_confirm{$Type}\r");
+ } elsif($num == 2) {
+ print STDERR "rInit: Got Command prompt #2\n" if $debug;
+ sendMessages("$cmd_exit{$Type}\r");
+ last;
+ } else {
+ print STDERR "rInit: Internal error\n";
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+########################################################################
+sub rShutdown($)
+{
+ my($timeout)=@_;
+ my($i);
+
+ my($cmd)=$cmd_shutdown{$Type};
+ return 0 if rCommandAsync($cmd, $timeout) == 0;
+
+ my(@ptn)=();
+ push(@ptn, '-re', "$prompt_shutdown_confirm{$Type}")
+ if $prompt_shutdown_confirm{$Type};
+
+ if(@ptn > 0) {
+ while(1) {
+# if($Remote->expect($timeout,
+# @ptn
+# ) == undef) {
+ if(!defined $Remote->expect($timeout,
+ @ptn
+ )) {
+ print STDERR
+ "Did not get any confirmation message in shutdown\n";
+ return 0;
+ }
+ my($num)=$Remote->exp_match_number();
+ if($num == 1) {
+ print STDERR "rShutdown: Got confirm prompt #1\n" if $debug;
+ sendMessages("$reply_shutdown_confirm{$Type}\n");
+ last;
+ } else {
+ print STDERR "rShutdown: Internal error\n";
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+########################################################################
+sub get_prompt($)
+{
+ my ($timeout) = @_;
+
+ my $count = 0;
+
+ for(my $d = 0; $d < $timeout; $d ++) {
+ if(defined($Remote->expect(1,
+ '-re', "$prompt_command{$Type}"))) {
+
+ $count ++;
+ last;
+ }
+
+ sendMessages("\r");
+ }
+
+ return($count);
+}
+
+########################################################################
+#rArg() for pass argments to *.rmt
+# return: always 1
+#######################################
+sub rArg()
+{
+ autoflush STDOUT 1;
+
+ my($v, $lval, $rval);
+ while($v = shift(@ARGV)) {
+ ($lval, $rval) = split(/=/, $v, 2);
+ $rval=1 if $rval =~ /^\s*$/;
+ $v='$main::rOpt_'."$lval".'=\''."$rval".'\'';
+ eval($v); # eval ``$main::rOpt<LVAL>=<RVAL>''
+ print STDERR "eval $v\n" if $debug;
+ }
+ return 1;
+}
+
+########################################################################
+1;
+
+########################################################################
+__END__
+
+=head1 NAME
+
+V6evalRemote - Perl interface to control NUT via serial line.
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 INTERFACE OF REMOTE CONTROL SCRIPT
+
+ <Default> <Descriptions>
+ ----------- -----------------------
+ -t<target_type> kame-freebsd kame-freebsd
+ hitachi-nr60
+ nec-libra
+ nec-libra-utcpip
+ yamaha-ws-one
+ -T<cu_command_path> cu cu command path
+ -d<serial_device_name> cuaa0c see cu(1)
+ -u<user_name> root user name
+ -p<password> v6eval user password
+ -U<login_prompt> 'ogin: ' Regular-expression
+ -P<password_prompt> 'assword:' Reqular-expression
+ -C<command_prompt> '(#|\$|%|>) ' Reqular-expression
+ -v<debug level> 0 $Expect::Debug
+ -i<internal debug level> 0 $Expect::Exp_Internal
+ -o<stdout> 0 $Expect::Log_Stdout
+ -V N/A enable other debug messages
+ -s<interval> 0 send speed (sec.)
+ -l{0,1} 0 enable rLogout()
+ -h N/A show this message
+
+=head1 SUPPORTED FUNCTION
+
+=head1 rOpen
+
+ Open the remote control program.
+
+ sub rOpen()
+
+=head2 RETURN VALUES
+
+ undef: error
+ Otherwise: Expect handle
+
+=head1 rLogin
+
+ Log into the target machine.
+
+ sub rLogin($) { my (
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rCommand
+
+ Execute a command.
+
+ sub rCommand($$) { my (
+ $command # command
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ ==1: success: command exit status is 0
+ ==2: warning: command exit status isn't 0
+ ==3: warning: command exit status unknown
+
+=head1 rReboot
+
+ Reboot the target machine.
+ The functin return when getting login prompt.
+
+ sub rReboot($) { my (
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rRebootAsync
+
+ Reboot the target machine.
+ The function return immediately when executing reboot command.
+
+ sub rRebootAsync($) { my (
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rPutfile
+
+ Copy a local file to a remote file.
+
+ sub rPutfile($$$) { my (
+ $from,
+ $to,
+ $timeout,
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rLogout
+
+ Log out of the target machine.
+
+ sub rLogout($) { my (
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rClose
+
+ Terminate the remote control program.
+
+ sub rClose($) { my (
+ $timeout # timeout sec.
+ )=@_;
+
+=head2 RETURN VALUES
+
+ ==0: error
+ !=0: success
+
+=head1 rType
+
+ Set/get a target machine type.
+
+ sub rType(;$)
+
+=head2 RETURN VALUES
+
+ Returns a target machine type.
+
+=head1 rDevice
+
+ Set/get serial device name.
+
+ sub rDevice(;$)
+
+=head2 RETURN VALUES
+
+ Returns serial device name.
+
+=head1 rUser
+
+ Set/get user name.
+
+ sub rUser(;$)
+
+=head2 RETURN VALUES
+
+ Returns user name.
+
+=head1 rUserPrompt
+
+ Set/get user prompt.
+
+ sub rUserPrompt(;$)
+
+=head2 RETURN VALUES
+
+ Returns user prompt.
+
+=head1 rPasswordPrompt
+
+ Set/get password prompt.
+
+ sub rPasswordPrompt(;$)
+
+=head2 RETURN VALUES
+
+ Returns password prompt.
+
+=head1 rCommandPrompt
+
+ Set/get command prompt.
+
+ sub rCommandPrompt(;$)
+
+=head2 RETURN VALUES
+
+ Returns command prompt.
+
+=head1 rDebug
+
+ Set/get Expect.pm's debug()
+
+ sub rDebug(;$)
+
+=head2 RETURN VALUES
+
+ Returns $Remote->debug().
+
+=head1 rExpInternal
+
+ Set/get Expect.pm's exp_internal()
+
+ sub rExpInternal(;$)
+
+=head2 RETURN VALUES
+
+ Returns $Remote->exp_internal()
+
+=head1 rLogStdout
+
+ Set/get Expect.pm's log_stdout()
+
+ sub rLogStdout(;$)
+
+=head2 RETURN VALUES
+
+ Returns $Remote->log_stdout()
+
+=head1 rRemoteSpeed
+
+ Set/get interval that characters are sent at.
+
+ sub rRemoteSpeed(;$)
+
+=head2 RETURN VALUES
+
+ Returns interval value.
+
+=head1 rEnableLogout
+
+ Enable(!=0)/Desable(==0, default) rLogout()
+
+ sub rEnableLogout(;$)
+
+=head2 RETURN VALUES
+
+ Returns previous value
+
+=head1 EXAMPLE
+
+ #!/usr/bin/perl
+
+ use V6evalRemote;
+
+ print "Open remote\n";
+ rOpen() || exit $V6evalRemote::exitFail;
+ $type=rType();
+
+ $rOpt_timeout=5 if (!defined $rOpt_timeout);
+
+ if($type eq "kame-freebsd") {
+ print "Login\n";
+ rLogin($rOpt_timeout) || exit $V6evalRemote::exitFail;
+ print "List dir\n";
+ rCommand("ls -a", $rOpt_timeout) || exit $V6evalRemote::exitFail;
+ print "Logout\n";
+ rLogout($rOpt_timeout) || exit $V6evalRemote::exitFail;
+ } else {
+ print "List dir of NUT($type) manually, ".
+ "then press enter key.\n";
+ <STDIN>;
+ }
+ print "Close remote\n";
+ rClose();
+ exit $V6evalRemote::exitPass;
+
+=head1 REQUIRED PACKAGES
+
+ Expect.pm
+ Stty.pm
+ Pty.pm
+
+=cut
diff -urN tahi-linux-3.0.12/script/pmod/V6evalRemote/blib/man3/V6evalRemote.3pm tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/blib/man3/V6evalRemote.3pm
--- tahi-linux-3.0.12/script/pmod/V6evalRemote/blib/man3/V6evalRemote.3pm 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/blib/man3/V6evalRemote.3pm 2007-12-10 20:48:42.000000000 +0100
@@ -0,0 +1,504 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "V6evalRemote 3"
+.TH V6evalRemote 3 "2007-12-09" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+V6evalRemote \- Perl interface to control NUT via serial line.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+.SH "INTERFACE OF REMOTE CONTROL SCRIPT"
+.IX Header "INTERFACE OF REMOTE CONTROL SCRIPT"
+.Vb 21
+\& <Default> <Descriptions>
+\& ----------- -----------------------
+\& -t<target_type> kame-freebsd kame-freebsd
+\& hitachi-nr60
+\& nec-libra
+\& nec-libra-utcpip
+\& yamaha-ws-one
+\& -T<cu_command_path> cu cu command path
+\& -d<serial_device_name> cuaa0c see cu(1)
+\& -u<user_name> root user name
+\& -p<password> v6eval user password
+\& -U<login_prompt> 'ogin: ' Regular-expression
+\& -P<password_prompt> 'assword:' Reqular-expression
+\& -C<command_prompt> '(#|\e$|%|>) ' Reqular-expression
+\& -v<debug level> 0 $Expect::Debug
+\& -i<internal debug level> 0 $Expect::Exp_Internal
+\& -o<stdout> 0 $Expect::Log_Stdout
+\& -V N/A enable other debug messages
+\& -s<interval> 0 send speed (sec.)
+\& -l{0,1} 0 enable rLogout()
+\& -h N/A show this message
+.Ve
+.SH "SUPPORTED FUNCTION"
+.IX Header "SUPPORTED FUNCTION"
+.SH "rOpen"
+.IX Header "rOpen"
+.Vb 1
+\& Open the remote control program.
+.Ve
+.PP
+.Vb 1
+\& sub rOpen()
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& undef: error
+\& Otherwise: Expect handle
+.Ve
+.SH "rLogin"
+.IX Header "rLogin"
+.Vb 1
+\& Log into the target machine.
+.Ve
+.PP
+.Vb 3
+\& sub rLogin($) { my (
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rCommand"
+.IX Header "rCommand"
+.Vb 1
+\& Execute a command.
+.Ve
+.PP
+.Vb 4
+\& sub rCommand($$) { my (
+\& $command # command
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 4
+\& ==0: error
+\& ==1: success: command exit status is 0
+\& ==2: warning: command exit status isn't 0
+\& ==3: warning: command exit status unknown
+.Ve
+.SH "rReboot"
+.IX Header "rReboot"
+.Vb 2
+\& Reboot the target machine.
+\& The functin return when getting login prompt.
+.Ve
+.PP
+.Vb 3
+\& sub rReboot($) { my (
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rRebootAsync"
+.IX Header "rRebootAsync"
+.Vb 2
+\& Reboot the target machine.
+\& The function return immediately when executing reboot command.
+.Ve
+.PP
+.Vb 3
+\& sub rRebootAsync($) { my (
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rPutfile"
+.IX Header "rPutfile"
+.Vb 1
+\& Copy a local file to a remote file.
+.Ve
+.PP
+.Vb 5
+\& sub rPutfile($$$) { my (
+\& $from,
+\& $to,
+\& $timeout,
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rLogout"
+.IX Header "rLogout"
+.Vb 1
+\& Log out of the target machine.
+.Ve
+.PP
+.Vb 3
+\& sub rLogout($) { my (
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rClose"
+.IX Header "rClose"
+.Vb 1
+\& Terminate the remote control program.
+.Ve
+.PP
+.Vb 3
+\& sub rClose($) { my (
+\& $timeout # timeout sec.
+\& )=@_;
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 2
+\& ==0: error
+\& !=0: success
+.Ve
+.SH "rType"
+.IX Header "rType"
+.Vb 1
+\& Set/get a target machine type.
+.Ve
+.PP
+.Vb 1
+\& sub rType(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns a target machine type.
+.Ve
+.SH "rDevice"
+.IX Header "rDevice"
+.Vb 1
+\& Set/get serial device name.
+.Ve
+.PP
+.Vb 1
+\& sub rDevice(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns serial device name.
+.Ve
+.SH "rUser"
+.IX Header "rUser"
+.Vb 1
+\& Set/get user name.
+.Ve
+.PP
+.Vb 1
+\& sub rUser(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns user name.
+.Ve
+.SH "rUserPrompt"
+.IX Header "rUserPrompt"
+.Vb 1
+\& Set/get user prompt.
+.Ve
+.PP
+.Vb 1
+\& sub rUserPrompt(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns user prompt.
+.Ve
+.SH "rPasswordPrompt"
+.IX Header "rPasswordPrompt"
+.Vb 1
+\& Set/get password prompt.
+.Ve
+.PP
+.Vb 1
+\& sub rPasswordPrompt(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns password prompt.
+.Ve
+.SH "rCommandPrompt"
+.IX Header "rCommandPrompt"
+.Vb 1
+\& Set/get command prompt.
+.Ve
+.PP
+.Vb 1
+\& sub rCommandPrompt(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns command prompt.
+.Ve
+.SH "rDebug"
+.IX Header "rDebug"
+.Vb 1
+\& Set/get Expect.pm's debug()
+.Ve
+.PP
+.Vb 1
+\& sub rDebug(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns $Remote->debug().
+.Ve
+.SH "rExpInternal"
+.IX Header "rExpInternal"
+.Vb 1
+\& Set/get Expect.pm's exp_internal()
+.Ve
+.PP
+.Vb 1
+\& sub rExpInternal(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns $Remote->exp_internal()
+.Ve
+.SH "rLogStdout"
+.IX Header "rLogStdout"
+.Vb 1
+\& Set/get Expect.pm's log_stdout()
+.Ve
+.PP
+.Vb 1
+\& sub rLogStdout(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns $Remote->log_stdout()
+.Ve
+.SH "rRemoteSpeed"
+.IX Header "rRemoteSpeed"
+.Vb 1
+\& Set/get interval that characters are sent at.
+.Ve
+.PP
+.Vb 1
+\& sub rRemoteSpeed(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns interval value.
+.Ve
+.SH "rEnableLogout"
+.IX Header "rEnableLogout"
+.Vb 1
+\& Enable(!=0)/Desable(==0, default) rLogout()
+.Ve
+.PP
+.Vb 1
+\& sub rEnableLogout(;$)
+.Ve
+.Sh "\s-1RETURN\s0 \s-1VALUES\s0"
+.IX Subsection "RETURN VALUES"
+.Vb 1
+\& Returns previous value
+.Ve
+.SH "EXAMPLE"
+.IX Header "EXAMPLE"
+.Vb 1
+\& #!/usr/bin/perl
+.Ve
+.PP
+.Vb 1
+\& use V6evalRemote;
+.Ve
+.PP
+.Vb 3
+\& print "Open remote\en";
+\& rOpen() || exit $V6evalRemote::exitFail;
+\& $type=rType();
+.Ve
+.PP
+.Vb 1
+\& $rOpt_timeout=5 if (!defined $rOpt_timeout);
+.Ve
+.PP
+.Vb 15
+\& if($type eq "kame-freebsd") {
+\& print "Login\en";
+\& rLogin($rOpt_timeout) || exit $V6evalRemote::exitFail;
+\& print "List dir\en";
+\& rCommand("ls -a", $rOpt_timeout) || exit $V6evalRemote::exitFail;
+\& print "Logout\en";
+\& rLogout($rOpt_timeout) || exit $V6evalRemote::exitFail;
+\& } else {
+\& print "List dir of NUT($type) manually, ".
+\& "then press enter key.\en";
+\& <STDIN>;
+\& }
+\& print "Close remote\en";
+\& rClose();
+\& exit $V6evalRemote::exitPass;
+.Ve
+.SH "REQUIRED PACKAGES"
+.IX Header "REQUIRED PACKAGES"
+.Vb 3
+\& Expect.pm
+\& Stty.pm
+\& Pty.pm
+.Ve
diff -urN tahi-linux-3.0.12/script/pmod/V6evalRemote/Makefile.tmp tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/Makefile.tmp
--- tahi-linux-3.0.12/script/pmod/V6evalRemote/Makefile.tmp 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/Makefile.tmp 2007-12-10 20:48:58.000000000 +0100
@@ -0,0 +1,789 @@
+# This Makefile is for the V6evalRemote extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.30 (Revision: Revision: 4535 ) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# MAKEFILE => q[Makefile.tmp]
+# NAME => q[V6evalRemote]
+# VERSION => q[1.00]
+# dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+# linkext => { LINKTYPE=>q[] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl5/5.8.8/i586-linux-thread-multi/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared
+LDFLAGS =
+LIBC = /lib/libc-2.6.1.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.6.22
+RANLIB = :
+SITELIBEXP = /usr/lib/perl5/site_perl/5.8.8
+SITEARCHEXP = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+SO = so
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.8.8
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = V6evalRemote
+NAME_SYM = V6evalRemote
+VERSION = 1.00
+VERSION_MACRO = VERSION
+VERSION_SYM = 1_00
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1.00
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR =
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/lib/perl5/5.8.8
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/lib/perl5/site_perl/5.8.8
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.8.8
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/lib/perl5/5.8.8
+PERL_ARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile.tmp
+MAKEFILE_OLD = Makefile.tmp.old
+MAKE_APERL_FILE = Makefile.tmp.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER = /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.30
+MM_REVISION = Revision: 4535
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = V6evalRemote
+BASEEXT = V6evalRemote
+PARENT_NAME =
+DLBASE = $(BASEEXT)
+VERSION_FROM =
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP =
+
+# Handy lists of source code files:
+XS_FILES =
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS = V6evalRemote.pm
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR = $(INST_LIB)
+INST_ARCHLIBDIR = $(INST_ARCHLIB)
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+# Extra linker info
+EXPORT_LIST =
+PERL_ARCHIVE =
+PERL_ARCHIVE_AFTER =
+
+
+TO_INST_PM = V6evalRemote.pm
+
+PM_TO_BLIB = V6evalRemote.pm \
+ $(INST_LIB)/V6evalRemote.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.50
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MACROSTART =
+MACROEND =
+USEMAKEFILE = -f
+FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = V6evalRemote
+DISTVNAME = V6evalRemote-1.00
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+ $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+ $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+ $(NOECHO) $(NOOP)
+
+help :
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+ $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+ $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+ $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+ $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_BIN)
+ $(NOECHO) $(CHMOD) 755 $(INST_BIN)
+ $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+ $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+ $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext ::
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all \
+ V6evalRemote.pm \
+ V6evalRemote.pm
+ $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
+ V6evalRemote.pm $(INST_MAN3DIR)/V6evalRemote.$(MAN3EXT)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+ - $(RM_F) \
+ *$(LIB_EXT) core \
+ core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
+ core.[0-9][0-9] $(BASEEXT).bso \
+ pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+ $(BASEEXT).x $(BOOTSTRAP) \
+ perl$(EXE_EXT) tmon.out \
+ *$(OBJ_EXT) pm_to_blib \
+ $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+ core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+ core.*perl.*.? $(MAKE_APERL_FILE) \
+ perl $(BASEEXT).def \
+ core.[0-9][0-9][0-9] mon.out \
+ lib$(BASEEXT).def perlmain.c \
+ perl.exe so_locations \
+ $(BASEEXT).exp
+ - $(RM_RF) \
+ blib
+ - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge :: clean realclean_subdirs
+ - $(RM_F) \
+ $(MAKEFILE_OLD) $(FIRST_MAKEFILE)
+ - $(RM_RF) \
+ $(DISTVNAME)
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+ $(NOECHO) $(ECHO) Generating META.yml
+ $(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
+ $(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
+ $(NOECHO) $(ECHO) 'name: V6evalRemote' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version: 1.00' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version_from: ' >> META_new.yml
+ $(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
+ $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) '' >> META_new.yml
+ $(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
+ $(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30' >> META_new.yml
+ -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+
+
+# --- MakeMaker signature section:
+signature :
+ cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+ $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+ $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+ $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta
+ $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+ -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
+ $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+ cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+ $(NOECHO) $(NOOP)
+
+install_perl :: all pure_perl_install doc_perl_install
+ $(NOECHO) $(NOOP)
+
+install_site :: all pure_site_install doc_site_install
+ $(NOECHO) $(NOOP)
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+ $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+ $(INST_BIN) $(DESTINSTALLSITEBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLVENDORLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+ $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+ $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+ $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+ $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+ -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+ $(PERLRUN) Makefile.PL
+ $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+ $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+ $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ $(NOECHO) $(PERLRUNINST) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+ $(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
+
+test_dynamic :: pure_all
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,00,0,0">' > $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <AUTHOR></AUTHOR>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i586-linux-thread-multi" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(TO_INST_PM)
+ $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
+ V6evalRemote.pm $(INST_LIB)/V6evalRemote.pm
+ $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff -urN tahi-linux-3.0.12/script/pmod/V6evalRemote/V6evalRemote.pm tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/V6evalRemote.pm
--- tahi-linux-3.0.12/script/pmod/V6evalRemote/V6evalRemote.pm 2006-02-03 11:40:15.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/V6evalRemote.pm 2007-12-15 11:01:14.000000000 +0100
@@ -125,114 +125,111 @@
# login prompt
%prompt_user = (
+ 'kame-freebsd', 'login: ',
+ 'freebsd43-i386', 'login: ',
+ 'hitachi-nr60', 'login:',
+ 'hitachi-nr60-v2', 'login:',
+ 'hitachi-gr2k', 'login:',
+ 'hitachi-gr2k-beta', 'login:',
+ 'nec-libra', 'login: ',
+ 'nec-libra-utcpip', 'login: ',
+ 'nec-mip6', 'login: ',
+ 'nec-ix1k', 'login: ',
+ 'sfc-mip6', 'login: ',
+ 'yamaha-ws-one', '(starts|Yamaha Corporation)',
+ 'linux-v6', 'login: ',
+ 'sun-solaris', 'login: ',
+ 'ms-win2k', 'Login: ',
+ 'cisco-ios', 'get started',
+ 'iij-seil', 'login: ',
+ 'telebit-tbc2k', 'Username:',
+ 'mgcs-sj6', 'login: ',
+ 'netbsd-i386', 'login: ',
+ 'kame-netbsd-i386', 'login: ',
+ 'freebsd-i386', 'login: ',
+ 'openbsd-i386', 'login: ',
+ 'aix', 'login: ',
+ 'hpux', 'login: ',
+ 'usagi-i386', 'login: ',
+ 'usagi24-i386', 'login: ',
+ 'mipl', 'login: ',
+ 'lcna', 'login: ',
+ 'ttb3010', 'login: ',
+ 'unitedlinux', 'login: ',
+ 'suse', 'login: ',
);
-# %prompt_user = (
-# 'kame-freebsd', 'login: ',
-# 'freebsd43-i386', 'login: ',
-# 'hitachi-nr60', 'login:',
-# 'hitachi-nr60-v2', 'login:',
-# 'hitachi-gr2k', 'login:',
-# 'hitachi-gr2k-beta', 'login:',
-# 'nec-libra', 'login: ',
-# 'nec-libra-utcpip', 'login: ',
-# 'nec-mip6', 'login: ',
-# 'nec-ix1k', 'login: ',
-# 'sfc-mip6', 'login: ',
-# 'yamaha-ws-one', '(starts|Yamaha Corporation)',
-# 'linux-v6', 'login: ',
-# 'sun-solaris', 'login: ',
-# 'ms-win2k', 'Login: ',
-# 'cisco-ios', 'get started',
-# 'iij-seil', 'login: ',
-# 'telebit-tbc2k', 'Username:',
-# 'mgcs-sj6', 'login: ',
-# 'netbsd-i386', 'login: ',
-# 'kame-netbsd-i386', 'login: ',
-# 'freebsd-i386', 'login: ',
-# 'openbsd-i386', 'login: ',
-# 'aix', 'login: ',
-# 'hpux', 'login: ',
-# 'usagi-i386', 'login: ',
-# 'usagi24-i386', 'login: ',
-# 'mipl', 'login: ',
-# 'lcna', 'login: ',
-# 'ttb3010', 'login: ',
-# 'unitedlinux', 'login: ',
-# );
# password prompt
%prompt_password = (
+ 'kame-freebsd', 'Password:',
+ 'freebsd43-i386', 'Password:',
+ 'hitachi-nr60', 'Password:',
+ 'hitachi-nr60-v2', 'Password:',
+ 'hitachi-gr2k', 'Password:',
+ 'hitachi-gr2k-beta', 'Password:',
+ 'nec-libra', 'Password:',
+ 'nec-libra-utcpip', 'Password:',
+ 'nec-mip6', 'Password:',
+ 'nec-ix1k', 'Password:',
+ 'sfc-mip6', 'Password:',
+ 'yamaha-ws-one', 'Password:',
+ 'linux-v6', 'Password: ',
+ 'sun-solaris', 'Password:',
+ 'ms-win2k', 'Password:',
+ 'cisco-ios', 'Password:',
+ 'iij-seil', 'DUMMY_PROMPT', # dummy
+ 'telebit-tbc2k', 'Password:',
+ 'mgcs-sj6', 'Password:',
+ 'netbsd-i386', 'Password:',
+ 'kame-netbsd-i386', 'Password:',
+ 'freebsd-i386', 'Password:',
+ 'openbsd-i386', 'Password:',
+ 'aix', 'Password:',
+ 'hpux', 'Password:',
+ 'usagi-i386', 'Password: ',
+ 'usagi24-i386', 'Password: ',
+ 'mipl', 'Password: ',
+ 'lcna', 'Password:',
+ 'ttb3010', 'Password:',
+ 'unitedlinux', 'Password: ',
+ 'suse', 'Password: ',
);
-# %prompt_password = (
-# 'kame-freebsd', 'Password:',
-# 'freebsd43-i386', 'Password:',
-# 'hitachi-nr60', 'Password:',
-# 'hitachi-nr60-v2', 'Password:',
-# 'hitachi-gr2k', 'Password:',
-# 'hitachi-gr2k-beta', 'Password:',
-# 'nec-libra', 'Password:',
-# 'nec-libra-utcpip', 'Password:',
-# 'nec-mip6', 'Password:',
-# 'nec-ix1k', 'Password:',
-# 'sfc-mip6', 'Password:',
-# 'yamaha-ws-one', 'Password:',
-# 'linux-v6', 'Password: ',
-# 'sun-solaris', 'Password:',
-# 'ms-win2k', 'Password:',
-# 'cisco-ios', 'Password:',
-# 'iij-seil', 'DUMMY_PROMPT', # dummy
-# 'telebit-tbc2k', 'Password:',
-# 'mgcs-sj6', 'Password:',
-# 'netbsd-i386', 'Password:',
-# 'kame-netbsd-i386', 'Password:',
-# 'freebsd-i386', 'Password:',
-# 'openbsd-i386', 'Password:',
-# 'aix', 'Password:',
-# 'hpux', 'Password:',
-# 'usagi-i386', 'Password: ',
-# 'usagi24-i386', 'Password: ',
-# 'mipl', 'Password: ',
-# 'lcna', 'Password:',
-# 'ttb3010', 'Password:',
-# 'unitedlinux', 'Password: ',
-# );
# command prompt
%prompt_command = (
+ 'kame-freebsd', '(\$|#) ',
+ 'freebsd43-i386', '(\$|#) ',
+ 'hitachi-nr60', '% ',
+ 'hitachi-nr60-v2', '% ',
+ 'hitachi-gr2k', '(command|admin)(:|>) ',
+ 'hitachi-gr2k-beta', '(command|admin): ',
+ 'nec-libra', '(\$|#) ',
+ 'nec-libra-utcpip', '(\$|#) ',
+ 'nec-mip6', '(\$|#) ',
+ 'nec-ix1k', '(\$|#) ',
+ 'sfc-mip6', '(\$|#) ',
+ 'yamaha-ws-one', '(>|#) ',
+ 'linux-v6', '# ',
+ 'sun-solaris', '# ',
+ 'ms-win2k', '.:.>',
+ 'cisco-ios', '(>|#)',
+ 'iij-seil', '\r(>|#) ',
+ 'telebit-tbc2k', '(> |% |accepted)',
+ 'mgcs-sj6', '(\$|#) ',
+ 'netbsd-i386', '(\$|#) ',
+ 'kame-netbsd-i386', '(\$|#) ',
+ 'freebsd-i386', '(\$|#) ',
+ 'openbsd-i386', '(\$|#) ',
+ 'aix', '(\$|#) ',
+ 'hpux', '(\$|#) ',
+ 'usagi-i386', '# ',
+ 'usagi24-i386', '# ',
+ 'mipl', '# ',
+ 'lcna', '(\$|#) ',
+ 'ttb3010', '(>|#) ',
+ 'unitedlinux', '# ',
+ 'suse', '# ',
);
-# %prompt_command = (
-# 'kame-freebsd', '(\$|#) ',
-# 'freebsd43-i386', '(\$|#) ',
-# 'hitachi-nr60', '% ',
-# 'hitachi-nr60-v2', '% ',
-# 'hitachi-gr2k', '(command|admin)(:|>) ',
-# 'hitachi-gr2k-beta', '(command|admin): ',
-# 'nec-libra', '(\$|#) ',
-# 'nec-libra-utcpip', '(\$|#) ',
-# 'nec-mip6', '(\$|#) ',
-# 'nec-ix1k', '(\$|#) ',
-# 'sfc-mip6', '(\$|#) ',
-# 'yamaha-ws-one', '(>|#) ',
-# 'linux-v6', '# ',
-# 'sun-solaris', '# ',
-# 'ms-win2k', '.:.>',
-# 'cisco-ios', '(>|#)',
-# 'iij-seil', '\r(>|#) ',
-# 'telebit-tbc2k', '(> |% |accepted)',
-# 'mgcs-sj6', '(\$|#) ',
-# 'netbsd-i386', '(\$|#) ',
-# 'kame-netbsd-i386', '(\$|#) ',
-# 'freebsd-i386', '(\$|#) ',
-# 'openbsd-i386', '(\$|#) ',
-# 'aix', '(\$|#) ',
-# 'hpux', '(\$|#) ',
-# 'usagi-i386', '# ',
-# 'usagi24-i386', '# ',
-# 'mipl', '# ',
-# 'lcna', '(\$|#) ',
-# 'ttb3010', '(>|#) ',
-# 'unitedlinux', '# ',
-# );
# command of the admin mode if any
%cmd_admin = (
@@ -256,40 +253,39 @@
# logout command
%cmd_exit = (
+ 'kame-freebsd', 'exit',
+ 'freebsd43-i386', 'exit',
+ 'hitachi-nr60', 'exit',
+ 'hitachi-nr60-v2', 'exit',
+ 'hitachi-gr2k', 'exit',
+ 'hitachi-gr2k-beta', 'exit',
+ 'nec-libra', 'exit',
+ 'nec-libra-utcpip', 'exit',
+ 'nec-mip6', 'exit',
+ 'nec-ix1k', 'exit',
+ 'sfc-mip6', 'exit',
+ 'yamaha-ws-one', 'exit',
+ 'linux-v6', 'exit',
+ 'sun-solaris', 'exit',
+ 'ms-win2k', 'exit',
+ 'cisco-ios', 'exit',
+ 'iij-seil', 'exit',
+ 'telebit-tbc2k', "\elogout\r",
+ 'mgcs-sj6', 'exit',
+ 'netbsd-i386', 'exit',
+ 'kame-netbsd-i386', 'exit',
+ 'freebsd-i386', 'exit',
+ 'openbsd-i386', 'exit',
+ 'aix', 'exit',
+ 'hpux', 'exit',
+ 'usagi-i386', 'exit',
+ 'usagi24-i386', 'exit',
+ 'mipl', 'exit',
+ 'lcna', 'exit',
+ 'ttb3010', 'logout',
+ 'unitedlinux', 'exit',
+ 'suse', 'exit',
);
-# %cmd_exit = (
-# 'kame-freebsd', 'exit',
-# 'freebsd43-i386', 'exit',
-# 'hitachi-nr60', 'exit',
-# 'hitachi-nr60-v2', 'exit',
-# 'hitachi-gr2k', 'exit',
-# 'hitachi-gr2k-beta', 'exit',
-# 'nec-libra', 'exit',
-# 'nec-libra-utcpip', 'exit',
-# 'nec-mip6', 'exit',
-# 'nec-ix1k', 'exit',
-# 'sfc-mip6', 'exit',
-# 'yamaha-ws-one', 'exit',
-# 'linux-v6', 'exit',
-# 'sun-solaris', 'exit',
-# 'ms-win2k', 'exit',
-# 'cisco-ios', 'exit',
-# 'iij-seil', 'exit',
-# 'telebit-tbc2k', "\elogout\r",
-# 'mgcs-sj6', 'exit',
-# 'netbsd-i386', 'exit',
-# 'kame-netbsd-i386', 'exit',
-# 'freebsd-i386', 'exit',
-# 'openbsd-i386', 'exit',
-# 'aix', 'exit',
-# 'hpux', 'exit',
-# 'usagi-i386', 'exit',
-# 'usagi24-i386', 'exit',
-# 'mipl', 'exit',
-# 'lcna', 'exit',
-# 'ttb3010', 'logout',
-# 'unitedlinux', 'exit',
-# );
# confirmation for logout
%prompt_exit_confirm = (
@@ -351,40 +347,39 @@
# reboot command
%cmd_reboot = (
+ 'kame-freebsd', 'reboot',
+ 'freebsd43-i386', 'reboot',
+ 'hitachi-nr60', 'reboot',
+ 'hitachi-nr60-v2', 'reboot',
+ 'hitachi-gr2k', 'boot -nf',
+ 'hitachi-gr2k-beta', 'boot -nf',
+ 'nec-libra', 'reboot',
+ 'nec-libra-utcpip', 'reboot',
+ 'nec-mip6', 'reboot',
+ 'nec-ix1k', 'reload y',
+ 'sfc-mip6', 'reboot',
+ 'yamaha-ws-one', 'restart',
+ 'linux-v6', 'reboot',
+ 'sun-solaris', 'reboot',
+ # ms-win2k
+ 'cisco-ios', 'reload',
+ 'iij-seil', 'reboot',
+ 'telebit-tbc2k', 'restart',
+ 'mgcs-sj6', 'reboot',
+ 'netbsd-i386', 'reboot',
+ 'kame-netbsd-i386', 'reboot',
+ 'freebsd-i386', 'reboot',
+ 'openbsd-i386', 'reboot',
+ 'aix', 'reboot',
+ 'hpux', 'reboot',
+ 'usagi-i386', 'reboot',
+ 'usagi24-i386', 'reboot',
+ 'mipl', 'reboot',
+ 'lcna', 'reboot',
+ 'ttb3010', 'reboot',
+ 'unitedlinux', 'reboot',
+ 'suse', 'reboot',
);
-# %cmd_reboot = (
-# 'kame-freebsd', 'reboot',
-# 'freebsd43-i386', 'reboot',
-# 'hitachi-nr60', 'reboot',
-# 'hitachi-nr60-v2', 'reboot',
-# 'hitachi-gr2k', 'boot -nf',
-# 'hitachi-gr2k-beta', 'boot -nf',
-# 'nec-libra', 'reboot',
-# 'nec-libra-utcpip', 'reboot',
-# 'nec-mip6', 'reboot',
-# 'nec-ix1k', 'reload y',
-# 'sfc-mip6', 'reboot',
-# 'yamaha-ws-one', 'restart',
-# 'linux-v6', 'reboot',
-# 'sun-solaris', 'reboot',
-# # ms-win2k
-# 'cisco-ios', 'reload',
-# 'iij-seil', 'reboot',
-# 'telebit-tbc2k', 'restart',
-# 'mgcs-sj6', 'reboot',
-# 'netbsd-i386', 'reboot',
-# 'kame-netbsd-i386', 'reboot',
-# 'freebsd-i386', 'reboot',
-# 'openbsd-i386', 'reboot',
-# 'aix', 'reboot',
-# 'hpux', 'reboot',
-# 'usagi-i386', 'reboot',
-# 'usagi24-i386', 'reboot',
-# 'mipl', 'reboot',
-# 'lcna', 'reboot',
-# 'ttb3010', 'reboot',
-# 'unitedlinux', 'reboot',
-# );
# final confirmation for reboot if any
%prompt_reboot_confirm = (
@@ -439,37 +434,36 @@
# command for reading command status
%cmd_status = (
+ 'kame-freebsd', 'echo $status',
+ 'freebsd43-i386', 'echo $status',
+ 'hitachi-nr60', 'echo $status',
+ 'hitachi-nr60-v2', 'echo $status',
+ 'hitachi-gr2k', 'echo $status',
+ 'hitachi-gr2k-beta', 'echo $status',
+ 'nec-libra', 'echo $status',
+ 'nec-libra-utcpip', 'echo $status',
+ 'nec-mip6', 'echo $status',
+ 'sfc-mip6', 'echo $status',
+ 'linux-v6', 'echo $?',
+ 'sun-solaris', 'echo $?',
+ # ms-win2k
+ # cisco-ios
+ # iij-seil
+ # ttb3010
+ 'mgcs-sj6', 'echo $status',
+ 'netbsd-i386', 'echo $status',
+ 'kame-netbsd-i386', 'echo $status',
+ 'freebsd-i386', 'echo $status',
+ 'openbsd-i386', 'echo $status',
+ 'aix', 'echo $?',
+ 'hpux', 'echo $?',
+ 'usagi-i386', 'echo $?',
+ 'usagi24-i386', 'echo $?',
+ 'mipl', 'echo $?',
+ 'lcna', 'echo $status',
+ 'unitedlinux', 'echo $?',
+ 'suse', 'echo $?',
);
-# %cmd_status = (
-# 'kame-freebsd', 'echo $status',
-# 'freebsd43-i386', 'echo $status',
-# 'hitachi-nr60', 'echo $status',
-# 'hitachi-nr60-v2', 'echo $status',
-# 'hitachi-gr2k', 'echo $status',
-# 'hitachi-gr2k-beta', 'echo $status',
-# 'nec-libra', 'echo $status',
-# 'nec-libra-utcpip', 'echo $status',
-# 'nec-mip6', 'echo $status',
-# 'sfc-mip6', 'echo $status',
-# 'linux-v6', 'echo $?',
-# 'sun-solaris', 'echo $?',
-# # ms-win2k
-# # cisco-ios
-# # iij-seil
-# # ttb3010
-# 'mgcs-sj6', 'echo $status',
-# 'netbsd-i386', 'echo $status',
-# 'kame-netbsd-i386', 'echo $status',
-# 'freebsd-i386', 'echo $status',
-# 'openbsd-i386', 'echo $status',
-# 'aix', 'echo $?',
-# 'hpux', 'echo $?',
-# 'usagi-i386', 'echo $?',
-# 'usagi24-i386', 'echo $?',
-# 'mipl', 'echo $?',
-# 'lcna', 'echo $status',
-# 'unitedlinux', 'echo $?',
-# );
}
########################################################################
Dateien tahi-linux-3.0.12/script/pmod/V6evalRemote/.V6evalRemote.pm.swp und tahi-linux-3.0.12-linux/script/pmod/V6evalRemote/.V6evalRemote.pm.swp sind verschieden.
diff -urN tahi-linux-3.0.12/script/pmod/V6evalTool/blib/lib/V6evalTool.pm tahi-linux-3.0.12-linux/script/pmod/V6evalTool/blib/lib/V6evalTool.pm
--- tahi-linux-3.0.12/script/pmod/V6evalTool/blib/lib/V6evalTool.pm 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalTool/blib/lib/V6evalTool.pm 2007-12-09 23:20:00.000000000 +0100
@@ -0,0 +1,3217 @@
+#
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Yokogawa Electric Corporation,
+# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
+# All rights reserved.
+#
+# Redistribution and use of this software in source and binary forms, with
+# or without modification, are permitted provided that the following
+# conditions and disclaimer are agreed and accepted by the user:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the names of the copyrighters, the name of the project which
+# is related to this software (hereinafter referred to as "project") nor
+# the names of the contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# 4. No merchantable use may be permitted without prior written
+# notification to the copyrighters. However, using this software for the
+# purpose of testing or evaluating any products including merchantable
+# products may be permitted without any notification to the copyrighters.
+#
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
+# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
+# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $TAHI: v6eval/script/pmod/V6evalTool/V6evalTool.pm,v 1.200 2006/03/09 09:10:57 akisada Exp $
+#
+########################################################################
+package V6evalTool;
+use Exporter;
+@ISA = qw(Exporter);
+use Fcntl;
+use POSIX qw(tmpnam);
+
+use File::Basename;
+
+@EXPORT = qw(
+ vSend
+ vSend2
+ vSend3
+ vRecv
+ vRecv2
+ vRecv3
+ vCapture
+ vStop
+ vClear
+ vLog
+ vLogHTML
+ vErrmsg
+ vRoundoff
+ vRemote
+ vRemoteAsync
+ vRemoteAsyncWait
+ vSleep
+ vSleep2
+ vCPP
+ vNewPacketFile
+ vOriginalPacketFile
+ vMAC2LLAddr
+ getChildStatus
+ getChildPid
+ checkChild
+ vDHGen
+ vDHGen2
+ vDHComp
+ vDHComp2
+ vPRFComp
+ vIVComp
+ vX509dec
+ vSigSign
+ vSigVrfy
+ vFile2Hex
+);
+
+my %storedSIG = ();
+
+########################################################################
+$exitPass=0; # PASS
+$exitIgnore=1; # Ignore (ex. initializeation script)
+$exitNS=2; # Not yet supported
+$exitWarn=3; # WARN
+$exitHostOnly=4; # Host Only
+$exitRouterOnly=5; # Router Only
+$exitSpecialOnly=6; # Special Only
+$exitExceptHost=7; # Except Host
+$exitExceptRouter=8; # Except Router
+$exitExceptSpecial=9; # Except Special
+$exitSkip=10; # Skip
+$exitTypeMismatch=11; # Type Mismatch
+
+$exitFail=32; # FAIL
+$exitInitFail=33; # Initialization Fail
+$exitCleanupFail=34; # Cleanup Fail
+ # 35 - 63: reserved for future use
+
+$exitFatal=64; # FATAL (terminate series of related tests)
+
+########################################################################
+sub checkArgs();
+sub checkFile($);
+sub initialize();
+sub getDateString();
+sub getVersion();
+sub printBanner();
+sub printUsage();
+sub execPktctl($$@;$);
+sub execCmd($;$);
+sub forkCmd($$);
+sub prLog($;$);
+sub prOut($);
+sub prTrace($);
+sub prErr($);
+sub prErrExit($);
+sub checkChild();
+sub searchPath($$);
+sub getField(@);
+sub getField2(@);
+sub getField3(@);
+sub HTML2TXT($);
+sub vCPP(;@);
+sub vNewPacketFile($;@);
+sub vOriginalPacketFile();
+sub baseArgs();
+sub vDHGen($$);
+sub vDHGen2($$);
+sub vDHComp($$$$$);
+sub vDHComp2($$$$$);
+sub vPRFComp($$$);
+sub vIVComp($$);
+sub vX509dec($);
+sub vSigSign($$);
+sub vSigVrfy($$$);
+sub vFile2Hex($);
+sub addMD5($$$);
+sub getMD5($);
+
+
+
+########################################################################
+sub
+vSend($@)
+{
+ my ($ifname, # target interface name
+ @frames # frame names to send
+ ) = @_;
+
+ my $timestr=getTimeStamp();
+ if($vLogStat==$vLogStatOpenRow){
+ prLog("</TD>\n</TR>");
+ }
+ prLog("<TR VALIGN=\"TOP\">\n<TD>$timestr</TD><TD>");
+ prLog("vSend($ifname,@frames)<BR>");
+
+ my $cmd= "$ToolDir/pktsend $BaseArgs -i $ifname @frames";
+ my @lines; my %ret; my $fCnt=0; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ undef @pktrevers;
+ foreach( @lines ){
+ if( /^\s*(\d+\.\d+)$/ ) {
+ $fCnt++;
+ $ret{"sentTime${fCnt}"} = $1;
+ } else {
+ $pktrevers[$fCnt+1] .= "$_\n";
+ }
+ }
+
+ for($i=1;$i<=$fCnt;$i++){
+ $_= $frames[$i-1];
+ if($main::pktdesc{$_}){
+ $msg="$main::pktdesc{$_}";
+ } else {
+ $msg="send $_";
+ }
+ prOut(HTML2TXT($msg));
+ prLog("<A NAME=\"vSend${vSendPKT}\"></A>");
+ prLog("<A HREF=\"#vSendPKT${vSendPKT}\">$msg</A><BR>");
+
+ $senttime=getTimeString($ret{"sentTime${i}"});
+ $pktrevlog .="<A NAME=\"vSendPKT${vSendPKT}\"></A>";
+ $pktrevlog .="<A HREF=\"#vSend${vSendPKT}\">$msg at $senttime</A>\n";
+ $pktrevlog .="<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .=$Xpktrevers;
+
+ $pktrevlog .="</PRE><HR>";
+
+ $vSendPKT++;
+ }
+ if($ret{status}){
+ prErrExit("vSend() return status=$ret{status}\n");
+ }
+ prLog("\n</TD>\n</TR>");
+ $vLogStat=$vLogStatCloseRow;
+ %ret;
+}
+
+
+
+################################################################
+# vSend2($ifname, @frames) #
+# #
+# $ifname - target interface name #
+# @frames - frame names to send #
+################################################################
+sub
+vSend2($@)
+{
+ my ($ifname, @frames) = @_;
+
+ my $timestr = getTimeStamp();
+
+ if($vLogStat == $vLogStatOpenRow){
+ prLog("</TD>\n");
+ prLog("</TR>");
+ }
+
+ prLog("<TR VALIGN=\"top\">\n");
+ prLog("<TD>$timestr</TD><TD>");
+ prLog("vSend($ifname,@frames)<BR>");
+
+ my $cmd = "$ToolDir/pktsend $BaseArgs -i $ifname @frames";
+
+ my $fCnt = 0;
+
+ my ($status, @lines) = execCmd($cmd);
+
+ my %ret = getField2(@lines);
+ $ret{'status'}=$status;
+
+ undef(@pktrevers);
+
+ foreach(@lines){
+ if($_ =~ /^\s*(\d+\.\d+)$/) {
+ $fCnt ++;
+ $ret{"sentTime${fCnt}"} = $1;
+ } else {
+ $pktrevers[$fCnt + 1] .= "$_\n";
+ }
+ }
+
+ for(my $i = 1; $i <= $fCnt; $i ++) {
+ $_ = $frames[$i - 1];
+ if($main::pktdesc{$_}){
+ $msg = "$main::pktdesc{$_}";
+ } else {
+ $msg = "send $_";
+ }
+
+ prOut(HTML2TXT($msg));
+
+ prLog("<A NAME=\"vSend${vSendPKT}\"></A>");
+ prLog("<A HREF=\"#vSendPKT${vSendPKT}\">$msg</A><BR>");
+
+ $senttime = getTimeString($ret{"sentTime${i}"});
+
+ $pktrevlog .="<A NAME=\"vSendPKT${vSendPKT}\"></A>";
+ $pktrevlog .="<A HREF=\"#vSend${vSendPKT}\">$msg at $senttime</A>\n";
+ $pktrevlog .="<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .=$Xpktrevers;
+
+ $pktrevlog .="</PRE><HR>";
+
+ $vSendPKT ++;
+ }
+
+ if($ret{status}){
+ prErrExit("vSend() return status=$ret{status}\n");
+ }
+
+ prLog("\n</TD>\n</TR>");
+ $vLogStat = $vLogStatCloseRow;
+
+ return(%ret);
+}
+
+
+
+sub
+vSend3($@)
+{
+ my ($ifname, @frames) = @_;
+
+ my $timestr = getTimeStamp();
+
+ if($vLogStat == $vLogStatOpenRow){
+ prLog("</TD>\n");
+ prLog("</TR>");
+ }
+
+ prLog("<TR VALIGN=\"top\">\n");
+ prLog("<TD>$timestr</TD><TD>");
+ prLog("vSend($ifname,@frames)<BR>");
+
+ my $cmd = "$ToolDir/pktsend $BaseArgs -i $ifname @frames";
+
+ my $fCnt = 0;
+
+ my ($status, @lines) = execCmd($cmd);
+
+ my %ret = getField3(@lines);
+ $ret{'status'}=$status;
+
+ undef(@pktrevers);
+
+ foreach(@lines){
+ if($_ =~ /^\s*(\d+\.\d+)$/) {
+ $fCnt ++;
+ $ret{"sentTime${fCnt}"} = $1;
+ } else {
+ $pktrevers[$fCnt + 1] .= "$_\n";
+ }
+ }
+
+ for(my $i = 1; $i <= $fCnt; $i ++) {
+ $_ = $frames[$i - 1];
+ if($main::pktdesc{$_}){
+ $msg = "$main::pktdesc{$_}";
+ } else {
+ $msg = "send $_";
+ }
+
+ prOut(HTML2TXT($msg));
+
+ prLog("<A NAME=\"vSend${vSendPKT}\"></A>");
+ prLog("<A HREF=\"#vSendPKT${vSendPKT}\">$msg</A><BR>");
+
+ $senttime = getTimeString($ret{"sentTime${i}"});
+
+ $pktrevlog .="<A NAME=\"vSendPKT${vSendPKT}\"></A>";
+ $pktrevlog .="<A HREF=\"#vSend${vSendPKT}\">$msg at $senttime</A>\n";
+ $pktrevlog .="<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .=$Xpktrevers;
+
+ $pktrevlog .="</PRE><HR>";
+
+ $vSendPKT ++;
+ }
+
+ if($ret{status}){
+ prErrExit("vSend() return status=$ret{status}\n");
+ }
+
+ prLog("\n</TD>\n</TR>");
+ $vLogStat = $vLogStatCloseRow;
+
+ return(%ret);
+}
+
+
+
+########################################################################
+sub
+vRecv($$$$@)
+{
+ my ($ifname, # target interface name
+ $timeout, # expire time(second)
+ # -1: No limitation
+ $seektime, # seek to the packet at the time(%ld.%06d)
+ # 0: seek from the beginning
+ # of the captured buffer
+ # You may use $retval{'sentTime(n)'}
+ # returned by vSend().
+ $count, # How many frames to wait
+ # 0: No limitation
+ @frames # frame names to send
+ ) = @_;
+ my $cmd= "$ToolDir/pktrecv $BaseArgs";
+ $cmd.=" -i $ifname" if $ifname;
+ $cmd.=" -e $timeout" if $timeout >= 0;
+ $cmd.=" -s $seektime" if $seektime;
+ $cmd.=" -c $count" if $count;
+ $cmd.=" @frames";
+
+ my $timestr=getTimeStamp();
+ if($vLogStat==$vLogStatOpenRow){
+ prLog("</TD>\n</TR>");
+ }
+ prLog("<TR VALIGN=\"TOP\"><TD>$timestr</TD>");
+ prLog("<TD>vRecv($ifname,@frames)".
+ " timeout:$timeout cntLimit:$count seektime:$seektime<BR>");
+ my @lines; my %ret; my $fCnt=0; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ undef @pktrevers;
+ foreach( @lines ){
+ if( /^\s*(\d+\.\d+)\s+(\S*)$/ ) {
+ $fCnt++;
+ $ret{"recvTime${fCnt}"} = $1;
+ $ret{recvFrame} = $2;
+ } else {
+ $pktrevers[$fCnt+1] .= "$_\n";
+ }
+ }
+ undef($ret{recvFrame}) if ($ret{recvFrame} eq '-');
+ $ret{recvCount}=$fCnt;
+
+ for($i=1;$i<=$fCnt;$i++){
+ my $recvtime=getTimeString($ret{"recvTime${i}"});
+
+ if($i!=$fCnt || $ret{status}!=0){
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+ if(@frames){
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv unexpect packet at $recvtime</A>");
+ } else {
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv a packet at $recvtime</A>");
+ }
+ prLog("<BR>");
+ }
+ $pktrevlog .="<A NAME=\"vRecvPKT${vRecvPKT}\"></A>";
+ $pktrevlog .="<A HREF=\"#vRecv${vRecvPKT}\">Recv at $recvtime</A>\n";
+ $pktrevlog .="<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .="$Xpktrevers";
+
+ $pktrevlog .="</PRE><HR>";
+
+ $vRecvPKT++;
+ }
+
+ if($ret{status}>=3){
+ prErrExit("vRecv() return status=$ret{status}\n");
+ }
+ if($ret{status}==0){
+ $_= $ret{recvFrame};
+ $vRecvPKT--;
+ if($main::pktdesc{$_}){
+ $msg="$main::pktdesc{$_}";
+ } else {
+ $msg="recv $_";
+ }
+ prOut(HTML2TXT($msg));
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">$msg</A><BR>");
+ $vRecvPKT++;
+ } else {
+ prLog("vRecv() return status=$ret{status}");
+ }
+ prLog("\n</TD>\n</TR>\n");
+ $vLogStat=$vLogStatCloseRow;
+ %ret;
+}
+
+
+
+################################################################
+# vRecv2($ifname, $timeout, $seektime, $count, @frames) #
+# #
+# $ifname - target interface name #
+# $timeout - expire time(second) #
+# -1: No limitation #
+# $seektime - seek to the packet at the time(%ld.%06d) #
+# 0: seek from the beginning of #
+# the captured buffer #
+# You may use $retval{'sentTime(n)'} #
+# returned by vSend(). #
+# $count - How many frames to wait #
+# 0: No limitation #
+# @frames - frame names to send #
+################################################################
+sub
+vRecv2($$$$@)
+{
+ my ($ifname, $timeout, $seektime, $count, @frames) = @_;
+
+ my $cmd = "$ToolDir/pktrecv $BaseArgs";
+ $cmd .= " -i $ifname" if($ifname);
+ $cmd .= " -e $timeout" if($timeout >= 0);
+ $cmd .= " -s $seektime" if($seektime);
+ $cmd .= " -c $count" if($count);
+ $cmd .= " @frames";
+
+ my $timestr = getTimeStamp();
+
+ if($vLogStat == $vLogStatOpenRow){
+ prLog("</TD>\n");
+ prLog("</TR>");
+ }
+
+ prLog("<TR VALIGN=\"top\"><TD>$timestr</TD>");
+ prLog("<TD>vRecv($ifname,@frames)".
+ " timeout:$timeout cntLimit:$count seektime:$seektime<BR>");
+
+ my $fCnt = 0;
+
+ my ($status, @lines) = execCmd($cmd);
+
+ my %ret = getField2(@lines);
+ $ret{'status'} = $status;
+
+ undef(@pktrevers);
+
+ foreach(@lines){
+ if($_ =~ /^\s*(\d+\.\d+)\s+(\S*)$/ ) {
+ $fCnt ++;
+ $ret{"recvTime${fCnt}"} = $1;
+ $ret{'recvFrame'} = $2;
+ } else {
+ $pktrevers[$fCnt + 1] .= "$_\n";
+ }
+ }
+
+ undef($ret{'recvFrame'}) if($ret{'recvFrame'} eq '-');
+
+ $ret{'recvCount'} = $fCnt;
+
+ for(my $i = 1; $i <= $fCnt; $i ++){
+ my $recvtime = getTimeString($ret{"recvTime${i}"});
+
+ if(($i != $fCnt) || ($ret{'status'})){
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+
+ if(@frames){
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv unexpect packet at $recvtime</A>");
+ } else {
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv a packet at $recvtime</A>");
+ }
+
+ prLog("<BR>");
+ }
+
+ $pktrevlog .= "<A NAME=\"vRecvPKT${vRecvPKT}\"></A>";
+ $pktrevlog .= "<A HREF=\"#vRecv${vRecvPKT}\">Recv at $recvtime</A>\n";
+ $pktrevlog .= "<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .= $Xpktrevers;
+
+ $pktrevlog .= "</PRE><HR>";
+
+ $vRecvPKT ++;
+ }
+
+ if($ret{'status'} >= 3){
+ prErrExit("vRecv() return status=$ret{status}\n");
+ }
+
+ if($ret{'status'}){
+ prLog("vRecv() return status=$ret{status}");
+ } else {
+ $_ = $ret{'recvFrame'};
+
+ $vRecvPKT --;
+
+ if($main::pktdesc{$_}){
+ $msg = "$main::pktdesc{$_}";
+ } else {
+ $msg = "recv $_";
+ }
+
+ prOut(HTML2TXT($msg));
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">$msg</A><BR>");
+
+ $vRecvPKT ++;
+ }
+
+ prLog("\n");
+ prLog("</TD>\n");
+ prLog("</TR>\n");
+ $vLogStat = $vLogStatCloseRow;
+
+ return(%ret);
+}
+
+
+
+########################################################################
+sub
+vRecv3($$$$@)
+{
+ my ($ifname, $timeout, $seektime, $count, @frames) = @_;
+
+ my $cmd = "$ToolDir/pktrecv $BaseArgs";
+ $cmd .= " -i $ifname" if($ifname);
+ $cmd .= " -e $timeout" if($timeout >= 0);
+ $cmd .= " -s $seektime" if($seektime);
+ $cmd .= " -c $count" if($count);
+ $cmd .= " @frames";
+
+ my $timestr = getTimeStamp();
+
+ if($vLogStat == $vLogStatOpenRow){
+ prLog("</TD>\n");
+ prLog("</TR>");
+ }
+
+ prLog("<TR VALIGN=\"top\"><TD>$timestr</TD>");
+ prLog("<TD>vRecv($ifname,@frames)".
+ " timeout:$timeout cntLimit:$count seektime:$seektime<BR>");
+
+ my $fCnt = 0;
+
+ my ($status, @lines) = execCmd($cmd);
+
+ my %ret = getField3(@lines); ### differ to vRecv2
+ $ret{'status'} = $status;
+
+ undef(@pktrevers);
+
+ foreach(@lines){
+ if($_ =~ /^\s*(\d+\.\d+)\s+(\S*)$/ ) {
+ $fCnt ++;
+ $ret{"recvTime${fCnt}"} = $1;
+ $ret{'recvFrame'} = $2;
+ } else {
+ $pktrevers[$fCnt + 1] .= "$_\n";
+ }
+ }
+
+ undef($ret{'recvFrame'}) if($ret{'recvFrame'} eq '-');
+
+ $ret{'recvCount'} = $fCnt;
+
+ for(my $i = 1; $i <= $fCnt; $i ++){
+ my $recvtime = getTimeString($ret{"recvTime${i}"});
+
+ if(($i != $fCnt) || ($ret{'status'})){
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+
+ if(@frames){
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv unexpect packet at $recvtime</A>");
+ } else {
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">recv a packet at $recvtime</A>");
+ }
+
+ prLog("<BR>");
+ }
+
+ $pktrevlog .= "<A NAME=\"vRecvPKT${vRecvPKT}\"></A>";
+ $pktrevlog .= "<A HREF=\"#vRecv${vRecvPKT}\">Recv at $recvtime</A>\n";
+ $pktrevlog .= "<PRE STYLE=\"line-height:70%\">";
+
+ my $Xpktrevers = $pktrevers[$i];
+
+ $Xpktrevers =~ s/&/&/g;
+ $Xpktrevers =~ s/"/"/g;
+ $Xpktrevers =~ s/</</g;
+ $Xpktrevers =~ s/>/>/g;
+
+ $pktrevlog .= $Xpktrevers;
+
+ $pktrevlog .= "</PRE><HR>";
+
+ $vRecvPKT ++;
+ }
+
+ if($ret{'status'} >= 3){
+ prErrExit("vRecv() return status=$ret{status}\n");
+ }
+
+ if($ret{'status'}){
+ prLog("vRecv() return status=$ret{status}");
+ } else {
+ $_ = $ret{'recvFrame'};
+
+ $vRecvPKT --;
+
+ if($main::pktdesc{$_}){
+ $msg = "$main::pktdesc{$_}";
+ } else {
+ $msg = "recv $_";
+ }
+
+ prOut(HTML2TXT($msg));
+ prLog("<A NAME=\"vRecv${vRecvPKT}\"></A>");
+ prLog("<A HREF=\"#vRecvPKT${vRecvPKT}\">$msg</A><BR>");
+
+ $vRecvPKT ++;
+ }
+
+ prLog("\n");
+ prLog("</TD>\n");
+ prLog("</TR>\n");
+ $vLogStat = $vLogStatCloseRow;
+
+ return(%ret);
+}
+
+
+
+########################################################################
+sub
+vStop($)
+{
+ my ($ifname, # target interface name
+ ) = @_;
+ execPktctl('Stop Capturing Packets', $ifname, 'stop');
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vClear($)
+{
+ my ($ifname, # target interface name
+ ) = @_;
+ execPktctl('Clear Captured Packets', $ifname, 'clear');
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vCapture($)
+{
+ my ($ifname, # target interface name
+ ) = @_;
+ execPktctl('Start Capturing Packets', $ifname, 'capture');
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vWrap($)
+{
+ my ($ifname, # target interface name
+ ) = @_;
+ execPktctl('vWrap', $ifname, 'wrap');
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vNowrap($)
+{
+ my ($ifname, # target interface name
+ ) = @_;
+ execPktctl('vNowrap', $ifname, 'nowrap');
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vLog($)
+{
+ my ($message, # message to be logged
+ ) = @_;
+ if($vLogStat==$vLogStatCloseRow){
+ prLog("<TR><TD><BR></TD><TD>");
+ $vLogStat=$vLogStatOpenRow;
+ };
+ prLog("<PRE>$message</PRE>");
+ prOut "$message" if $VLog == 0;
+}
+
+
+
+########################################################################
+sub
+vLogHTML($)
+{
+ my ($message, # message to be logged
+ ) = @_;
+ if($vLogStat==$vLogStatCloseRow){
+ prLog("<TR><TD><BR></TD><TD>");
+ $vLogStat=$vLogStatOpenRow;
+ };
+ prLogHTML($message);
+ prOut "$message" if $VLog == 0;
+}
+
+
+
+########################################################################
+sub
+vErrmsg(%)
+{
+ my (%stat # return status
+ ) = @_;
+ my($s1, $s2);
+
+ return if $stat{status} == 0;
+
+ if($stat{status} > 3) {
+ return "ERROR: Internal error";
+ } elsif($stat{status} == 1) {
+ $s1="Time-out";
+ } elsif($stat{status} == 2) {
+ $s1="Count-out";
+ }
+ if($stat{recvCount} == 0) {
+ $s2 = "Could not get any packet";
+ } else {
+ $s2 = "Got unexpected packet(s)";
+ }
+ return "ERROR: $s1: $s2";
+}
+
+
+
+########################################################################
+sub
+vRoundoff($)
+{
+ my ($timeval # sec.usec
+ ) = @_;
+ my($sec, $usec, $val);
+
+ ($sec, $usec)=split(/\./, $timeval);
+ if(length($usec) >=6) {
+ $val=$timeval;
+ } else {
+ $val=sprintf("%d.%06d", $sec, $usec);
+ }
+ $val+=0.05;
+ ($sec, $usec)=split(/\./, $val);
+ substr($usec, 1) = "";
+ sprintf("%d.%01d", $sec, $usec);
+}
+
+
+
+########################################################################
+sub
+vStatus($)
+{
+ my (
+ $ifname, # target interface name
+ ) = @_;
+ my @lines; my %ret;
+ ($ret{status}, @lines) = execPktctl('vStatus', $ifname, 'status');
+ foreach( @lines ){
+ if( /^(\S+)\s+(\S+)$/ ) {
+ $ret{$1}=$2;
+ }
+ }
+ %ret;
+}
+
+
+
+########################################################################
+sub
+vDump($$)
+{
+ my (
+ $ifname, # target interface name
+ $count # the number of frames to be dumped
+ ) = @_;
+ my ($status) = execPktctl('vDump', $ifname, 'dump', $count);
+ $status;
+}
+
+
+
+########################################################################
+sub
+vSleep($;$)
+{
+ my (
+ $seconds, # sleep time
+ $msg # comment
+ ) = @_;
+
+ my $timestr=getTimeStamp();
+ if(!$msg){ $msg = "Wait $seconds second"; }
+
+ prLog("</TD></TR>\n") if($vLogStat==$vLogStatOpenRow);
+ prLog("<TR VALIGN=\"TOP\">\n<TD>$timestr</TD>\n<TD>$msg\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ prOut("$msg\n");
+ sleep $seconds;
+
+}
+
+
+
+########################################################################
+sub
+vSleep2($;$)
+{
+ my (
+ $seconds, # sleep time
+ $msg # comment
+ ) = @_;
+
+ my $timestr=getTimeStamp();
+ if(!$msg){ $msg = "Wait $seconds second"; }
+
+ prLog("</TD></TR>\n") if($vLogStat==$vLogStatOpenRow);
+ prLog("<TR VALIGN=\"TOP\">\n<TD>$timestr</TD>\n<TD>$msg\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ prOut("$msg\n");
+ select(undef, undef, undef, $seconds);
+}
+
+
+
+########################################################################
+sub
+vRemote($;$@)
+{
+ my (
+ $fname, # remote file name
+ $opts, # options
+ @args, # variable args
+ ) = @_;
+
+ my $rpath = "./";
+ $rpath .= ":./$NutDef{System}/" if $NutDef{System};
+ $rpath .= ":${V6Root}/bin/$NutDef{System}/" if $NutDef{System};
+ $rpath .= ":${V6Root}/bin/unknown/";
+
+ my $cmd = searchPath($rpath, $fname);
+ $cmd .= " -t $NutDef{System}" if $NutDef{System};
+ $cmd .= " -u $NutDef{User}" if $NutDef{User};
+ $cmd .= " -p $NutDef{Password}" if $NutDef{Password};
+ $cmd .= " -T $TnDef{RemoteCuPath}" if $TnDef{RemoteCuPath};
+ $cmd .= " -d $TnDef{RemoteDevice}" if $TnDef{RemoteDevice};
+ $cmd .= " -v $TnDef{RemoteDebug}" if $TnDef{RemoteDebug};
+ $cmd .= " -i $TnDef{RemoteIntDebug}" if $TnDef{RemoteIntDebug};
+ $cmd .= " -o $TnDef{RemoteLog}" if $TnDef{RemoteLog};
+ $cmd .= " -s $TnDef{RemoteSpeed}" if $TnDef{RemoteSpeed};
+ $cmd .= " -l $TnDef{RemoteLogout}" if $TnDef{RemoteLogout};
+ $cmd .= " $RemoteOption $opts @args";
+
+ prLog("</TD>\n</TR>") if($vLogStat==$vLogStatOpenRow);
+ my $timestr=getTimeStamp();
+ prLogHTML("<TR VALIGN=\"TOP\"><TD>$timestr</TD>\n");
+ prLogHTML("<TD>\nvRemote($fname) ``$cmd''\n");
+
+ if($vrasync_state eq RUNNING){
+ prErrExit("vRemoteAsync process already exists: pid=$pid_vrasync");
+ }
+
+ if($TnDef{RemoteMethod} eq 'none') {
+ $_ = "Remote command is disabled by ``RemoteMethod: none''";
+ prOut($_) if $VLog == 0;
+ prLogHTML("<BR>$_\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ exit $exitNS;
+ }
+
+ prLogHTML("<PRE>");
+ pipe PIN,COUT;
+ $ChildPid = 0;
+ my $localExecutingPid;
+ unless(defined($ExecutingPid = $localExecutingPid = fork)){
+ $localExecutingPid=0;
+ prErrExit("Fork failed for <$cmd>");
+ }
+ unless( $localExecutingPid ) { # Children
+ open(STDOUT, ">&COUT");
+ open(STDERR, ">&COUT");
+ close(PIN);
+ # close(STDIN);
+ # should close if any explicit open files exit
+ exec "$cmd";
+# prErrExit("Exec failed for <$cmd>");
+ }
+
+ my $pid=$localExecutingPid;
+ close(COUT);
+ prTrace("vRemote()... $cmd");
+
+ $stdout = '';
+ while( <PIN> ) {
+ $stdout .= $_;
+ chomp;
+ s/\r//g;
+ s/&/&/g;
+ s/"/"/g;
+ s/</</g;
+ s/>/>/g;
+ prLog("$_");
+ prOut("$_") if $VLog == 0;
+ }
+ close(PIN);
+ while($ChildPid == 0){};
+ my $status = getChildStatus();
+ prErrExit("Unknown child died $pid $ChildPid (status=$status)!!") if($ChildPid != $pid);
+ if($status & 0xff) { # died by signal
+ prErrExit("Catch signal <$cmd>");
+ }
+ my $rc=($status >> 8);
+ if($rc == $exitNS) {
+ $_ = "NUT($NutDef{System}) does not support the functionality";
+ prLog($_);
+ prOut($_) if $VLog == 0;
+ exit $exitNS;
+ }
+ prLog("</PRE>\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ $rc;
+}
+
+
+
+########################################################################
+sub
+vRemoteAsync($;$@)
+{
+ my (
+ $fname, # remote file name
+ $opts, # options
+ @args, # variable args
+ ) = @_;
+
+ my $rpath = "./";
+ $rpath .= ":./$NutDef{System}/" if $NutDef{System};
+ $rpath .= ":${V6Root}/bin/$NutDef{System}/" if $NutDef{System};
+ $rpath .= ":${V6Root}/bin/unknown/";
+
+ my $cmd = searchPath($rpath, $fname);
+ $cmd .= " -t $NutDef{System}" if $NutDef{System};
+ $cmd .= " -u $NutDef{User}" if $NutDef{User};
+ $cmd .= " -p $NutDef{Password}" if $NutDef{Password};
+ $cmd .= " -T $TnDef{RemoteCuPath}" if $TnDef{RemoteCuPath};
+ $cmd .= " -d $TnDef{RemoteDevice}" if $TnDef{RemoteDevice};
+ $cmd .= " -v $TnDef{RemoteDebug}" if $TnDef{RemoteDebug};
+ $cmd .= " -i $TnDef{RemoteIntDebug}" if $TnDef{RemoteIntDebug};
+ $cmd .= " -o $TnDef{RemoteLog}" if $TnDef{RemoteLog};
+ $cmd .= " -s $TnDef{RemoteSpeed}" if $TnDef{RemoteSpeed};
+ $cmd .= " -l $TnDef{RemoteLogout}" if $TnDef{RemoteLogout};
+ $cmd .= " $RemoteOption $opts @args";
+
+ prLog("</TD>\n</TR>") if($vLogStat==$vLogStatOpenRow);
+ my $timestr=getTimeStamp();
+ prLogHTML("<TR VALIGN=\"TOP\"><TD>$timestr</TD>\n");
+ prLogHTML("<TD>\nvRemoteAsync($fname) ``$cmd''\n");
+
+ if($vrasync_state eq RUNNING){
+ prErrExit("vRemoteAsync process already exists: pid=$pid_vrasync");
+ }
+ $vrasync_state = RUNNING;
+
+ if($TnDef{RemoteMethod} eq 'none') {
+ $_ = "Remote command is disabled by ``RemoteMethod: none''";
+ prOut($_) if $VLog == 0;
+ prLogHTML("<BR>$_\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ exit $exitNS;
+ }
+
+ prLogHTML("<PRE>");
+ pipe PIN_VRASYNC,COUT_VRASYNC;
+ my $localExecutingPid_vrasync;
+ unless(defined($ExecutingPid_vrasync = $localExecutingPid_vrasync = fork)){
+ $localExecutingPid_vrasync=0;
+ prErrExit("Fork failed for <$cmd>");
+ }
+ unless( $localExecutingPid_vrasync ) { # Children
+ open(STDOUT, ">&COUT_VRASYNC");
+ open(STDERR, ">&COUT_VRASYNC");
+ close(PIN_VRASYNC);
+ # close(STDIN);
+ # should close if any explicit open files exit
+ print("sleep 3 [sec] for escaping critical point of asynchronous remoteconf.\n\n");
+ sleep 3;
+ exec "$cmd";
+# prErrExit("Exec failed for <$cmd>");
+ }
+
+ $pid_vrasync=$localExecutingPid_vrasync;
+ close(COUT_VRASYNC);
+ prTrace("vRemoteAsync()... $cmd");
+
+ prLog("<A NAME=\"vRemoteAsync$pid_vrasync\"></A>");
+ prLog("<A HREF=\"#vRemoteAsyncWait$pid_vrasync\">Link to remote control log</A>");
+
+ prLog("</PRE>\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ return 0;
+}
+
+
+
+########################################################################
+sub
+vRemoteAsyncWait()
+{
+ prLog("</TD>\n</TR>") if($vLogStat==$vLogStatOpenRow);
+ my $timestr=getTimeStamp();
+ prLogHTML("<TR VALIGN=\"TOP\"><TD>$timestr</TD>\n");
+ prLogHTML("<TD>\nvRemoteAsyncWait()\n");
+
+ if($vrasync_state ne RUNNING){
+ prErrExit("vRemoteAsyncWait() called without vRemoteAsync()");
+ }
+ undef $vrasync_state;
+
+ prLogHTML("<PRE>");
+ prLog("<A NAME=\"vRemoteAsyncWait$pid_vrasync\"></A>");
+ prLog("<A HREF=\"#vRemoteAsync$pid_vrasync\">Link to remote control start point</A>");
+
+ $stdout = '';
+ while( <PIN_VRASYNC> ) {
+ $stdout .= $_;
+ chomp;
+ s/\r//g;
+ s/&/&/g;
+ s/"/"/g;
+ s/</</g;
+ s/>/>/g;
+ prLog("$_");
+ prOut("$_") if $VLog == 0;
+ }
+ close(PIN_VRASYNC);
+
+ while($ExecutingPid_vrasync){};
+ my $status = $ChildStatus_vrasync;
+ if($ChildPid_vrasync != $pid_vrasync) {
+ prErrExit("Unknown child died $pid_vrasync $ChildPid_vrasync (status=$status)!!");
+ }
+
+ if($status & 0xff) { # died by signal
+ prErrExit("Catch signal <$cmd>");
+ }
+ my $rc=($status >> 8);
+ if($rc == $exitNS) {
+ $_ = "NUT($NutDef{System}) does not support the functionality";
+ prLog($_);
+ prOut($_) if $VLog == 0;
+ exit $exitNS;
+ }
+ prLog("</PRE>\n</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+ $rc;
+}
+
+
+
+########################################################################
+# Create Intermediate File for Packet Definition
+########################################################################
+sub
+vCPP(;@)
+{
+ my (
+ @opts # pre-proceser options
+ ) = @_;
+ my $PktCompiler="cc -E -x c-header";
+ my $baseopt="-I./ -I./ -I$V6Root/include/";
+ my $deffile=$PktDef;
+
+ prTrace("vCPP($deffile)");
+ prTrace("\$NoStd is $NoStd");
+ if (!$NoStd) {
+ my $includepath = searchPath("./:$V6Root/include/",'std.def');
+ $baseopt .= " -include $includepath"
+ }
+
+ if(!$PktImd){
+ if($KeepImd){
+ $PktImd = '/tmp/' . basename($deffile) . '.i';
+ } else {
+ do { $PktImd = tmpnam() }
+ until sysopen(FH, $PktImd, O_RDWR|O_CREAT|O_EXCL);
+ close FH;
+ }
+ }
+
+ my $cmd = "$PktCompiler $baseopt @opts $deffile > $PktImd";
+ prTrace("Creating Intermediate file: $cmd");
+ my ($sts) = execCmd($cmd);
+ if( $sts!=0 ){
+ prErrExit("$cmd failed status:$sts\n");
+ }
+}
+
+
+
+########################################################################
+# Replace the command line specified Packet Definition File
+########################################################################
+sub
+vNewPacketFile($;@)
+{
+ my (
+ $pktfile, # Packet definition file
+ @opts # Pre-processor options
+ ) = @_;
+
+ vOriginalPacketFile();
+ $OriginalPktDef=$PktDef;
+ $OriginalPktImd=$PktImd;
+
+ $PktDef=$pktfile;
+ $PktImd='';
+ vCPP(@opts, $CppOption);
+
+ # Rebuild the base arguments (which specifies the file)
+ baseArgs();
+}
+
+
+
+########################################################################
+# Restore the command line specified Packet Definition File
+########################################################################
+sub
+vOriginalPacketFile()
+{
+ if (defined $OriginalPktDef) {
+ if( $KeepImd ) {
+ prOut("Keep packet ImdFile <$PktImd>");
+ }
+ else {
+ unlink("$PktImd");
+ }
+ $PktDef=$OriginalPktDef;
+ $PktImd=$OriginalPktImd;
+ undef $OriginalPktDef;
+ undef $OriginalPktImd;
+
+ # Rebuild the base arguments (which specifies the file)
+ baseArgs();
+ }
+}
+
+
+
+sub
+vDHGen($$)
+{
+ my (
+ $prime,
+ $gen
+ ) = @_;
+
+ my $cmd= "$ToolDir/dhgen -p $prime -g $gen";
+ my @lines; my %ret; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vDHGen() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vDHGen2($$)
+{
+ my (
+ $prime,
+ $gen
+ ) = @_;
+
+ my $cmd= "$ToolDir/dhgen -@ -p $prime -g $gen";
+ my @lines; my %ret; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vDHGen2() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vDHComp($$$$$)
+{
+ my (
+ $prime,
+ $gen,
+ $pubkey,
+ $privkey,
+ $recvpubkey
+ ) = @_;
+
+ my $cmd= "$ToolDir/dhcomp -p $prime -g $gen -x $pubkey -y $privkey -z $recvpubkey";
+ my @lines; my %ret; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vDHComp() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vDHComp2($$$$$)
+{
+ my (
+ $prime,
+ $gen,
+ $pubkey,
+ $privkey,
+ $recvpubkey
+ ) = @_;
+
+ my $cmd= "$ToolDir/dhcomp -p $prime -@ -g $gen -x $pubkey -y $privkey -z $recvpubkey";
+ my @lines;my %ret; my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vDHComp2() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vPRFComp($$$)
+{
+ my ($algorithm, $key, $msg) = @_;
+
+ my $cmd= "$ToolDir/prfcomp -a $algorithm -k $key -m $msg";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vPRFComp() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vIVComp($$)
+{
+ my ($algorithm, $msg) = @_;
+
+ my $cmd= "$ToolDir/ivcomp -a $algorithm -m $msg";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vIVComp() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vX509dec($)
+{
+ my ($certification) = @_;
+
+ my $cmd= "$ToolDir/x509dec -d $certification";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vX509dec() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vSigSign($$)
+{
+ my ($key, $msg) = @_;
+
+ my $cmd= "$ToolDir/sigcomp -k $key -m $msg";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vSigSign() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vSigVrfy($$$)
+{
+ my ($key, $msg, $signature) = @_;
+
+ my $cmd= "$ToolDir/sigcomp -k $key -m $msg -s $signature";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vSigVrfy() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+sub
+vFile2Hex($)
+{
+ my ($file) = @_;
+
+ my $cmd= "$ToolDir/file2hex $file";
+ my @lines;my %ret;my $status;
+ ($status, @lines) = execCmd($cmd);
+ %ret = getField(@lines);
+ $ret{status}=$status;
+ if($ret{status}){
+ prErrExit("vFile2Hex() return status=$ret{status}\n");
+ }
+ %ret;
+}
+
+
+
+#--------------------------------------------------------------#
+# void addMD5(char *, char *, char *); #
+#--------------------------------------------------------------#
+sub
+addMD5($$$)
+{
+ my($seq, $def, $log) = @_;
+
+ my @md5 = ();
+
+ local(*LOG);
+
+ push(@md5, getMD5($seq));
+ push(@md5, getMD5($def));
+ push(@md5, getMD5($log));
+
+ unless(open(LOG, ">> $log")) {
+ return;
+ }
+
+ for(my $d = 0; $d <= $#md5; $d ++) {
+ print LOG "<!-- $md5[$d] -->\n";
+ }
+
+ close(LOG);
+
+ return;
+}
+
+
+
+#--------------------------------------------------------------#
+# char *getMD5(char *); #
+#--------------------------------------------------------------#
+sub
+getMD5($)
+{
+ my($file) = @_;
+
+ use Digest::MD5;
+
+ local(*FILE);
+
+ unless(open(FILE, $file)) {
+ return('');
+ }
+
+ my $ctx = Digest::MD5->new;
+ $ctx->addfile(*FILE);
+ my $digest = $ctx->hexdigest;
+
+ close(FILE);
+
+ return($digest);
+}
+
+
+
+########################################################################
+# parse Args
+#
+# Getopt::Long module is used for argument parse
+#-----------------------------------------------------------------------
+sub
+parseArgs()
+{
+ use Getopt::Long;
+ $Getopt::Long::ignorecase=0;
+ my $optStat = GetOptions(
+ "tn|TnDef=s",
+ "nut|NutDef=s",
+ "pkt|PktDef=s",
+ "l|LogLevel=i",
+ "ti|TestTitle=s",
+ "log|LogFile=s",
+ "h|Help",
+ "trace", # for debug of this, output trace
+ "keepImd", # for debug of this, keep intermidiate file
+ "v|VLog", # print STDOUT log file
+ "nostd|NoStd",
+ "vroot|V6Root=s",
+ "remote=s",
+ "cpp=s",
+ );
+ printUsage() if( $opt_h || !$optStat );
+
+ $V6Root = $opt_vroot || $ENV{'V6EVALROOT'} || "/usr/local/v6eval/" ;
+ $NoStd = $opt_nostd ? $opt_nostd : 0;
+ $VLog = $opt_v ? $opt_v : 0;
+# $Trace = ($opt_trace==1);
+# $KeepImd = ($opt_keepImd==1);
+ $Trace = $opt_trace ? $opt_trace : 0;
+ $KeepImd = $opt_keepImd ? $opt_keepImd : 0;
+ $TnDef = $opt_tn ? $opt_tn : "tn.def";
+ $TnDef = searchPath("${SeqDir}:./:${V6Root}/etc/", $TnDef);
+ $NutDef = $opt_nut ? $opt_nut : "nut.def";
+ $NutDef = searchPath("${SeqDir}:./:${V6Root}/etc/", $NutDef);
+ $PktDef = $opt_pkt ? $opt_pkt : "${SeqDir}packet.def";
+ $TestTitle= $opt_ti ? $opt_ti : "${SeqName}";
+ $LogFile= $opt_log ? $opt_log : "${SeqDir}${SeqName}.log";
+ $LogLevel = $opt_l ? $opt_l : 1;
+ $DbgLevel = $opt_d ? $opt_d : 0;
+ $RemoteOption = $opt_remote || "";
+ $CppOption = $opt_cpp || "";
+
+ checkFile( $PktDef );
+}
+
+
+
+########################################################################
+# Set base args for commands
+#-----------------------------------------------------------------------
+sub
+baseArgs()
+{
+ $BaseArgs = "-t $TnDef -n $NutDef -p $PktImd -l$LogLevel";
+ $BaseArgs.= " $ENV{'V6EVALOPT'}" if(defined($ENV{'V6EVALOPT'}));
+}
+
+
+
+########################################################################
+# Search Path
+#-----------------------------------------------------------------------
+sub
+searchPath($$)
+{
+ my(
+ $path, # path
+ $filename # filename for search
+ ) = @_;
+ my $fullname="";
+ if($filename =~ m!.*/.+!) {
+ $fullname=$filename;
+ }
+ my @paths=split(/:/,($path));
+ foreach(@paths) {
+ my $tmpname=$_ . "/" . $filename;
+ #my $tmpname=$_ . $filename;
+ if($fullname eq "") {
+ $fullname=$tmpname if(-r $tmpname);
+ }
+ }
+ prErrExit("$filename don't exist in the path or cannot read in ``$path''\n") if($fullname eq "");
+ $fullname;
+}
+
+
+
+########################################################################
+# Check file if it is readble...
+#-----------------------------------------------------------------------
+sub
+checkFile($)
+{
+ my(
+ $file # command string
+ ) = @_;
+ unless( -r "$file" ){
+ prErrExit("$file not exist or cannot read\n");
+ }
+}
+
+
+
+########################################################################
+# Get Each Field Value
+#-----------------------------------------------------------------------
+sub
+getField(@)
+{
+ my (
+ @lines
+ ) = @_;
+
+ my %rc;
+
+ foreach( @lines ){
+ if(/^\s*((\|\s)*)(\S*)\s*\(\S*\)/) {
+ my $block=$3;
+ if($block eq 'Frame_Ether'){undef %rc;};
+ if($block eq 'DHGen_Results'){undef %rc;};
+ if($block eq 'DHComp_Results'){undef %rc;};
+ if($block eq 'PRFComp_Results'){undef %rc;};
+ if($block eq 'IVComp_Results'){undef %rc;};
+# undef %rc if($block eq 'Frame_Ether');
+ $curDepth=length($1)/2;
+ while(@Struct>$curDepth) {
+ pop @Struct;
+ }
+ push (@Struct,$block);
+ my $xstruct=join(".",@Struct);
+ my $num=++$rc{"$xstruct#"};
+ if($num>1) {
+ pop @Struct;
+ $block.="$num"; # xxx
+ push (@Struct,$block);
+ }
+ pop @Struct;
+ if (@Struct!=0) {
+ my $name=join(".",@Struct);
+ $rc{"$name"}.= " " if ($rc{"$name"});
+ $rc{"$name"}.= "$block";
+# print "Struct: ($name) = ($rc{$name})\n";
+ }
+ push (@Struct,$block);
+ }
+ elsif( /^\s*((\|\s)+)(\S*)\s+=\s+(\S*)/ ) {
+ my $name=$3;
+ my $member=join(".",@Struct);
+ $member.=".$name";
+ $rc{"$member#"}++;
+ $name.="_$rc{\"$member#\"}" if($rc{"$member#"}>1); # xxx
+ $member = join(".",@Struct);
+ $member.=".$name";
+ $xstruct=join(".",@Struct);
+ $rc{"$xstruct"}.=" " if($rc{"$xstruct"});
+ $rc{"$xstruct"}.="$name";
+ $rc{"$member"}=$4;
+# print "Struct: ($xstruct) = $rc{$xstruct}\n";
+# print "Value : ($member) = $rc{$member}\n";
+ }
+ else {
+# print "not reverse output\n";
+ }
+ }
+ %rc;
+}
+
+
+
+########################################################################
+# Get Each Field Value
+#-----------------------------------------------------------------------
+sub
+getField2(@)
+{
+ my (@lines) = @_;
+
+ my %rc = ();
+ my @Struct = ();
+ my $Xmember = '';
+
+ foreach(@lines){
+ if($_ =~ /^\s*((\|\s)*)(\S*)\s*\(\S*\)/) {
+ my $Xmember = '';
+
+ my $block = $3;
+ if($block eq 'Frame_Ether') {
+ %rc = ();
+ @Struct = ();
+ }
+
+ if($block eq 'DHGen_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'DHComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'PRFComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'IVComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ my $curDepth = length($1)/2;
+ while($#Struct >= $curDepth) {
+ pop(@Struct);
+ }
+
+ push(@Struct, $block);
+
+ my $xstruct = join('.', @Struct);
+
+ unless(defined($rc{"$xstruct#"})) {
+ $rc{"$xstruct#"} = 0;
+ }
+
+ my $num = ++ $rc{"$xstruct#"};
+
+ if($num > 1) {
+ pop(@Struct);
+ $block .= "$num"; # xxx
+ push(@Struct, $block);
+ }
+
+ pop(@Struct);
+
+ if($#Struct >= 0) {
+ my $name = join('.', @Struct);
+ $rc{"$name"} .= " " if(defined($rc{"$name"}));
+ $rc{"$name"} .= "$block";
+ }
+
+ push(@Struct, $block);
+ } elsif($_ =~ /^\s*((\|\s)+)(\S*)\s+=\s+(.*)$/) {
+ my $name = $3;
+ my $member = join('.', @Struct);
+ $member .= ".$name";
+
+ unless(defined($rc{"$member#"})) {
+ $rc{"$member#"} = 0;
+ }
+
+ $rc{"$member#"}++;
+
+ $name .= "_$rc{\"$member#\"}"
+ if($rc{"$member#"} > 1); # xxx
+
+ $member = join('.', @Struct);
+ $member .= ".$name";
+
+ $xstruct = join('.', @Struct);
+ $rc{"$xstruct"} .= ' ' if(defined($rc{"$xstruct"}));
+ $rc{"$xstruct"} .= "$name";
+
+ my $Xdata = $4;
+
+ if($Xdata =~ /^[0-9a-f]{8}\s([0-9a-f]{8}\s{1,2})*[0-9a-f]{1,8}$/) {
+ $Xdata =~ s/\s//g;
+ }
+
+ $rc{"$member"} = $Xdata;
+
+ $Xmember = $member;
+ } elsif($_ =~ /^\s{2}(.*)$/) {
+ my $Xdata = $1;
+
+ if($Xdata =~ /^[0-9a-f]{8}\s([0-9a-f]{8}\s{1,2})*[0-9a-f]{1,8}$/) {
+ $Xdata =~ s/\s//g;
+ } else {
+ $Xdata .= "\n";
+ }
+
+ if(($Xmember ne '') && (defined($rc{$Xmember}))) {
+ $rc{$Xmember} .= $Xdata;
+ }
+ } else {
+ }
+ }
+
+ return(%rc);
+}
+
+
+
+########################################################################
+# Get Each Field Value
+#-----------------------------------------------------------------------
+sub
+getField3(@)
+{
+ my (@lines) = @_;
+
+ my %rc = ();
+ my @Struct = ();
+ my $Xmember = '';
+
+ foreach(@lines){
+ if($_ =~ /^\s*((\|\s)*)(\S*)\s*\(\S*\)/) {
+ my $Xmember = '';
+
+ my $block = $3;
+ if($block eq 'Frame_Ether') {
+ %rc = ();
+ @Struct = ();
+ }
+
+ if($block eq 'DHGen_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'DHComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'PRFComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ if($block eq 'IVComp_Results'){
+ %rc = ();
+ @Struct = ();
+ };
+
+ my $curDepth = length($1)/2;
+ while($#Struct >= $curDepth) {
+ pop(@Struct);
+ }
+
+ push(@Struct, $block);
+
+ my $xstruct = join('.', @Struct);
+
+ unless(defined($rc{"$xstruct#"})) {
+ $rc{"$xstruct#"} = 0;
+ }
+
+ my $num = ++ $rc{"$xstruct#"};
+
+ if($num > 1) {
+ pop(@Struct);
+ $block .= "$num"; # xxx
+ push(@Struct, $block);
+ }
+
+ pop(@Struct);
+
+ if($#Struct >= 0) {
+ my $name = join('.', @Struct);
+ $rc{"$name"} .= " " if(defined($rc{"$name"}));
+ $rc{"$name"} .= "$block";
+ }
+
+ push(@Struct, $block);
+ } elsif($_ =~ /^\s*((\|\s)+)(\S*)\s+=\s+(.*)$/) {
+ my $name = $3;
+ my $member = join('.', @Struct);
+ $member .= ".$name";
+
+ unless(defined($rc{"$member#"})) {
+ $rc{"$member#"} = 0;
+ }
+
+ $rc{"$member#"}++;
+
+ $name .= "_$rc{\"$member#\"}"
+ if($rc{"$member#"} > 1); # xxx
+
+ $member = join('.', @Struct);
+ $member .= ".$name";
+
+ $xstruct = join('.', @Struct);
+ $rc{"$xstruct"} .= ' ' if(defined($rc{"$xstruct"}));
+ $rc{"$xstruct"} .= "$name";
+
+ my $Xdata = $4;
+
+ if($Xdata =~ /^[0-9a-f]{8}\s([0-9a-f]{8}\s{1,2})*[0-9a-f]{1,8}$/) {
+ $Xdata =~ s/\s//g;
+ }
+
+ $rc{"$member"} = $Xdata;
+
+ $Xmember = $member;
+ } elsif($_ =~ /^\s*((\|\s)+)\s{2}(.*)$/) {
+ ### add to getField2
+ my $Xdata = $3;
+
+ if($Xdata =~ /^[0-9a-f]{8}\s([0-9a-f]{8}\s{1,2})*[0-9a-f]{1,8}$/) {
+ $Xdata =~ s/\s//g;
+ } else {
+ $Xdata .= "\n";
+ }
+
+ if(($Xmember ne '') && (defined($rc{$Xmember}))) {
+ $rc{$Xmember} .= $Xdata;
+ }
+ } elsif($_ =~ /^\s{2}(.*)$/) {
+ my $Xdata = $1;
+
+ if($Xdata =~ /^[0-9a-f]{8}\s([0-9a-f]{8}\s{1,2})*[0-9a-f]{1,8}$/) {
+ $Xdata =~ s/\s//g;
+ } else {
+ $Xdata .= "\n";
+ }
+
+ if(($Xmember ne '') && (defined($rc{$Xmember}))) {
+ $rc{$Xmember} .= $Xdata;
+ }
+ } else {
+ }
+ }
+
+ return(%rc);
+}
+
+
+
+########################################################################
+# module initialization
+#
+# This is calld at the start time of the script.
+# Actually called from BEGIN{} of this module.
+# do some preparation procedure for using this module.
+#-----------------------------------------------------------------------
+sub
+initialize()
+{
+ #---------------------------------------------------------------
+ # Get script path
+ #---------------------------------------------------------------
+ ($SeqName,$SeqDir,$SeqSuffix) = fileparse($0,'.seq');
+
+ #---------------------------------------------------------------
+ # Parse args
+ #---------------------------------------------------------------
+ $CommandLine = "$0 @ARGV"; # keep commandline for logging
+ my @ARGVtmp = @ARGV;
+ parseArgs();
+ if(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ @ARGV = @ARGVtmp;
+ }
+
+ #---------------------------------------------------------------
+ # Setup initial value
+ #---------------------------------------------------------------
+ $ToolDir= "$V6Root/bin";
+ $SocketPath= "/tmp";
+
+ #---------------------------------------------------------------
+ # Set Version value
+ #---------------------------------------------------------------
+ getVersion();
+
+ #---------------------------------------------------------------
+ # Open log file
+ #---------------------------------------------------------------
+ unless(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ open(LOG, ">$LogFile") ||
+ prErrExit("Can not create $LogFile for logging ($!)");
+ }
+ prTrace("Log will be outputed to $LogFile");
+
+ #---------------------------------------------------------------
+ # print Banner
+ #---------------------------------------------------------------
+ prLog("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"".
+ "\"http://www.w3c.org/TR/REC-html40/strict.dtd\">");
+ prLog("<HTML>\n<HEAD>");
+ prLog("<TITLE>IPv6 Conformance Test Report</TITLE>");
+ prLog("<META NAME=\"GENERATOR\" CONTENT=\"TAHI IPv6 Conformance Test Kit\">");
+ prLog("</HEAD>\n");
+ prLog("<BODY BGCOLOR=\"#F0F0F0\">");
+
+ prLog("<H1>Test Information</H1>");
+ prLog("<TABLE BORDER=1>");
+ printBanner();
+
+ #---------------------------------------------------------------
+ # Check TN definition and setup environment
+ #---------------------------------------------------------------
+ # double entry not check yet. (OVERWRITE)
+ prTrace("Looking up $TnDef");
+ open( FILE, "$TnDef") || prErrExit("Can not open $TnDef");
+ while( <FILE> ){
+ next if(/^\s*$/ || /^#/); # remove comment
+ chomp;
+ if( /^(\S+)\s+(.*)/ ) {
+ $TnDef{$1} = $2;
+ }
+ if( /^(socketpath)\s+(\S+)/ ) { $SocketPath=$2; }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/){
+ push(@TnIfs,$1);
+ push(@TnSos,$2);
+ $TnDef{$1."_device"}=$2;
+ $TnDef{$1."_addr"}=$3;
+ }
+ elsif( /^(RemoteDevice)\s+(\S+)/ ||
+ /^(RemoteDebug)\s+(\S+)/ ||
+ /^(RemoteIntDebug)\s+(\S+)/ ||
+ /^(RemoteLog)\s+(\S+)/ ||
+ /^(RemoteSpeed)\s+(\S+)/ ||
+ /^(RemoteLogout)\s+(\S+)/ ||
+ /^(RemoteMethod)\s+(\S+)/ ||
+ /^(RemoteCuPath)\s+(\S+)/ ||
+ /^(filter)\s+(\S+)/){
+
+ }
+ else{ prOut("Unknown line in $TnDef: $_\n");}
+ prTrace("TN : $_");
+ }
+ close FILE;
+ #---------------------------------------------------------------
+ # remove unix domain sockets
+ #---------------------------------------------------------------
+ my $soname;
+ foreach $soname (@TnSos) {
+ prTrace("TN : unlink $SocketPath/$soname");
+ unlink("$SocketPath/$soname");
+ }
+
+ #---------------------------------------------------------------
+ # Check NUT definition and setup environment
+ #---------------------------------------------------------------
+ prTrace("Looking up $NutDef");
+ open( FILE, "$NutDef") || prErrExit("Can not open $NutDef");
+ while( <FILE> ){
+ next if(/^\s*$/ || /^#/); # remove comment
+ chomp;
+ if( /^(\S+)\s+(.*)/ ) {
+ $NutDef{$1} = $2;
+ }
+ if( /^(System)\s+(.*)/ ||
+ /^(TargetName)\s+(.*)/ ||
+ /^(HostName)\s+(.*)/ ||
+ /^(Type)\s+(.*)/ ){
+ prLog("<TR><TD>$1</TD><TD>$2</TD></TR>");
+ } elsif(
+ /^(User)\s+(\S+)/ ||
+ /^(Password)\s+(\S+)/ ){
+ }
+ elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2})/){
+ push(@NutIfs,$1);
+ $NutDef{$1."_device"}=$2;
+ $NutDef{$1."_addr"}=$3;
+ }
+ else{ prOut("Unknown line in $NutDef: $_");}
+ prTrace("NUT: $_");
+ }
+ close FILE;
+ prLog("</TABLE>");
+ #---------------------------------------------------------------
+ # Fork pktbuf for necessary interface
+ #---------------------------------------------------------------
+ my $cmdBase = "$ToolDir/pktbuf -t $TnDef -i ";
+ my $dumpCmd = "tcpdump -n -s 2000 -x -e";
+ my $ifname; my $log;
+ foreach $ifname (@TnIfs) {
+ if( grep {$ifname eq $_} @NutIfs ){
+ $cmd="$cmdBase $ifname";
+ $log="/tmp/pktbuf_$ifname.log";
+ push(@PktbufPids, forkCmd($cmd,$log) );
+ # run tcpdump
+ my($if)=$TnDef{$ifname."_device"};
+ $cmd="$dumpCmd ".
+ "-i $if ".
+ "-w $LogFile.$ifname.dump ";
+ unless(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ push(@TcpdumpPids, forkCmdWoCheck($cmd,'/dev/null') );
+ }
+ }
+ }
+ if(@PktbufPids==0) {
+ prErrExit("No interface to use commonly\n".
+ "TN : @TnIfs\nNUT: @NutIfs");
+ }
+
+ vCPP($CppOption);
+ undef $OriginalPktDef;
+ undef $OriginalPktImd;
+
+ #---------------------------------------------------------------
+ # Setup global value for convinience
+ #---------------------------------------------------------------
+ baseArgs();
+
+ prLog("<HR>");
+ prLog("<H1>Test Sequence Execution Log</H1>");
+ prLog("<TABLE BORDER=1>");
+ my $timestamp=getTimeStamp();
+ prLog("<TR><TD>$timestamp</TD><TD>Start</TD></TR>");
+ $vLogStat=$vLogStatCloseRow;
+}
+
+
+
+########################################################################
+# Get time string
+#
+# If more detailed format is required, you may switch to use
+# prepared perl modlue.
+#-----------------------------------------------------------------------
+sub
+getTimeStamp()
+{
+ my ($sec,$min,$hour) = localtime;
+ my $timestr = sprintf('%02d:%02d:%02d', $hour, $min, $sec);
+ $timestr;
+}
+
+
+
+sub
+getDateString()
+{
+ my ($sec,$min,$hour,$day,$mon,$year) = localtime;
+ my $datestr = sprintf '%02d/%02d/%02d %02d:%02d:%02d',
+ $year+1900, $mon+1, $day, $hour, $min, $sec;
+ $datestr;
+}
+
+
+
+sub
+getTimeString($)
+{
+ my (
+ $epoch
+ ) = @_;
+ my ($sec,$min,$hour) = localtime($epoch);
+ my $timestr = sprintf('%02d:%02d:%02d', $hour, $min, $sec);
+ $timestr;
+}
+
+
+
+########################################################################
+# Get Version
+#
+# set following variables
+# $ToolVersion: version number of v6eval tool
+# $TestVersion: version number of test
+#-----------------------------------------------------------------------
+sub
+getVersion()
+{
+ my $dummy;
+
+ ($dummy, $ToolVersion) = ('$Name: REL_3_0_12 $' =~ /\$(Name): (.*) \$/ );
+ if(!$ToolVersion){
+ $ToolVersion= 'undefined';
+ }
+ if (defined($TestVersion)) { # it should be defined in *.seq file.
+ ($dummy, $TestVersion) = ($TestVersion =~ /\$(Name): (.*) \$/ );
+ }else{
+ $TestVersion= 'undefined';
+ }
+}
+
+
+
+########################################################################
+# Print log banner
+#-----------------------------------------------------------------------
+sub
+printBanner()
+{
+ my $datestr = getDateString();
+ prLog("<TR><TD>Title</TD><TD>$TestTitle</TD></TR>");
+ prLog("<TR><TD>CommandLine</TD><TD>$CommandLine</TD></TR>");
+ prLog("<TR><TD>TestVersion</TD><TD>$TestVersion</TD></TR>");
+ prLog("<TR><TD>ToolVersion</TD><TD>$ToolVersion</TD></TR>");
+ prLog("<TR><TD>Start</TD><TD>$datestr</TD></TR>");
+ prLog("<TR><TD>Tn</TD><TD>$TnDef</TD></TR>");
+ prLog("<TR><TD>Nu</TD><TD>$NutDef</TD></TR>");
+ prLog("<TR><TD>Pkt</TD><TD>$PktDef</TD></TR>");
+}
+
+
+
+########################################################################
+# Print usage and exit
+#-----------------------------------------------------------------------
+sub
+printUsage()
+{
+ prOut("Usage: $PROGRAM_NAME [-h]" );
+ prOut(" [-tn tn_def_file]" );
+ prOut(" [-nut nut_def_file]" );
+ prOut(" [-pkt pkt_def_file]");
+ prOut(" [-log log_file] [-l log_level]");
+ prOut(" [-v]" );
+ prOut(" [-nostd]" );
+ prOut(" [-vroot default_directory]");
+ exit;
+}
+
+
+
+########################################################################
+# Subroutine used commonly who wants to invoke pktctl
+#
+# This calls the execCmd() internally.
+# If the $funcname is 'vDump', then indicate execCmd() to
+# output stdout information to the STDOUT as soon as possible
+# without buffering to array value which returnd by execCmd().
+# This is for not cosuming amount of memmorry for the array
+# in case of many information is outputed by pktctl command.
+#-----------------------------------------------------------------------
+sub
+execPktctl($$@;$)
+{
+ my (
+ $funcname, # the name of the fuction who call me
+ $ifname, # target interface name
+ @arg # arguments
+ ) = @_;
+ my $cmd= "$ToolDir/pktctl -t $TnDef";
+ $cmd.=" -i $ifname" if $ifname;
+ $cmd.=" @arg";
+
+ my $timestr=getTimeStamp();
+ if($vLogStat==$vLogStatOpenRow){
+ prLog("</TD>\n</TR>");
+ }
+ prLog("<TR VALIGN=\"TOP\"><TD>$timestr</TD><TD>$funcname ($ifname)<BR>");
+ prOut("$funcname ($ifname)");
+ my @ret = execCmd($cmd, ($funcname eq 'vDump') );
+
+ if($ret[0]){
+ prErrExit("$funcname($ifname) return status=$ret[0]\n");
+ }
+ prLog("</TD></TR>\n");
+ $vLogStat=$vLogStatCloseRow;
+ @ret;
+}
+
+
+
+########################################################################
+# Subroutine used commonly who wants to invoke pktxxx command
+#
+# Execute command and get its sdtout and stderr information
+# concurrently. This assumes the format of the output is
+# prefixed with the following keywords.
+# log: treat it as log information
+# err: treat it as error information
+# std: treat it as the information outputed from stdout
+#
+# This returns array, the first element indicates the exit code
+# of the command. And the next to end of the array indicates
+# standard output devided into pieaces by '\n'.
+#
+# In case of command execution failure, call exit.
+#-----------------------------------------------------------------------
+sub
+execCmd($;$)
+{
+ my (
+ $cmd, # command string
+ $std_redirect # if set, 'std:' message will be output here.
+ ) = @_;
+ my $type; my $line; my $pid; my $localExecutingPid;
+ my @ret;
+
+ pipe PIN,COUT;
+ $ChildPid = 0;
+ unless(defined($ExecutingPid = $localExecutingPid = fork)){
+ $localExecutingPid=0;
+ prErrExit("Fork failed for <$cmd>");
+ }
+ unless( $localExecutingPid ) { # Children
+ open(STDOUT, ">&COUT");
+ open(STDERR, ">&COUT");
+ close(PIN);
+ close(STDIN);
+ # should close if any explicit open files exit
+# exec "$cmd; exit $?;";
+ exec "$cmd;";
+# prErrExit("Exec failed for <$cmd>");
+ }
+
+ $pid=$localExecutingPid;
+ close(COUT);
+ prTrace("execCmd()... $cmd");
+
+ while( <PIN> ) {
+ chomp;
+ $allmsg=$_;
+ ($type, $line) = /^(\w\w\w):(.*)$/;
+ if($type eq 'log') {
+# prLog(" $line");
+ push(@ret, $line);
+ prTrace("execCmd()ret... log:$line");
+ }
+ elsif($type eq 'err') { prErr("$line");}
+ elsif($type eq 'std') {
+ $std_redirect ? prOut($line) : push(@ret, $line);
+ prTrace("execCmd()ret... std:$line");
+ }else {
+ prLog(" dbg: $allmsg",100);
+ }
+ }
+ close(PIN);
+ while($ChildPid == 0){};
+ my $status = getChildStatus();
+ prErrExit("Unknown child died $pid $ChildPid (status=$status)!!") if($ChildPid != $pid);
+ if( $status & 0xff ) { # died by signal
+ prErrExit("Catch signal <$cmd>");
+ }
+ unshift(@ret, ($status>>8)); # command exit code
+ @ret;
+}
+
+
+
+########################################################################
+# Subroutine used to detach pktbuf process
+#
+# Do fork and exec $command, and returns $pid
+#-----------------------------------------------------------------------
+sub
+forkCmd($$)
+{
+ my (
+ $cmd, # command string
+ $log # log file
+ ) = @_;
+ my $pid;
+ ($arg0) = split ' ' ,$cmd;
+
+ pipe PIN,COUT;
+ unless(defined($pid = fork)){
+ prErrExit("Fork failed for <$cmd>");
+ }
+ unless( $pid ) { # Children
+ # should close if any explicit open files exit
+ close(PIN);
+ open(STDOUT, ">&COUT");
+ open(STDERR, ">$log");
+ exec "$cmd";
+# print COUT "err:Exec fail for $arg0 ($!)\n";
+# prErrExit("Exec failed for <$opt>");
+# prErrExit("Exec failed for <$cmd>");
+ }
+ close(COUT);
+ prTrace("forkCmd()... $cmd");
+ my $ready=0;
+ while( <PIN> ) { # wait until socket ready
+ chomp;
+ ($type, $line) = /^(\w\w\w):(.*)$/;
+ if($_ eq 'std: ready'){
+ $ready=1;
+ last;
+ } elsif ($type eq 'err') { prErr("$line");}
+ }
+ close(PIN);
+ unless($ready){
+ prErrExit("Could not get ready response from <$arg0>");
+ }
+ $pid;
+}
+
+
+
+sub
+forkCmdWoCheck($$)
+{
+ my (
+ $cmd, # command string
+ $log # log file
+ ) = @_;
+ my $pid;
+ ($arg0) = split ' ' ,$cmd;
+
+ pipe PIN,COUT;
+ unless(defined($pid = fork)){
+ prErrExit("Fork failed for <$cmd>");
+ }
+ unless( $pid ) { # Children
+ # should close if any explicit open files exit
+ close(PIN);
+ open(STDOUT, ">&COUT");
+ open(STDERR, ">$log");
+ exec "$cmd";
+# print COUT "err:Exec fail for $arg0 ($!)\n";
+# prErrExit("Exec failed for <$opt>");
+# prErrExit("Exec failed for <$cmd>");
+ }
+ close(COUT);
+ close(PIN);
+ prTrace("forkCmdWoCheck()... $cmd");
+ $pid;
+}
+
+
+
+########################################################################
+# To handle log request.
+#
+# If $level is specified, this will be compare with $LogLevel,
+# the outer level specified by '-l' arguments at the script invocaiton.
+# If it is less or equal, than the message will be output.
+# So, value 0 is the most strong request, In case of this,
+# the message will be logged even if any value is specified
+# for $LogLevel.
+# In case of omittion, it is treated as 0. (always logged)
+#
+# If you have some message wants to output in case LogLevel is 2
+# but not for 1, you shoud specify $level here as 1.
+#
+#------------------------------------------------------------------------
+sub
+prLog($;$)
+{
+ my (
+ $message, # message for logging
+ $level # log level, this will be compared with the
+ # outer level specifid by '-l' arguments
+ ) = @_;
+ $level=0 unless defined($level); # default 0;
+ #prTrace("LOG $level $LogLevel");
+ unless(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ print LOG "$message\n" if($level<=$LogLevel);
+ }
+ prOut "$message\n" if($VLog && $level<=$LogLevel);
+}
+
+
+
+#------------------------------------------------------------------------
+sub
+prLogHTML($;$)
+{
+ my (
+ $message, # message for logging
+ $level # log level, this will be compared with the
+ # outer level specifid by '-l' arguments
+ ) = @_;
+ $level=0 unless defined($level); # default 0;
+ #prTrace("LOG $level $LogLevel");
+ unless(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ if(defined(LOG)){
+ print LOG "$message" if($level<=$LogLevel);
+ }
+ }
+ prOut "$message" if($VLog && $level<=$LogLevel);
+}
+
+
+
+########################################################################
+# Convert HTML text to Plain Text
+#-----------------------------------------------------------------------
+sub
+HTML2TXT($)
+{
+ my (
+ $message # HTML message
+ ) = @_;
+ $message =~ s/<BR>/\n/g;
+ $message =~ s/<\/TR>/\n/g;
+ $message =~ s/<\/TD>/ /g;
+ $message =~ s/<[^>]*>//g;
+ $message =~ s/<\;/</g;
+ $message =~ s/>\;/>/g;
+ $message =~ s/\n+$//g;
+ $message .= "\n";
+ return $message;
+}
+
+
+
+########################################################################
+# Print message to stderr
+#-----------------------------------------------------------------------
+sub
+prOut($)
+{
+ my (
+ $message # message for output
+ ) = @_;
+ $message=HTML2TXT($message);
+ print STDOUT "$message";
+}
+
+
+
+########################################################################
+# Handle trace messge just for debug for this perl module
+#-----------------------------------------------------------------------
+sub
+prTrace($)
+{
+ my (
+ $message # message for output
+ ) = @_;
+ prOut("##### $message") if $Trace;
+}
+
+
+
+########################################################################
+# Handle error but keep continue
+#-----------------------------------------------------------------------
+sub
+prErr($)
+{
+ my (
+ $message # message for error
+ ) = @_;
+ prLogHTML("<FONT COLOR=\"#FF0000\">!!! $message</FONT><BR>");
+ $message=HTML2TXT($message);
+ print STDERR "$message";
+}
+
+
+
+########################################################################
+# Handle error and exit
+#-----------------------------------------------------------------------
+sub
+prErrExit($)
+{
+ my (
+ $message # message for error
+ ) = @_;
+ prErr("V6evalTool.pm $message"); # assume it is error detected
+ # in this module leval.
+ $!=$InternalErr,die "";
+}
+
+
+
+########################################################################
+# Handler to chatch SIGCHLD
+#
+# In case that the died child is pktbuf process,
+# output the message and exit this script.
+# And, we assume that execCmd() will be invoked one by one.
+#-----------------------------------------------------------------------
+sub
+checkChild()
+{
+ $ChildPid = wait;
+ $ChildStatus = $?; # save child status
+ my ($HexStatus) = sprintf("0x%08x",$ChildStatus);
+ prTrace("Catch child die pid=$ChildPid status=$HexStatus");
+
+ if($ChildPid==$ExecutingPid_vrasync) { # vRemoteAsync() finished
+ $ExecutingPid_vrasync=0;
+ $ChildPid_vrasync = $ChildPid; # save child pid for vRemoteAsync()
+ $ChildStatus_vrasync = $ChildStatus; # save child status for vRemoteAsync()
+ $ChildPid=0;
+ return;
+ }
+
+ $ExecutingPid=0 if($ChildPid==$ExecutingPid); # execCmd() finished
+ if( grep {$ChildPid==$_} @PktbufPids, @TcpdumpPids) {
+ my $pid;
+ for(1..scalar(@PktbufPids)){
+ $pid=shift(@PktbufPids);
+ if($pid==$ChildPid){
+ prErrExit("pktbuf died pid=$ChildPid status=$HexStatus");
+ }
+ push(@PktbufPids,$pid);
+ }
+ for(1..scalar(@TcpdumpPids)){
+ $pid=shift(@TcpdumpPids);
+ if($pid==$ChildPid){
+ prErrExit("tcpdump died pid=$ChildPid status=$HexStatus");
+ }
+ push(@TcpdumpPids,$pid);
+ }
+ }
+}
+
+
+
+########################################################################
+# Interface subroutine who needs child's exit status
+#-----------------------------------------------------------------------
+sub
+getChildPid()
+{
+ $ChildPid;
+}
+
+
+
+sub
+getChildStatus()
+{
+ $ChildStatus; # This should be comment out in case you
+ # decide not to chatch SIGCHLD in this module
+ # $?; # Then, you should return $? here, for the
+ # subroutines inside of this module.
+}
+
+
+
+########################################################################
+# Subroutine which makes link local address from EUI-64
+#-----------------------------------------------------------------------
+sub
+vMAC2LLAddr($)
+{
+ my (
+ $addr # MAC Address
+ ) = @_;
+ my (@str, @hex);
+
+ @str=split(/:/,$addr);
+ foreach(@str) {
+ push @hex,hex($_);
+ };
+
+ #
+ # invert universal/local bit
+ $hex[0] ^= 0x02;
+
+ sprintf "fe80::%02x%02x:%02xff:fe%02x:%02x%02x",@hex;
+}
+
+
+
+########################################################################
+# End procedure
+#
+# This will be called when exit is calld .
+# just output time stamp, and do some post processs.
+# To kill pktbuf process, send SIGTERM
+#-----------------------------------------------------------------------
+END
+{
+ vOriginalPacketFile();
+
+ if($vLogStat==$vLogStatOpenRow){
+ prLog("</TD>\n</TR>");
+ }
+
+ my $timestr=getTimeStamp();
+ prLog("<TR><TD>$timestr</TD><TD>End</TD></TR>");
+ prLog("</TABLE>");
+
+ prLog("<HR><H1>Packet Reverse Log</H1>");
+ prLog("<UL>\n$pktrevlog</UL>\n");
+
+ prLog("</BODY>\n</HTML>");
+ unless(defined($ENV{'V6EVAL_WITH_KOI'})) {
+ close(LOG);
+ addMD5($0, $PktDef, $LogFile);
+ }
+ if( $KeepImd ) { # just for degug
+ prOut("Keep packet ImdFile <$PktImd>");
+ }
+ else { unlink("$PktImd"); } # normally unlink
+
+ #---------------------------------------------------------------
+ # remove unix domain sockets
+ #---------------------------------------------------------------
+ my $soname;
+ foreach $soname (@TnSos) {
+ prTrace("unlink $SocketPath/$soname");
+ unlink("$SocketPath/$soname");
+ }
+
+ # Send SIGTERM to myself for killing all my children (pktbuf & tcpdump)
+ $SIG{CHLD} = IGNORE;
+ #
+ # stop running pktbuf processes and the some comannd if still running
+ #
+ push(@PktbufPids,$ExecutingPid) if($ExecutingPid!=0);
+ foreach(@PktbufPids){
+ prTrace("Exiting... sending SIGTERM to $_");
+ kill('TERM',$_) || prOut("Error in killing pktbuf pid=$_");
+ }
+ sleep 1;
+ foreach(@TcpdumpPids){
+ prTrace("Exiting... sending SIGTERM to $_");
+ kill('INT',$_) || prOut("Error in killing tcpdump pid=$_");
+ }
+
+ foreach my $key (keys(%SIG)) {
+ $SIG{$key} = 'DEFAULT';
+ }
+
+ %SIG = %storedSIG;
+}
+
+
+
+########################################################################
+# Begin procedure
+#
+# Since the subroutine define bellow will not be resolved when
+# BEGIN{} is processed.
+# This module had better locate bottom.
+#
+#-----------------------------------------------------------------------
+BEGIN
+{
+ %storedSIG = %SIG;
+
+ foreach my $key (keys(%SIG)) {
+ $SIG{$key} = 'DEFAULT';
+ }
+
+ $|=1; # set command buffering mode
+ $ExecutingPid=0; # pid of command executing
+ # such as cpp/pkt{send,recv,ctl}
+ $InternalErr=64; # exit code
+ # Set SIGCHLD handler to check pktbuf died while testing
+ $SIG{CHLD} = \&checkChild;
+ $SIG{TERM} = sub {exit;}; # This is the time to die !!
+ # explicit exit here to avoid
+ # printing 'Terminated' message
+ # to console
+
+ $vSendPKT=0; # send packets counter
+ $vRecvPKT=0; # receive packets counter
+ $vLogStatCloseRow=0; # const
+ $vLogStatOpenRow=1; # const
+ $vLogStat=$vLogStatCloseRow;
+
+ initialize();
+}
+1;
+########################################################################
+__END__
+
+=head1 NAME
+
+V6evalTool - Perl interface to write sequence script for IPv6 evaluation.
+
+=head1 SYNOPSIS
+
+ use V6evalTool;
+
+ vStop(Link0);
+ vClear(Link0);
+ vCapture(Link0);
+ %ret= vSend(Link0, frameA, frameB, frameC );
+ %ret= vRecv(Link0, 0, 0, 0, (frameX, frameY) );
+ if( $ret{status}!=0 ){
+ vLog(NG);
+ exit 1;
+ }
+ %ret=vRemote(remote_file, options, args_list);
+ vLog(OK);
+ $error_message= vErrmsg(%ret);
+ $val= vRoundoff(timeval);
+
+
+=head1 ENVIRONMENT
+
+Directory of IPv6 evaluation environment is set -vroot option.
+In -vroot option, first is option setting direcory, second environment
+variable C<V6EVALROOT>, third "/usr/local/v6eval".
+All commands are assumed to be located at
+<-vroot option directory>/bin directory.
+Otherwise, this routines will not work.
+
+=head1 DESCRIPTION
+
+These routines allow you to write sequence script for IPv6
+evaluation. Only one sequence script can run at the same time.
+There is no assurance for the case that multiple script run
+at the same time.
+
+This module tries to catch SIGCHLD to detect termination of
+pktbuf process.
+Since this handler calls wait() to get the process id of the
+terminated child here, $? value will be invalid in case
+the user use wait() outside.
+In this case, the user should get the staus by using
+getChildStatus() function instead of looking up $? value.
+Because of the same reason, if the user wants to get the
+process id of child calling wait(), the retruned value will
+be also invalid. For this case, user can use getChildPid()
+function after calling wait().
+
+The name of the sequence script is assumed 'xxxx.seq', where xxxx
+represents the type of the evaluation test.
+'xxxx.seq' may have the following keyword parameters,
+and these are checked by this module at the package initialization.
+
+ < default value >
+ ------------------
+ -tn TN(Testing Node) configuration file <dir>/tn.def
+ -nut NUT(Node Under Test) configuration file <dir>/nut.def
+ -pkt Packet definition file <dir>/packet.def
+ -ti Test Title (text) <script>
+ -log Log file <dir>/<script>.log
+ -l Log Level (0,1,2...) 1
+ -h Help N/A
+ -v log file print to STDOUT 0
+ -nostd not include std.def 0
+ -vroot v6eval directory /usr/local/v6eval
+ -remote options passed to a remote ctrl. file N/A
+
+ <dir>: directory of the sequence script located
+ <script>: sequence script name without extntion
+
+=head1 FILES
+
+ TN(Testing Node) configuration file;
+ NUT(Node Under Test) configuration file:
+ These files read from
+ First fullname -tn option sets
+ option setting file
+ Second only file name -tn option sets
+ search paths order
+ 1 <dir>/xxxx
+ 2 current directory/xxxx
+ 3 <V6Root>/etc/xxxx
+ Third -tn option does not set
+ search paths order
+ 1 <dir>/tn.def
+ 2 current direcrory/tn.def
+ 3 <V6Root>/etc/tn.def
+
+ Packet definition file:
+ If -pkt option does not set
+ <dir>/packet.def
+ is default file
+
+ Standard Difinition file:
+ If -nostd option does not set
+ search paths order
+ 1 current directory/std.def
+ 2 <V6Root>/include/std.def
+
+ Other include file:
+ include order
+ 1 current directory
+ 2 <V6Root>/include/ directory
+
+ <V6Root>: directory set by -vroot option
+ <dir>: directory of the sequence script located
+
+=head1 SUPPORTED FUNCTIONS
+
+=over 4
+
+=head1 vSend
+
+Send frame to the interface.
+
+ sub vSend($@) { my (
+
+ $ifname, # target interface name
+ @frames # frame names to send
+ ) = @_;
+
+Returns hash value, and its information can be accessed
+by the following keys;
+
+=item status
+
+ =0: normal
+ >0: error
+
+=item sentTimeN
+
+Time of the specified N'th frame pushed to the
+specified interface for sending.
+For example, the time for the 1st frame will be referenced
+by $retval{'sentTime1'}.
+The value format is as follows;
+ %ld[=epochtime].%06d[=microsecond]
+
+=head1 vRecv
+
+Receive frame from the interface.
+
+ sub vRecv($$$$@) { my (
+ $ifname, # target interface name
+ $timeout, # expire time(second)
+ # -1: No limitation
+ $seektime, # seek to the packet at the time(%ld.%06d)
+ # 0: seek from the beginning
+ # of the captured buffer
+ # You may use $retval{'sentTime(n)'}
+ # returned by vSend().
+ $count, # How many frames to wait
+ # 0: No limitation
+ @frames # frame names to send
+ ) = @_;
+
+Returns hash value, and its information can be accessed
+by the following keys;
+
+=item status:
+
+ =0: normal
+ 1: receive time exceeded
+ 2: receive count exceeded
+ >3: error
+
+=item recvCount;
+
+The number of frame received while calling this subroutine.
+
+=item recvTime(N):
+
+Time of the specified N'th frame received from the
+specified interface.
+For example, the time for the 1st frame will be referenced
+by $retval{"recvTime1"}.
+The value format is as follows;
+ %ld[=epochtime].%06d[=microsecond]
+
+=item recvFrame:
+
+The name of the frame
+This will be normally one of the name in the frames
+specified in the argument. Otherwise, undef value
+in case of receive time or count exceeded.
+
+=head1 vCapture
+
+Start frame capture for the interface.
+
+ sub vCapture($) { my (
+ $ifname, # target interface name
+ ) = @_;
+
+vCapture returns scaler value which represents the status
+ =0: normal (even if already capturing)
+ >0: error
+
+=head1 vStop
+
+Stop frame capture for the interface.
+
+ sub vStop($) { my (
+ $ifname, # target interface name
+ ) = @_;
+
+Returns returns scaler value which represents the status
+ =0: normal ( even if already stopped )
+ >0: error
+
+
+=head1 vClear
+
+Clear captured buffer for the interface.
+
+ sub vClear($) { my (
+ $ifname, # target interface name
+ ) = @_;
+
+Returns scaler value which represents the status
+ =0: normal ( even if already cleared)
+ >0: error
+
+
+=head1 vSleep
+
+suspend process execution for interval of seconds
+
+ sub vSleep($;$) { my (
+ $sec,
+ $mesg
+ ) = @_;
+
+
+=head1 vRemote
+
+Execute a remote control program.
+
+ sub vRemote($;$@) { my (
+ $remtoe_file # A file name of remote control program.
+ $options # Options that pass to the program directly.
+ # See i/f of the remote control program.
+ @argv # Args that pass to the program directly
+ # that depends on the remote control program.
+ ) = @_;
+
+Returns exit value that the remote control program shows.
+ =0: noral
+ >0: error (that depend on the remote control program)
+
+=item FILE SEARCH PATH
+
+ A remote control program is searched as the following directories:
+ 1. The current directory.
+ 2. $V6EVALROOT/bin if defined.
+ Or /usr/local/v6eval/bin if $V6EVALROOT is not defined.
+
+=item EVALUATING THE OPTIONS
+
+ The options are evaluated the following order:
+ 1. The definitions in TN.def or NUT.def
+ 2. -remote="..." options.
+ 3. vRemote(, "...", ) options.
+
+=item THE RELATION TO TN/NUT DIFINITION FILES
+
+ A TN.def VS. a remote control program options:
+ ---------------+-----------------------
+ TN.def
+ Entries Mapped options
+ ---------------+-----------------------
+ RemoteDevice -d
+ RemoteDebug -v
+ RemoteIntDebug -i
+ RemoteLog -o
+ RemoteSpeed -s
+ ---------------+-----------------------
+
+ A NUT.def VS. a remote control program optons:
+ ---------------+-----------------------
+ NUT.def
+ Entries Mapped optons
+ ---------------+-----------------------
+ System -t
+ User -u
+ Password -p
+ ---------------+-----------------------
+
+=item SEE ALSO
+
+ V6evalRemote.pm (perldoc V6evalRemote)
+
+
+=head1 vRemoteAsync
+
+Asynchronous execution of a remote control program.
+
+ sub vRemoteAsync($;$@) { my (
+ $remtoe_file # A file name of remote control program.
+ $options # Options that pass to the program directly.
+ # See i/f of the remote control program.
+ @argv # Args that pass to the program directly
+ # that depends on the remote control program.
+ ) = @_;
+
+Returns scaler value which represents the status
+ =0: normal
+ >0: error
+
+This function forks and executes remote control program.
+Main sequence program can wait and synchronize the executing remote
+control program by vRemoteAsyncWait() function.
+Multiple vRemoteAsync() execution is unavailable.
+Executing vRemote() between vRemoteAsync() and vRemoteAsyncWait()
+is also unavailable.
+Details of other specification are same as vRemote().
+
+
+=head1 vRemoteAsyncWait
+
+Wait for an asynchronous remote control program executed by vRemoteAsync().
+
+ sub vRemoteAsyncWait()
+
+Returns exit value that the remote control program shows.
+ =0: normal
+ >0: error (that depend on the remote control program)
+
+
+
+
+=head1 vLog
+
+Output message to the log file
+
+ sub vLog($) { my (
+ $message, # message to be logged
+ ) = @_;
+
+Returns nothing.
+
+=head1 vErrmsg
+
+Return error messages.
+
+sub vErrmsg(%) { my (
+ %stat # return status
+ ) = @_;
+
+=head1 vRoundoff
+
+Return time value that is rounded off to one decimal place
+
+sub vRoundoff($) { my (
+ $timeval # sec.usec
+ ) = @_;
+
+=head1 vStatus
+
+Get the status of packet buffering process.
+
+ sub vStatus() { my (
+
+ $ifname, # target interface name
+ @frames # frame names to send
+ ) = @_;
+
+Returns hash value, and its information can be accessed
+by the following keys;
+
+=item status
+
+ =0: normal
+ >0: error
+
+=item XXXX
+
+not yet fiexed.
+
+=back
+
+=head1 vMAC2LLAddr
+
+create link local address from MAC address
+
+sub vMAC2LLAddr(%) { my (
+
+ $MACaddr # MAC address
+ ) = @_;
+
+=head1 SEQUENCE SCRIPT EXAMPLE
+
+ #!/usr/bin/perl
+
+ use V6evalTool;
+
+ #--------------------------------------------
+ # Setup test environment
+ #--------------------------------------------
+ vStop(Link0);
+ vClear(Link0);
+ vCapture(Link0);
+
+ #--------------------------------------------
+ # Send frame
+ #--------------------------------------------
+ %sret= vSend(Link0, frame1, frame2 );
+ if( $sret{status}!=0 ){
+ vLog(NG);
+ exit 1;
+ }
+ print "sentTime1:\t$sret{sentTime1}\n";
+ print "sentTime2:\t$sret{sentTime2}\n";
+
+ #--------------------------------------------
+ # log some site specific messages
+ #--------------------------------------------
+ vLog("Something you need" );
+
+ #--------------------------------------------
+ # Receive frame
+ #--------------------------------------------
+ %rret= vRecv(Link0, 10, $sret{sentTime1}, 5,(frame1,frame2) );
+ if( $rret{status}!=0 ){
+ vLog(NG);
+ exit 1;
+ }
+ print "recvFrame:\t$rret{recvFrame}\n";
+
+ #--------------------------------------------
+ # Post process
+ #--------------------------------------------
+ vLog(OK);
+
+=cut
diff -urN tahi-linux-3.0.12/script/pmod/V6evalTool/blib/man3/V6evalTool.3pm tahi-linux-3.0.12-linux/script/pmod/V6evalTool/blib/man3/V6evalTool.3pm
--- tahi-linux-3.0.12/script/pmod/V6evalTool/blib/man3/V6evalTool.3pm 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalTool/blib/man3/V6evalTool.3pm 2007-12-10 20:27:32.000000000 +0100
@@ -0,0 +1,601 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "V6evalTool 3"
+.TH V6evalTool 3 "2007-12-09" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+V6evalTool \- Perl interface to write sequence script for IPv6 evaluation.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use V6evalTool;
+.Ve
+.PP
+.Vb 13
+\& vStop(Link0);
+\& vClear(Link0);
+\& vCapture(Link0);
+\& %ret= vSend(Link0, frameA, frameB, frameC );
+\& %ret= vRecv(Link0, 0, 0, 0, (frameX, frameY) );
+\& if( $ret{status}!=0 ){
+\& vLog(NG);
+\& exit 1;
+\& }
+\& %ret=vRemote(remote_file, options, args_list);
+\& vLog(OK);
+\& $error_message= vErrmsg(%ret);
+\& $val= vRoundoff(timeval);
+.Ve
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+Directory of IPv6 evaluation environment is set \-vroot option.
+In \-vroot option, first is option setting direcory, second environment
+variable \f(CW\*(C`V6EVALROOT\*(C'\fR, third \*(L"/usr/local/v6eval\*(R".
+All commands are assumed to be located at
+<\-vroot option directory>/bin directory.
+Otherwise, this routines will not work.
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+These routines allow you to write sequence script for IPv6
+evaluation. Only one sequence script can run at the same time.
+There is no assurance for the case that multiple script run
+at the same time.
+.PP
+This module tries to catch \s-1SIGCHLD\s0 to detect termination of
+pktbuf process.
+Since this handler calls \fIwait()\fR to get the process id of the
+terminated child here, $? value will be invalid in case
+the user use \fIwait()\fR outside.
+In this case, the user should get the staus by using
+\&\fIgetChildStatus()\fR function instead of looking up $? value.
+Because of the same reason, if the user wants to get the
+process id of child calling \fIwait()\fR, the retruned value will
+be also invalid. For this case, user can use \fIgetChildPid()\fR
+function after calling \fIwait()\fR.
+.PP
+The name of the sequence script is assumed 'xxxx.seq', where xxxx
+represents the type of the evaluation test.
+\&'xxxx.seq' may have the following keyword parameters,
+and these are checked by this module at the package initialization.
+.PP
+.Vb 13
+\& < default value >
+\& ------------------
+\& -tn TN(Testing Node) configuration file <dir>/tn.def
+\& -nut NUT(Node Under Test) configuration file <dir>/nut.def
+\& -pkt Packet definition file <dir>/packet.def
+\& -ti Test Title (text) <script>
+\& -log Log file <dir>/<script>.log
+\& -l Log Level (0,1,2...) 1
+\& -h Help N/A
+\& -v log file print to STDOUT 0
+\& -nostd not include std.def 0
+\& -vroot v6eval directory /usr/local/v6eval
+\& -remote options passed to a remote ctrl. file N/A
+.Ve
+.PP
+.Vb 2
+\& <dir>: directory of the sequence script located
+\& <script>: sequence script name without extntion
+.Ve
+.SH "FILES"
+.IX Header "FILES"
+.Vb 15
+\& TN(Testing Node) configuration file;
+\& NUT(Node Under Test) configuration file:
+\& These files read from
+\& First fullname -tn option sets
+\& option setting file
+\& Second only file name -tn option sets
+\& search paths order
+\& 1 <dir>/xxxx
+\& 2 current directory/xxxx
+\& 3 <V6Root>/etc/xxxx
+\& Third -tn option does not set
+\& search paths order
+\& 1 <dir>/tn.def
+\& 2 current direcrory/tn.def
+\& 3 <V6Root>/etc/tn.def
+.Ve
+.PP
+.Vb 4
+\& Packet definition file:
+\& If -pkt option does not set
+\& <dir>/packet.def
+\& is default file
+.Ve
+.PP
+.Vb 5
+\& Standard Difinition file:
+\& If -nostd option does not set
+\& search paths order
+\& 1 current directory/std.def
+\& 2 <V6Root>/include/std.def
+.Ve
+.PP
+.Vb 4
+\& Other include file:
+\& include order
+\& 1 current directory
+\& 2 <V6Root>/include/ directory
+.Ve
+.PP
+.Vb 2
+\& <V6Root>: directory set by -vroot option
+\& <dir>: directory of the sequence script located
+.Ve
+.SH "SUPPORTED FUNCTIONS"
+.IX Header "SUPPORTED FUNCTIONS"
+.SH "vSend"
+.IX Header "vSend"
+.RS 4
+Send frame to the interface.
+.Sp
+.Vb 1
+\& sub vSend($@) { my (
+.Ve
+.Sp
+.Vb 3
+\& $ifname, # target interface name
+\& @frames # frame names to send
+\& ) = @_;
+.Ve
+.Sp
+Returns hash value, and its information can be accessed
+by the following keys;
+.RE
+.IP "status" 4
+.IX Item "status"
+.Vb 2
+\& =0: normal
+\& >0: error
+.Ve
+.IP "sentTimeN" 4
+.IX Item "sentTimeN"
+Time of the specified N'th frame pushed to the
+specified interface for sending.
+For example, the time for the 1st frame will be referenced
+by \f(CW$retval\fR{'sentTime1'}.
+The value format is as follows;
+ \f(CW%ld\fR[=epochtime].%06d[=microsecond]
+.SH "vRecv"
+.IX Header "vRecv"
+Receive frame from the interface.
+.Sp
+.Vb 13
+\& sub vRecv($$$$@) { my (
+\& $ifname, # target interface name
+\& $timeout, # expire time(second)
+\& # -1: No limitation
+\& $seektime, # seek to the packet at the time(%ld.%06d)
+\& # 0: seek from the beginning
+\& # of the captured buffer
+\& # You may use $retval{'sentTime(n)'}
+\& # returned by vSend().
+\& $count, # How many frames to wait
+\& # 0: No limitation
+\& @frames # frame names to send
+\& ) = @_;
+.Ve
+.Sp
+Returns hash value, and its information can be accessed
+by the following keys;
+.IP "status:" 4
+.IX Item "status:"
+.Vb 4
+\& =0: normal
+\& 1: receive time exceeded
+\& 2: receive count exceeded
+\& >3: error
+.Ve
+.IP "recvCount;" 4
+.IX Item "recvCount;"
+The number of frame received while calling this subroutine.
+.IP "recvTime(N):" 4
+.IX Item "recvTime(N):"
+Time of the specified N'th frame received from the
+specified interface.
+For example, the time for the 1st frame will be referenced
+by \f(CW$retval\fR{\*(L"recvTime1\*(R"}.
+The value format is as follows;
+ \f(CW%ld\fR[=epochtime].%06d[=microsecond]
+.IP "recvFrame:" 4
+.IX Item "recvFrame:"
+The name of the frame
+This will be normally one of the name in the frames
+specified in the argument. Otherwise, undef value
+in case of receive time or count exceeded.
+.SH "vCapture"
+.IX Header "vCapture"
+Start frame capture for the interface.
+.Sp
+.Vb 3
+\& sub vCapture($) { my (
+\& $ifname, # target interface name
+\& ) = @_;
+.Ve
+.Sp
+vCapture returns scaler value which represents the status
+ =0: normal (even if already capturing)
+ >0: error
+.SH "vStop"
+.IX Header "vStop"
+Stop frame capture for the interface.
+.Sp
+.Vb 3
+\& sub vStop($) { my (
+\& $ifname, # target interface name
+\& ) = @_;
+.Ve
+.Sp
+Returns returns scaler value which represents the status
+ =0: normal ( even if already stopped )
+ >0: error
+.SH "vClear"
+.IX Header "vClear"
+Clear captured buffer for the interface.
+.Sp
+.Vb 3
+\& sub vClear($) { my (
+\& $ifname, # target interface name
+\& ) = @_;
+.Ve
+.Sp
+Returns scaler value which represents the status
+ =0: normal ( even if already cleared)
+ >0: error
+.SH "vSleep"
+.IX Header "vSleep"
+suspend process execution for interval of seconds
+.Sp
+.Vb 4
+\& sub vSleep($;$) { my (
+\& $sec,
+\& $mesg
+\& ) = @_;
+.Ve
+.SH "vRemote"
+.IX Header "vRemote"
+Execute a remote control program.
+.Sp
+.Vb 7
+\& sub vRemote($;$@) { my (
+\& $remtoe_file # A file name of remote control program.
+\& $options # Options that pass to the program directly.
+\& # See i/f of the remote control program.
+\& @argv # Args that pass to the program directly
+\& # that depends on the remote control program.
+\& ) = @_;
+.Ve
+.Sp
+Returns exit value that the remote control program shows.
+ =0: noral
+ >0: error (that depend on the remote control program)
+.IP "\s-1FILE\s0 \s-1SEARCH\s0 \s-1PATH\s0" 4
+.IX Item "FILE SEARCH PATH"
+.Vb 4
+\& A remote control program is searched as the following directories:
+\& 1. The current directory.
+\& 2. $V6EVALROOT/bin if defined.
+\& Or /usr/local/v6eval/bin if $V6EVALROOT is not defined.
+.Ve
+.IP "\s-1EVALUATING\s0 \s-1THE\s0 \s-1OPTIONS\s0" 4
+.IX Item "EVALUATING THE OPTIONS"
+.Vb 4
+\& The options are evaluated the following order:
+\& 1. The definitions in TN.def or NUT.def
+\& 2. -remote="..." options.
+\& 3. vRemote(, "...", ) options.
+.Ve
+.IP "\s-1THE\s0 \s-1RELATION\s0 \s-1TO\s0 \s-1TN/NUT\s0 \s-1DIFINITION\s0 \s-1FILES\s0" 4
+.IX Item "THE RELATION TO TN/NUT DIFINITION FILES"
+.Vb 11
+\& A TN.def VS. a remote control program options:
+\& ---------------+-----------------------
+\& TN.def
+\& Entries Mapped options
+\& ---------------+-----------------------
+\& RemoteDevice -d
+\& RemoteDebug -v
+\& RemoteIntDebug -i
+\& RemoteLog -o
+\& RemoteSpeed -s
+\& ---------------+-----------------------
+.Ve
+.Sp
+.Vb 9
+\& A NUT.def VS. a remote control program optons:
+\& ---------------+-----------------------
+\& NUT.def
+\& Entries Mapped optons
+\& ---------------+-----------------------
+\& System -t
+\& User -u
+\& Password -p
+\& ---------------+-----------------------
+.Ve
+.IP "\s-1SEE\s0 \s-1ALSO\s0" 4
+.IX Item "SEE ALSO"
+.Vb 1
+\& V6evalRemote.pm (perldoc V6evalRemote)
+.Ve
+.SH "vRemoteAsync"
+.IX Header "vRemoteAsync"
+Asynchronous execution of a remote control program.
+.Sp
+.Vb 7
+\& sub vRemoteAsync($;$@) { my (
+\& $remtoe_file # A file name of remote control program.
+\& $options # Options that pass to the program directly.
+\& # See i/f of the remote control program.
+\& @argv # Args that pass to the program directly
+\& # that depends on the remote control program.
+\& ) = @_;
+.Ve
+.Sp
+Returns scaler value which represents the status
+ =0: normal
+ >0: error
+.Sp
+This function forks and executes remote control program.
+Main sequence program can wait and synchronize the executing remote
+control program by \fIvRemoteAsyncWait()\fR function.
+Multiple \fIvRemoteAsync()\fR execution is unavailable.
+Executing \fIvRemote()\fR between \fIvRemoteAsync()\fR and \fIvRemoteAsyncWait()\fR
+is also unavailable.
+Details of other specification are same as \fIvRemote()\fR.
+.SH "vRemoteAsyncWait"
+.IX Header "vRemoteAsyncWait"
+Wait for an asynchronous remote control program executed by \fIvRemoteAsync()\fR.
+.Sp
+.Vb 1
+\& sub vRemoteAsyncWait()
+.Ve
+.Sp
+Returns exit value that the remote control program shows.
+ =0: normal
+ >0: error (that depend on the remote control program)
+.SH "vLog"
+.IX Header "vLog"
+Output message to the log file
+.Sp
+.Vb 3
+\& sub vLog($) { my (
+\& $message, # message to be logged
+\& ) = @_;
+.Ve
+.Sp
+Returns nothing.
+.SH "vErrmsg"
+.IX Header "vErrmsg"
+Return error messages.
+.Sp
+sub vErrmsg(%) { my (
+ \f(CW%stat\fR # return status
+ ) = \f(CW@_\fR;
+.SH "vRoundoff"
+.IX Header "vRoundoff"
+Return time value that is rounded off to one decimal place
+.Sp
+sub vRoundoff($) { my (
+ \f(CW$timeval\fR # sec.usec
+ ) = \f(CW@_\fR;
+.SH "vStatus"
+.IX Header "vStatus"
+Get the status of packet buffering process.
+.Sp
+.Vb 1
+\& sub vStatus() { my (
+.Ve
+.Sp
+.Vb 3
+\& $ifname, # target interface name
+\& @frames # frame names to send
+\& ) = @_;
+.Ve
+.Sp
+Returns hash value, and its information can be accessed
+by the following keys;
+.IP "status" 4
+.IX Item "status"
+.Vb 2
+\& =0: normal
+\& >0: error
+.Ve
+.IP "\s-1XXXX\s0" 4
+.IX Item "XXXX"
+not yet fiexed.
+.SH "vMAC2LLAddr"
+.IX Header "vMAC2LLAddr"
+create link local address from \s-1MAC\s0 address
+.PP
+sub vMAC2LLAddr(%) { my (
+.PP
+.Vb 2
+\& $MACaddr # MAC address
+\& ) = @_;
+.Ve
+.SH "SEQUENCE SCRIPT EXAMPLE"
+.IX Header "SEQUENCE SCRIPT EXAMPLE"
+.Vb 1
+\& #!/usr/bin/perl
+.Ve
+.PP
+.Vb 1
+\& use V6evalTool;
+.Ve
+.PP
+.Vb 6
+\& #--------------------------------------------
+\& # Setup test environment
+\& #--------------------------------------------
+\& vStop(Link0);
+\& vClear(Link0);
+\& vCapture(Link0);
+.Ve
+.PP
+.Vb 10
+\& #--------------------------------------------
+\& # Send frame
+\& #--------------------------------------------
+\& %sret= vSend(Link0, frame1, frame2 );
+\& if( $sret{status}!=0 ){
+\& vLog(NG);
+\& exit 1;
+\& }
+\& print "sentTime1:\et$sret{sentTime1}\en";
+\& print "sentTime2:\et$sret{sentTime2}\en";
+.Ve
+.PP
+.Vb 4
+\& #--------------------------------------------
+\& # log some site specific messages
+\& #--------------------------------------------
+\& vLog("Something you need" );
+.Ve
+.PP
+.Vb 9
+\& #--------------------------------------------
+\& # Receive frame
+\& #--------------------------------------------
+\& %rret= vRecv(Link0, 10, $sret{sentTime1}, 5,(frame1,frame2) );
+\& if( $rret{status}!=0 ){
+\& vLog(NG);
+\& exit 1;
+\& }
+\& print "recvFrame:\et$rret{recvFrame}\en";
+.Ve
+.PP
+.Vb 4
+\& #--------------------------------------------
+\& # Post process
+\& #--------------------------------------------
+\& vLog(OK);
+.Ve
diff -urN tahi-linux-3.0.12/script/pmod/V6evalTool/Makefile.tmp tahi-linux-3.0.12-linux/script/pmod/V6evalTool/Makefile.tmp
--- tahi-linux-3.0.12/script/pmod/V6evalTool/Makefile.tmp 1970-01-01 01:00:00.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalTool/Makefile.tmp 2007-12-10 20:27:30.000000000 +0100
@@ -0,0 +1,789 @@
+# This Makefile is for the V6evalTool extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.30 (Revision: Revision: 4535 ) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# MAKEFILE => q[Makefile.tmp]
+# NAME => q[V6evalTool]
+# VERSION => q[1.00]
+# dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+# linkext => { LINKTYPE=>q[] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl5/5.8.8/i586-linux-thread-multi/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared
+LDFLAGS =
+LIBC = /lib/libc-2.6.1.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.6.22
+RANLIB = :
+SITELIBEXP = /usr/lib/perl5/site_perl/5.8.8
+SITEARCHEXP = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+SO = so
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.8.8
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = V6evalTool
+NAME_SYM = V6evalTool
+VERSION = 1.00
+VERSION_MACRO = VERSION
+VERSION_SYM = 1_00
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1.00
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR =
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/lib/perl5/5.8.8
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/lib/perl5/site_perl/5.8.8
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.8.8
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/lib/perl5/5.8.8
+PERL_ARCHLIB = /usr/lib/perl5/5.8.8/i586-linux-thread-multi
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile.tmp
+MAKEFILE_OLD = Makefile.tmp.old
+MAKE_APERL_FILE = Makefile.tmp.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl5/5.8.8/i586-linux-thread-multi/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER = /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.30
+MM_REVISION = Revision: 4535
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = V6evalTool
+BASEEXT = V6evalTool
+PARENT_NAME =
+DLBASE = $(BASEEXT)
+VERSION_FROM =
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP =
+
+# Handy lists of source code files:
+XS_FILES =
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS = V6evalTool.pm
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR = $(INST_LIB)
+INST_ARCHLIBDIR = $(INST_ARCHLIB)
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+# Extra linker info
+EXPORT_LIST =
+PERL_ARCHIVE =
+PERL_ARCHIVE_AFTER =
+
+
+TO_INST_PM = V6evalTool.pm
+
+PM_TO_BLIB = V6evalTool.pm \
+ $(INST_LIB)/V6evalTool.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.50
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MACROSTART =
+MACROEND =
+USEMAKEFILE = -f
+FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = V6evalTool
+DISTVNAME = V6evalTool-1.00
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+ $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+ $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+ $(NOECHO) $(NOOP)
+
+help :
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+ $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+ $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+ $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+ $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_BIN)
+ $(NOECHO) $(CHMOD) 755 $(INST_BIN)
+ $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+ $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+ $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+ $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext ::
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all \
+ V6evalTool.pm \
+ V6evalTool.pm
+ $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
+ V6evalTool.pm $(INST_MAN3DIR)/V6evalTool.$(MAN3EXT)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+ - $(RM_F) \
+ *$(LIB_EXT) core \
+ core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
+ core.[0-9][0-9] $(BASEEXT).bso \
+ pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+ $(BASEEXT).x $(BOOTSTRAP) \
+ perl$(EXE_EXT) tmon.out \
+ *$(OBJ_EXT) pm_to_blib \
+ $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+ core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+ core.*perl.*.? $(MAKE_APERL_FILE) \
+ perl $(BASEEXT).def \
+ core.[0-9][0-9][0-9] mon.out \
+ lib$(BASEEXT).def perlmain.c \
+ perl.exe so_locations \
+ $(BASEEXT).exp
+ - $(RM_RF) \
+ blib
+ - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge :: clean realclean_subdirs
+ - $(RM_F) \
+ $(MAKEFILE_OLD) $(FIRST_MAKEFILE)
+ - $(RM_RF) \
+ $(DISTVNAME)
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+ $(NOECHO) $(ECHO) Generating META.yml
+ $(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
+ $(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
+ $(NOECHO) $(ECHO) 'name: V6evalTool' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version: 1.00' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version_from: ' >> META_new.yml
+ $(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
+ $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) '' >> META_new.yml
+ $(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
+ $(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30' >> META_new.yml
+ -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+
+
+# --- MakeMaker signature section:
+signature :
+ cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+ $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+ $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+ $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta
+ $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+ -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+ -e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
+ $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+ cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+ $(NOECHO) $(NOOP)
+
+install_perl :: all pure_perl_install doc_perl_install
+ $(NOECHO) $(NOOP)
+
+install_site :: all pure_site_install doc_site_install
+ $(NOECHO) $(NOOP)
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+ $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+ $(INST_BIN) $(DESTINSTALLSITEBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLVENDORLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+ $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+ $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+ $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+ $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+ -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+ $(PERLRUN) Makefile.PL
+ $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+ $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+ $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ $(NOECHO) $(PERLRUNINST) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES =
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+ $(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
+
+test_dynamic :: pure_all
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,00,0,0">' > $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <AUTHOR></AUTHOR>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i586-linux-thread-multi" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(TO_INST_PM)
+ $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
+ V6evalTool.pm $(INST_LIB)/V6evalTool.pm
+ $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff -urN tahi-linux-3.0.12/script/pmod/V6evalTool/V6evalTool.pm tahi-linux-3.0.12-linux/script/pmod/V6evalTool/V6evalTool.pm
--- tahi-linux-3.0.12/script/pmod/V6evalTool/V6evalTool.pm 2006-03-09 10:10:57.000000000 +0100
+++ tahi-linux-3.0.12-linux/script/pmod/V6evalTool/V6evalTool.pm 2007-12-13 13:52:27.000000000 +0100
@@ -2721,12 +2721,12 @@
push(@PktbufPids,$ExecutingPid) if($ExecutingPid!=0);
foreach(@PktbufPids){
prTrace("Exiting... sending SIGTERM to $_");
- kill('TERM',$_) || prOut("Error in killing pktbuf pid=$_");
+ kill('TERM',$_) || system("kill -n 15 $_") || prOut("Error in killing pktbuf pid=$_");
}
sleep 1;
foreach(@TcpdumpPids){
prTrace("Exiting... sending SIGTERM to $_");
- kill('INT',$_) || prOut("Error in killing tcpdump pid=$_");
+ kill('INT',$_) || system("kill -n 15 $_") || prOut("Error in killing tcpdump pid=$_");
}
foreach my $key (keys(%SIG)) {