Hi <br><br>Does anyone know what kind of configuration file error might cause this message or give me some hints about how to debug it? Please note: the rubi module depends on olsr which starts up successfully beforehand. <br>
<br><br>[ 2009/07/03 18:03:28  ERROR xorp_rtrmgr:30310 RTRMGR +691 master_conf_tree.cc commit_pass2_done ] Commit failed: Can&#39;t validate config ready of process rubi<br>[ 2009/07/03 18:03:28  ERROR xorp_rtrmgr:30310 RTRMGR +261 master_conf_tree.cc config_done ] Configuration failed: Can&#39;t validate config ready of process rubi<br>
<br>I have included the config, template, tgt and xif files below.<br><br>Thanks<br><br><br><br>Rae<br>====<br><br>config file:<br><br>BEGIN ----&gt;<br><br>interfaces {<br>    interface eth1 { <br>    description: &quot;xorp data interface&quot;<br>
    disable:    false<br>    default-system-config<br>    }<br>}<br><br>fea {<br>    unicast-forwarding4 {<br>    disable: false<br>    }<br>}<br><br>protocols {<br>    rubi {<br>         advertisement_interval: 120 <br>         resource_timeout:     1800 <br>
         max_resources:         50<br>         forwarder:         10.10.1.1<br>    }<br><br>    olsr4  {<br>        main-address:         192.168.1.100 <br><br>        interface eth1 {<br>            vif eth1 { <br>            address 192.168.1.100 { <br>
            }<br>            }<br>        }<br><br>            traceoptions {<br>            flag all {<br>            disable: false<br>            }        <br>        }<br><br>    }<br>}<br><br>END 
----&gt;<br><br><br>Here is the template file:<br>BEGIN ----&gt;<br>
<br>protocols {<br>    rubi {<br>        targetname:            txt = &quot;rubi&quot;;<br>        advertisement_interval:        u32 = 120; /* two minutes */<br>        resource_timeout:         u32 = 1800; /* half an hour */<br>
        max_resources:            u32 = 50;<br>        my_resources:            txt;<br>        forwarder:            ipv4;<br>        proactive_routing:        bool = true;<br>        reactive_routing:        bool = true;<br>
<br>        /* Not yet ....<br>        dns_entry {<br>            name:        txt;<br>            ip_address:    ipv4;<br>        }<br>        */<br>    <br>        <br>    }<br>}<br><br>protocols {<br>    rubi {<br>            %help:        short    &quot;Distribute service information&quot;;<br>
        %modinfo:    provides     rubi;<br>        %modinfo:    depends        olsr4;<br>        %modinfo:    path &quot;contrib/rubi/xorp_rubi&quot;;<br>        %modinfo:    default_targetname &quot;rubi&quot;;<br>        %modinfo:    status_method    xrl &quot;$(rubi.targetname)/common/0.1/get_status-&gt;status:u32&amp;reason:txt&quot;;<br>
        %modinfo:    shutdown_method    xrl &quot;$(rubi.targetname)/common/0.1/shutdown&quot;;<br><br>        %mandatory:    $(@.targetname);<br><br>        targetname {<br>                %user-hidden: &quot;XRL target name&quot;;<br>
                %help:    short &quot;XRL target name&quot;;<br>                %set:;<br>        }<br><br>        resource_timeout {<br>            %help: short &quot;A resource is valid for this period.&quot;;<br>            %help: long &quot;A resource is valid for this period, the resource will expire after this if it is not refreshed.&quot;;<br>
            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_resource_timeout?resource_timeout:u32=$(@)&quot;;<br>            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_resource_timeout-&gt;resource_timeout:u32&quot;;<br>
        }<br>        <br><br>        max_resources {<br>            %help: short &quot;The maximum number of resource entries about which this node will maintain information.&quot;;<br>            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_max_resources?max_resources:u32=$(@)&quot;;<br>
            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_max_resources-&gt;max_resources:u32&quot;;<br>        }<br>        <br>        my_resources {<br>            %help: short &quot;The URL for a resource belonging to this node.&quot;;<br>
            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_my_resource?my_resource:txt=$(@)&quot;;<br>            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_my_resources?resource_url:txt-&gt;my_resources:list&quot;;<br>
            %delete: xrl &quot;$(rubi.targetname)/rubi/0.1/delete_my_resource?my_resource:txt=$(@)&quot;;<br>            %list: xrl &quot;$(rubi.targetname)/rubi/0.1/list_my_resources-&gt;resources:list&quot;;<br>        }<br>
        <br>        /* Not yet ... <br>        domain_name {<br>            %help: short &quot;A domain name and ip address tuple.&quot;;<br>            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_dns_entry?dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)&quot;;<br>
            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_dns_entry-&gt;dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)&quot;;<br>            %delete: xrl &quot;$(rubi.targetname)/rubi/0.1/delete_dns_entry-&gt;dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)&quot;;<br>
            %list: xrl &quot;$(rubi.targetname)/rubi/0.1/list_domain_names-&gt;domain_names:list&quot;;<br>        }<br>        */<br>        <br>        <br>        forwarder {<br>            %help: short &quot;The IP address for a node willing to act as a forwarder.&quot;;<br>
            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_forwarder?ip_address:ipv4=$(@)&quot;;<br>            %delete: xrl &quot;$(rubi.targetname)/rubi/0.1/delete_forwarder?in_ip_address:ipv4=$(@)&quot;;<br>            %list: xrl &quot;$(rubi.targetname)/rubi/0.1/list_forwarders-&gt;forwarders:list&quot;;<br>
        }<br><br><br>        advertisement_interval {<br>            %help: short &quot;Resource information is advertised at this interval&quot;;<br>            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_advertisement_interval?interval:u32=$(@)&quot;;<br>
            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_advertisement_interval-&gt;interval:u32&quot;;<br>        }<br><br>        proactive_routing {<br>            %help: short &quot;Flag indicating whether or not the node is operating in proactive mode&quot;;<br>
            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_proactive_routing_mode?enabled:bool=$(@)&quot;;<br>            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_proactive_routing_mode-&gt;enabled:bool&quot;;<br>
        }<br><br>        reactive_routing {<br>            %help: short &quot;Flag indicating whether or not the node is operating in reactive mode&quot;;<br>            %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_reactive_routing_mode?enabled:bool=$(@)&quot;;<br>
            %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_reactive_routing_mode-&gt;enabled:bool&quot;;<br>        }<br><br>                /* main_addr {<br>                        %help: short &quot;The main IP address for the node.&quot;;<br>
                        %set: xrl &quot;$(rubi.targetname)/rubi/0.1/set_main_address?ip_address:ipv4=$(@)&quot;;<br>                        %get: xrl &quot;$(rubi.targetname)/rubi/0.1/get_main_address-&gt;ip_address:ipv4&quot;;<br>
                }*/<br><br><br><br>    }<br>}<br>END 
