[Xorp-hackers] [PATCH] rtrmngr fixes

"Igor Maravić" igorm at etf.rs
Mon Sep 26 01:43:53 PDT 2011


> On 09/23/2011 06:48 AM, "Igor Maravić" wrote:
>> cleaned_xrl should have reference to it. That reference should be argument of functions XRLDB::check_xrl_syntax and XRLDB::check_xrl_exists.
>> Don't know why but it didn't wont to compile with out that fix.
>>
>> VALIDATE_XRLDB should be replaced with DEBUG_XRLDB
>>
>> BR
>> Igor Maravić
>>
>> Signed-off-by: Igor Maravić<igorm at etf.rs>
>> ---
>>
>> diff -upNr xorp.old/rtrmgr/template_commands.cc xorp.mpls/rtrmgr/template_commands.cc
>> --- xorp.old/rtrmgr/template_commands.cc	2011-03-22 22:08:58.000000000 +0100
>> +++ xorp.mpls/rtrmgr/template_commands.cc	2011-09-08 00:30:24.000000000 +0200
>> @@ -316,6 +316,7 @@ XrlAction::check_xrl_is_valid(const list
>>       // Then we can check it is a valid XRL as known by the XRLdb.
>>       //
>>       string cleaned_xrl;
>> +    const string&  refToCleanedXRL = cleaned_xrl;
>>
>>       // Trim quotes from around the XRL
>>       size_t start = 0;
>> @@ -465,13 +466,14 @@ XrlAction::check_xrl_is_valid(const list
>>       }
>>       debug_msg("XrlAction after cleaning:\n%s\n", cleaned_xrl.c_str());
>>
>> -    if (xrldb->check_xrl_syntax(cleaned_xrl) == false) {
>> +    if (xrldb->check_xrl_syntax(refToCleanedXRL) == false) {
>>   	error_msg = c_format("Syntax error in module %s XRL %s: "
>>   			     "invalid XRL syntax (check_xrl_syntax failed)",
>>   			     module_name.c_str(), cleaned_xrl.c_str());
>>   	return false;
>>       }
>> -    XRLMatchType match = xrldb->check_xrl_exists(cleaned_xrl);
>> +
>> +    XRLMatchType match = xrldb->check_xrl_exists(refToCleanedXRL);
>>       switch (match) {
>>       case MATCH_FAIL:
>>       case MATCH_RSPEC: {
>
> What system are you compiling on, and can you show the exact
> compiler command and errors?
>
> Thanks,
> Ben
>
> --
> Ben Greear <greearb at candelatech.com>
> Candela Technologies Inc  http://www.candelatech.com
>
>

When I compile with
 scons debug_xrldb=True

first error is:


g++ -o obj/i686-pc-linux-gnu/rtrmgr/template_commands.o -c -O1 -g3 -Werror -W -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wcast-align -Woverloaded-virtual -ftemplate-depth-25 -pipe -DXRL_PF=120 -D_FORTIFY_SOURCE=0 -DDEBUG_XRLDB=1 -Iobj/i686-pc-linux-gnu -I. -I. rtrmgr/template_commands.cc
rtrmgr/template_commands.cc: In member function ‘bool XrlAction::check_xrl_is_valid(const std::list<std::basic_string<char> >&, const XRLdb*, std::string&)’:
rtrmgr/template_commands.cc:468:16: error: ‘const class XRLdb’ has no member named ‘check_xrl_syntax’
rtrmgr/template_commands.cc:474:33: error: ‘const class XRLdb’ has no member named ‘check_xrl_exists’
scons: *** [obj/i686-pc-linux-gnu/rtrmgr/template_commands.o] Error 1
scons: building terminated because of errors.

Fix for that is to replace VALIDATE_XRLDB with DEBUG_XRLDB in xrldb.hh and xrldb.cc
After that it compiles ok. I couldn't reproduce second error. It looked illogical anyway.

This is the patch for that
Signed-off-by: Igor Maravić<igorm at etf.rs>
---

diff -upNr xorp.old/rtrmgr/xrldb.cc xorp.mpls/rtrmgr/xrldb.cc
--- xorp.old/rtrmgr/xrldb.cc        2011-03-22 22:08:58.000000000 +0100
+++ xorp.mpls/rtrmgr/xrldb.cc        2011-09-07 16:13:24.000000000 +0200
@@ -160,7 +160,7 @@ XRLtarget::str() const
 XRLdb::XRLdb(const string& xrldir, bool verbose) throw (InitError)
     : _verbose(verbose)
 {
-#ifdef VALIDATE_XRLDB
+#ifdef DEBUG_XRLDB
     string errmsg;
     list<string> files;

@@ -209,7 +209,7 @@ XRLdb::XRLdb(const string& xrldir, bool
 #endif
 }

-#ifdef VALIDATE_XRLDB
+#ifdef DEBUG_XRLDB
 bool
 XRLdb::check_xrl_syntax(const string& xrlstr) const
 {
diff -upNr xorp.old/rtrmgr/xrldb.hh xorp.mpls/rtrmgr/xrldb.hh
--- xorp.old/rtrmgr/xrldb.hh        2011-03-22 22:08:58.000000000 +0100
+++ xorp.mpls/rtrmgr/xrldb.hh        2011-09-07 16:05:26.000000000 +0200
@@ -65,7 +65,7 @@ private:
 class XRLdb {
 public:
     XRLdb(const string& xrldir, bool verbose) throw (InitError);
-#ifdef VALIDATE_XRLDB
+#ifdef DEBUG_XRLDB
     bool check_xrl_syntax(const string& xrl) const;
     XRLMatchType check_xrl_exists(const string& xrl) const;
 #endif




More information about the Xorp-hackers mailing list