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'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'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 ----><br><br>interfaces {<br> interface eth1 { <br> description: "xorp data interface"<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
----><br><br><br>Here is the template file:<br>BEGIN ----><br>
<br>protocols {<br> rubi {<br> targetname: txt = "rubi";<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 "Distribute service information";<br>
%modinfo: provides rubi;<br> %modinfo: depends olsr4;<br> %modinfo: path "contrib/rubi/xorp_rubi";<br> %modinfo: default_targetname "rubi";<br> %modinfo: status_method xrl "$(rubi.targetname)/common/0.1/get_status->status:u32&reason:txt";<br>
%modinfo: shutdown_method xrl "$(rubi.targetname)/common/0.1/shutdown";<br><br> %mandatory: $(@.targetname);<br><br> targetname {<br> %user-hidden: "XRL target name";<br>
%help: short "XRL target name";<br> %set:;<br> }<br><br> resource_timeout {<br> %help: short "A resource is valid for this period.";<br> %help: long "A resource is valid for this period, the resource will expire after this if it is not refreshed.";<br>
%set: xrl "$(rubi.targetname)/rubi/0.1/set_resource_timeout?resource_timeout:u32=$(@)";<br> %get: xrl "$(rubi.targetname)/rubi/0.1/get_resource_timeout->resource_timeout:u32";<br>
}<br> <br><br> max_resources {<br> %help: short "The maximum number of resource entries about which this node will maintain information.";<br> %set: xrl "$(rubi.targetname)/rubi/0.1/set_max_resources?max_resources:u32=$(@)";<br>
%get: xrl "$(rubi.targetname)/rubi/0.1/get_max_resources->max_resources:u32";<br> }<br> <br> my_resources {<br> %help: short "The URL for a resource belonging to this node.";<br>
%set: xrl "$(rubi.targetname)/rubi/0.1/set_my_resource?my_resource:txt=$(@)";<br> %get: xrl "$(rubi.targetname)/rubi/0.1/get_my_resources?resource_url:txt->my_resources:list";<br>
%delete: xrl "$(rubi.targetname)/rubi/0.1/delete_my_resource?my_resource:txt=$(@)";<br> %list: xrl "$(rubi.targetname)/rubi/0.1/list_my_resources->resources:list";<br> }<br>
<br> /* Not yet ... <br> domain_name {<br> %help: short "A domain name and ip address tuple.";<br> %set: xrl "$(rubi.targetname)/rubi/0.1/set_dns_entry?dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)";<br>
%get: xrl "$(rubi.targetname)/rubi/0.1/get_dns_entry->dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)";<br> %delete: xrl "$(rubi.targetname)/rubi/0.1/delete_dns_entry->dns_entry?name:txt=$(@)?ip_address:ipv4=$(@)";<br>
%list: xrl "$(rubi.targetname)/rubi/0.1/list_domain_names->domain_names:list";<br> }<br> */<br> <br> <br> forwarder {<br> %help: short "The IP address for a node willing to act as a forwarder.";<br>
%set: xrl "$(rubi.targetname)/rubi/0.1/set_forwarder?ip_address:ipv4=$(@)";<br> %delete: xrl "$(rubi.targetname)/rubi/0.1/delete_forwarder?in_ip_address:ipv4=$(@)";<br> %list: xrl "$(rubi.targetname)/rubi/0.1/list_forwarders->forwarders:list";<br>
}<br><br><br> advertisement_interval {<br> %help: short "Resource information is advertised at this interval";<br> %set: xrl "$(rubi.targetname)/rubi/0.1/set_advertisement_interval?interval:u32=$(@)";<br>
%get: xrl "$(rubi.targetname)/rubi/0.1/get_advertisement_interval->interval:u32";<br> }<br><br> proactive_routing {<br> %help: short "Flag indicating whether or not the node is operating in proactive mode";<br>
%set: xrl "$(rubi.targetname)/rubi/0.1/set_proactive_routing_mode?enabled:bool=$(@)";<br> %get: xrl "$(rubi.targetname)/rubi/0.1/get_proactive_routing_mode->enabled:bool";<br>
}<br><br> reactive_routing {<br> %help: short "Flag indicating whether or not the node is operating in reactive mode";<br> %set: xrl "$(rubi.targetname)/rubi/0.1/set_reactive_routing_mode?enabled:bool=$(@)";<br>
%get: xrl "$(rubi.targetname)/rubi/0.1/get_reactive_routing_mode->enabled:bool";<br> }<br><br> /* main_addr {<br> %help: short "The main IP address for the node.";<br>
%set: xrl "$(rubi.targetname)/rubi/0.1/set_main_address?ip_address:ipv4=$(@)";<br> %get: xrl "$(rubi.targetname)/rubi/0.1/get_main_address->ip_address:ipv4";<br>
}*/<br><br><br><br> }<br>}<br>END
----><br><br>And here is the xif file:<br>
<br>BEGIN ----><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 -> 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 -> 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 -> 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 -> 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> -> 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>
& ip_address:ipv4 <br><br> /**<br> * Get a DNS entry<br> */<br> get_dns_entry ? name:txt \<br> -> 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 -> 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> -> 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 -> forwarders:list<br><br><br> /**<br> * Add a resource to the list of learned resources.<br> */<br> set_learned_resource ? ip_address:ipv4 \<br>
& 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> -> \<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 -> resources:list<br><br><br> /**<br> * Delete a resource from the list of learned resources.<br> */<br> delete_learned_resource ? ip_address:ipv4 \<br> & 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 -> enabled:bool<br><br> set_reactive_routing_mode ? enabled:bool<br><br> get_reactive_routing_mode -> 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 -> ip_address:ipv4<br>
<br>}<br><br><br>END
----><br><br>rubi.tgt<br>BEGIN
----><br><br>#include "../interfaces/common.xif"<br>#include "../interfaces/rubi.xif"<br><br>target rubi implements common/0.1, \<br> rubi/0.1<br>
<br>
END
----><br>
<br clear="all"><br><br>