----&gt;<br><br>And here is the xif file:<br>
<br>BEGIN ----&gt;<br>/*<br>** RUBI v1 -- protocol XRL interface.<br>*/<br><br>interface rubi/0.1 {<br><br><br>    /*<br>     * Protocol variables.<br>     */<br><br>    /**<br>     * Set the max number of resource entries.<br>
     *<br>     * @param max_resources the maximum number of resources that the node can<br>     *                        hold information about.<br>     */<br>    set_max_resources ? max_resources:u32<br><br><br>    /**<br>
     * Get the max number of resources entries.<br>     *<br>     * @param max_resources the maximum number of resources that the node can<br>     *                        hold information about.<br>     */<br>    get_max_resources -&gt; max_resources:u32<br>
<br><br><br><br><br><br><br>    /*<br>     * RUBI process commands.<br>     */<br><br>    /**<br>     * Clear service directory database.<br>     */<br>    clear_database<br><br><br><br><br><br><br>    /*<br>     * RUBI Global protocol timers.<br>
     */<br><br>    /**<br>     * Set the SERVICE_TIMEOUT.<br>     *<br>     * @param interval the new SERVICE_TIMEOUT.<br>     */<br>    set_resource_timeout ? resource_timeout:u32<br><br>    /**<br>     * Get the SERVICE_TIMEOUT.<br>
     */<br>    get_resource_timeout -&gt; resource_timeout:u32<br><br><br>    /**<br>     * Set the ADVERTISEMENT_INTERVAL.<br>     *<br>     * @param interval the new ADVERTISEMENT_INTERVAL.<br>     */<br>    set_advertisement_interval ? interval:u32<br>
<br>    /**<br>     * Get the ADVERTISEMENT_INTERVAL.<br>     */<br>    get_advertisement_interval -&gt; interval:u32<br><br><br><br><br><br><br>    /*<br>     * RUBI resources database state.<br>     */<br><br>    /**<br>
     * Get the list of resources owned and advertised by a node (my resources).<br>     *<br>     * Return a list of text values. Each value is a service URL that<br>     * can be advertised by the node.<br>     */<br>    list_my_resources -&gt; resources:list<br>
<br><br>    /**<br>     * Add a resource to the list of my resources that can be<br>     * advertised.<br>     *<br>     */<br>    set_my_resource ? my_resource:txt        <br>    <br>    /**<br>     * Find resources which match those in the list of my resources<br>
     *<br>     */<br>    get_my_resources ? resource_url:txt \<br>                    -&gt; my_resources:list    <br>    <br>    /**<br>     * Clear the list of my resources<br>     *<br>     **/<br>    clear_my_resources<br>
<br><br>    /**<br>     * Delete a resource to the list of my resources<br>     *<br>     */<br>    delete_my_resource ? my_resource:txt        <br> <br> <br>   /**<br>     *  Add a DNS entry<br>     */<br>     set_dns_entry     ? name:txt    \<br>
                     &amp; ip_address:ipv4    <br><br>   /**<br>     *  Get a DNS entry<br>     */<br>     get_dns_entry     ? name:txt    \<br>                     -&gt; ip_address:ipv4    <br><br>   /**<br>     *  Delete a DNS entry<br>
     */<br>     delete_dns_entry ? name:txt<br>     <br>    /**<br>     *  Get the list of dns entries owned and advertised by a node (my services).<br>     *  Return a list of text values. Each value is a resource URL that can be<br>
     *  advertised by the node.<br>     */<br>    list_dns_entries -&gt; dns_entries:list<br><br><br><br><br>    /**<br>     *  Add a forwarder<br>     */<br>    set_forwarder ? ip_address:ipv4<br><br>    /**<br>     *  Get forwarder<br>
     */<br>    get_forwarder ? in_ip_address:ipv4     \<br>                  -&gt; forwarder_ip_address:ipv4<br><br>    /**<br>     *  Delete forwarder<br>     */<br>    delete_forwarder ? in_ip_address:ipv4 <br>    <br>    /**<br>
     *  List forwarders<br>     */<br>    list_forwarders -&gt; forwarders:list<br><br><br>    /**<br>     * Add a resource to the list of learned resources.<br>     */<br>    set_learned_resource ? ip_address:ipv4        \<br>
               &amp; resource_url:txt        <br><br>    /**<br>     * Get the list of services which match a particular service name.<br>     *<br>     * Return a list of text values. Each value is a service URL. <br>     */<br>
    get_learned_resources ? resource_url:txt        \<br>    -&gt;                                            \<br>    resources:list<br><br>    /**<br>     * Get the list of learned resources<br>     *<br>     * Return a list of text values. Each value is a resource URL. <br>
     */<br>    list_learned_resources -&gt; resources:list<br><br><br>    /**<br>     * Delete a resource from the list of learned resources.<br>     */<br>    delete_learned_resource ? ip_address:ipv4    \<br>                  &amp; resource_url:txt        <br>
<br>    /**<br>     * Clear the list of learned resources.<br>     */<br>    clear_learned_resources<br><br>    /**<br>     * Set the routing mode which this node will use. <br>     * For the timebeing, a node may use either proactive or reactive<br>
     * routing or both. <br>     */<br>    set_proactive_routing_mode ? enabled:bool<br><br>    get_proactive_routing_mode -&gt; enabled:bool<br><br>    set_reactive_routing_mode ? enabled:bool<br><br>    get_reactive_routing_mode -&gt; enabled:bool<br>
<br><br>    /**<br>     * Receive an external message from a xorp module and parse it.<br>     *<br>     * @param external_message  the message that must be parsed<br>     *<br>     */<br>    process_message ? message_body:binary<br>
<br>    <br>    /**<br>     * Set/get the main address for the Rubi node. This is used in messages to represent the source.<br>     */<br>    set_main_address ? ip_address:ipv4<br><br>    get_main_address -&gt; ip_address:ipv4<br>
<br>}<br><br><br>END 
----&gt;<br><br>rubi.tgt<br>BEGIN 
----&gt;<br><br>#include &quot;../interfaces/common.xif&quot;<br>#include &quot;../interfaces/rubi.xif&quot;<br><br>target rubi implements  common/0.1,                             \<br>                        rubi/0.1<br>


<br>
END 
----&gt;<br>

<br clear="all"><br><br>