If there is no status and no startup method in a xorp target, the router-mgr uses a 2-second sleep for 'verification'. This slows down startup of Xorp quite a bit when you have lots
of protocols running.

This patch adds startup methods to many of the common targets. There are still more to
go, however.

Thanks,
Ben

--
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com


diff --git a/etc/templates/fea.tp b/etc/templates/fea.tp
index f42e490..ff306c4 100644
--- a/etc/templates/fea.tp
+++ b/etc/templates/fea.tp
@@ -57,7 +57,8 @@ fea {
     %modinfo:	depends		firewall;
     %modinfo:	path		"fea/xorp_fea";
     %modinfo:	default_targetname "fea";
-
+    %modinfo:   status_method   xrl "$(fea.targetname)/common/0.1/get_status->status:u32&reason:txt";
+    %modinfo:	startup_method	xrl "$(fea.targetname)/fea_firewall/0.1/startup_firewall";
     %mandatory:	$(@.targetname);
 
     targetname {
diff --git a/etc/templates/fib2mrib.tp b/etc/templates/fib2mrib.tp
index 8f1210d..bbae041 100644
--- a/etc/templates/fib2mrib.tp
+++ b/etc/templates/fib2mrib.tp
@@ -16,6 +16,7 @@ protocols {
 	%modinfo:	path		"fib2mrib/xorp_fib2mrib";
 	%modinfo:	default_targetname "fib2mrib";
 	%modinfo:	status_method	xrl "$(fib2mrib.targetname)/common/0.1/get_status->status:u32&reason:txt";
+	%modinfo:	startup_method	xrl "$(fib2mrib.targetname)/fib2mrib/0.1/start_fib2mrib";
 	%modinfo:	shutdown_method	xrl "$(fib2mrib.targetname)/common/0.1/shutdown";
 
 	%mandatory:	$(@.targetname);
diff --git a/etc/templates/firewall.tp b/etc/templates/firewall.tp
index 323b49b..202625c 100644
--- a/etc/templates/firewall.tp
+++ b/etc/templates/firewall.tp
@@ -50,6 +50,8 @@ firewall {
     %modinfo:	default_targetname "fea";
     %modinfo:	start_commit	xrl "$(interfaces.targetname)/fea_firewall/0.1/start_transaction->tid:u32=$(firewall.TID)";
     %modinfo:	end_commit	xrl "$(interfaces.targetname)/fea_firewall/0.1/commit_transaction?tid:u32=$(firewall.TID)";
+    %modinfo:   status_method   xrl "$(interfaces.targetname)/common/0.1/get_status->status:u32&reason:txt";
+    %modinfo:	startup_method	xrl "$(interfaces.targetname)/fea_firewall/0.1/startup_firewall";
 
     %mandatory:	$(@.targetname);
 
diff --git a/etc/templates/interfaces.tp b/etc/templates/interfaces.tp
index c0d23a6..3013e7a 100644
--- a/etc/templates/interfaces.tp
+++ b/etc/templates/interfaces.tp
@@ -53,6 +53,7 @@ interfaces {
     %modinfo:	default_targetname "fea";
     %modinfo:	status_method	xrl "$(interfaces.targetname)/common/0.1/get_status->status:u32&reason:txt";
     %modinfo:	shutdown_method xrl "$(interfaces.targetname)/common/0.1/shutdown";
+    %modinfo:	startup_method	xrl "$(interfaces.targetname)/ifmgr/0.1/startup_ifmgr";
     %modinfo:	start_commit	xrl "$(interfaces.targetname)/ifmgr/0.1/start_transaction->tid:u32=$(interfaces.TID)";
     %modinfo:	end_commit	xrl "$(interfaces.targetname)/ifmgr/0.1/commit_transaction?tid:u32=$(interfaces.TID)";
 
diff --git a/etc/templates/policy.tp b/etc/templates/policy.tp
index 6337d4b..1bbde20 100644
--- a/etc/templates/policy.tp
+++ b/etc/templates/policy.tp
@@ -69,6 +69,7 @@ policy {
     %modinfo:   path "policy/xorp_policy";
     %modinfo:   default_targetname "policy";
     %modinfo:   status_method xrl "$(policy.targetname)/common/0.1/get_status->status:u32&reason:txt";
+    %modinfo:	startup_method	xrl "$(policy.targetname)/policy/0.1/start_policy";
     %modinfo:   shutdown_method xrl "$(policy.targetname)/common/0.1/shutdown";
     %modinfo:   end_commit xrl "$(policy.targetname)/policy/0.1/done_global_policy_conf";
     %mandatory: $(@.targetname);
diff --git a/etc/templates/rib.tp b/etc/templates/rib.tp
index 4883235..0fa4d4e 100644
--- a/etc/templates/rib.tp
+++ b/etc/templates/rib.tp
@@ -17,6 +17,7 @@ plumbing {
 	%modinfo:	depends		fea;
 	%modinfo:	path		"rib/xorp_rib";
 	%modinfo:	default_targetname "rib";
+	%modinfo:	startup_method	xrl "$(rib.targetname)/rib/0.1/start_rib";
 	%modinfo:	status_method	xrl "$(rib.targetname)/common/0.1/get_status->status:u32&reason:txt";
 	%modinfo:	shutdown_method xrl "$(rib.targetname)/common/0.1/shutdown";
 
diff --git a/fea/xrl_fea_target.cc b/fea/xrl_fea_target.cc
index b4ef7f8..02d9f5b 100644
--- a/fea/xrl_fea_target.cc
+++ b/fea/xrl_fea_target.cc
@@ -2701,6 +2701,16 @@ XrlFeaTarget::ifmgr_0_1_set_endpoint6(
 }
 
 XrlCmdError
+XrlFeaTarget::ifmgr_0_1_startup_ifmgr() {
+    return XrlCmdError::OKAY();
+}
+
+XrlCmdError
+XrlFeaTarget::fea_firewall_0_1_startup_firewall() {
+    return XrlCmdError::OKAY();
+}
+
+XrlCmdError
 XrlFeaTarget::ifmgr_replicator_0_1_register_ifmgr_mirror(
     // Input values,
     const string&	clientname)
diff --git a/fea/xrl_fea_target.hh b/fea/xrl_fea_target.hh
index dbd0958..cdf0e27 100644
--- a/fea/xrl_fea_target.hh
+++ b/fea/xrl_fea_target.hh
@@ -124,6 +124,14 @@ public:
      */
     XrlCmdError common_0_1_shutdown();
 
+
+    /** Does nothing, but allows us to have rtrmgr verify startup. */
+    virtual XrlCmdError ifmgr_0_1_startup_ifmgr();
+
+    /** Does nothing, but allows us to have rtrmgr verify startup. */
+    virtual XrlCmdError fea_firewall_0_1_startup_firewall();
+
+
     /**
      *  Announce target birth to observer.
      *
diff --git a/policy/xrl_target.hh b/policy/xrl_target.hh
index 6b3a8c2..e512f5c 100644
--- a/policy/xrl_target.hh
+++ b/policy/xrl_target.hh
@@ -55,6 +55,10 @@ public:
 
     XrlCmdError common_0_1_shutdown();
 
+    virtual XrlCmdError policy_0_1_start_policy() {
+	return XrlCmdError::OKAY();
+    }
+
     XrlCmdError policy_0_1_create_term(
         // Input values,
         const string&   policy,
diff --git a/xrl/interfaces/fea_firewall.xif b/xrl/interfaces/fea_firewall.xif
index 637e336..47e0bd6 100644
--- a/xrl/interfaces/fea_firewall.xif
+++ b/xrl/interfaces/fea_firewall.xif
@@ -319,4 +319,6 @@ interface fea_firewall/0.1 {
 				& dst_port_end:u32			\
 				& action:txt				\
 				& more:bool
+	/* Does nothing, but allows us to 'verify' startup in rtr-mgr*/
+	startup_firewall
 }
diff --git a/xrl/interfaces/fea_ifmgr.xif b/xrl/interfaces/fea_ifmgr.xif
index 3386d18..d51a542 100644
--- a/xrl/interfaces/fea_ifmgr.xif
+++ b/xrl/interfaces/fea_ifmgr.xif
@@ -212,4 +212,7 @@ interface ifmgr/0.1 {
 				& vif:txt				\
 				& address:ipv6				\
 				& endpoint:ipv6
+
+	/* Does nothing, but allows us to 'verify' startup in rtr-mgr*/
+	startup_ifmgr
 }
diff --git a/xrl/interfaces/policy.xif b/xrl/interfaces/policy.xif
index abfad5b..16bdfd4 100644
--- a/xrl/interfaces/policy.xif
+++ b/xrl/interfaces/policy.xif
@@ -136,4 +136,7 @@ interface policy/0.1 {
 	 * @param target XRL target for the protocol.
 	 */
 	set_proto_target ? protocol:txt & target:txt
+
+	/* Does nothing. */
+	start_policy
 }
_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers

Reply via email to