These ASL scripts, as shipped with Network Protocol Manager, are shown in Figure 7 on page 46 and Figure 9 on page 47. You use the sm_edit utility to edit these scripts to add the ASL convenience patterns, the parsing rules, and the processing rules that perform the actual processing. You can also add additional initialization code and/or additional EOF or DEFAULT code.

/*
.
.
.
 * RCS $Id: custom-end-system.asl,v 1.6.1 2007/02/22 20:14:44 bail Exp $
 *
 * This asl file is used at the end of probing of each device.
 */
default AgentName  = "";
default debug = FALSE;
default detailDebug = FALSE;
default objectName = "";
default elementName = "";
default elementType = "";
default changed = "FALSE";
default result = "FAIL";
default discoveryError = "";
agentObj = object(elementName);
objectName = elementName;
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 = FALSE;
me = this->ReadsRulesFrom->fileName.": ";
blanks = "    ";
/*
 * Add additional initialization here.
 */ 
/*
 * Add convenience patterns here.
 */
/*****************************************************************************/
START {
    /*
     * Add Parsing rules here.
     */
    .. eol
} do {
    /*
     * Add processing rules here.
     */
    if (DEBUG) {
        print("Executing rule set ".me);
    }
    changed = "TRUE"; 
    result = "SUCCESS"; 
    objectName = elementName;
}
/*
 * Addition EOF or DEFAULT here if necessary.
 */
/**********************************************************/
/*
 * Local Variables:
 * mode: C++
 * End:
 */
/*
.
.
.
 * RCS $Id: custom-end-post.asl,v 1.3 2005/05/27 18:43:37 sv1 Exp $
 *
 * This asl file is used at the end of discovery post processing.
 */
factory = object(getInstances("ICIM_ObjectFactory")[0]);
topo_manager = object(getInstances("ICF_TopologyManager")[0]);
default DEBUG = FALSE;
me = this->ReadsRulesFrom->fileName.": ";
blanks = "    ";
/*
 * Add additional initialization here.
 */ 
/*
 * Add convenience patterns here.
 */
/*****************************************************************************/
START {
    .. eol
} do {
    /*
     * Add processing rules here.
     */
    if (DEBUG) {
        print("Executing rule set ".me);
    }
}
/*
 * Addition EOF or DEFAULT here if necessary.
 */
/**********************************************************/
/*
 * Local Variables:
 * mode: C++
 * End:
 */