Two of the discovery hook scripts, custom-end-system.asl and custom-start-post.asl, as shipped with the IP Manager, are shown in Figure on page and Figure on page.

/*
.
.
.
 * RCS $Id: custom-end-system.asl,v 1.1 2003/03/06 17:39:37 ouc Exp $
 *
 * This asl file is used at the end of probing of each device.
 */
default AgentName  = "";
agentObj = object("SNMPAgent", AgentName);
if (agentObj->isNull()) {
    stop();
}
nodeObj = agentObj->getSystem();
if (nodeObj->isNull()) {
    stop();
}
factory = object(getInstances("ICIM_ObjectFactory")[0]);
topo_manager = object(getInstances("ICF_TopologyManager")[0]);
default DEBUG = topo_manager->DebugEnabled;
me = this->ReadsRulesFrom->fileName.": ";
blanks = "    ";
/*
 * Add additional initialization here.
 */ 
/*
 * Add convenience patterns here.
 */
/*****************************************************************************/
START {
    /*
     * Add Parsing rules here.
     */
    .. eol
} do {
    /*
     * Add processing rules here.
     */
    stop();
}
/*
 * Addition EOF or DEFAULT here if necessary.
 */
/**********************************************************/
/*
 * Local Variables:
 * mode: C++
 * End:
 */
/*
.
.
.
 * RCS $Id: custom-start-post.asl,v 1.1.464.1 2009/02/04 21:36:47 tdemay Exp $
 *
 * This asl file is used at beginning of discovery post processing.
 */
factory = object(getInstances("ICIM_ObjectFactory")[0]);
topo_manager = object(getInstances("ICF_TopologyManager")[0]);
default DEBUG = topo_manager->DebugEnabled;
me = this->ReadsRulesFrom->fileName.": ";
blanks = "    ";
/*
 * Add additional initialization here.
 */ 
/*
 * Add convenience patterns here.
 */
/*****************************************************************************/
START {
    /*
     * Add Parsing rules here.
     */
    .. eol
} do {
    start = STARTTIMER() ;
    /*
     * Add processing rules here.
     */
    FINISHTIMER(start) ;
    stop();
}
STARTTIMER() do {
    msg = "Starting: ".this->Name ;
    TIMER(msg) ;
    return time() ;
}
FINISHTIMER(start) do {
    msg = "Finished: ".this->Name." (Running time: ".time()-start." seconds)" ;
    TIMER(msg) ;
}
TIMER(msg) do {
    print(msg." at ".time());
    topo_manager->probeStatusMessage = msg;
}
/*
 * Addition EOF or DEFAULT here if necessary.
 */
/**********************************************************/
/*
 * Local Variables:
 * mode: C++
 * End:
 */