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