return_node.sp.v = list_find(list_header.s.r, direction.i4.v,
				     compare_func.f.v, compare_arg.g.v)

	This function searches a list for the first node that meets a
	criterion.  Each node is passed to a function.  When the function
	returns TRUE, the pointer to the node is returned to the caller.

	list_header	(list_link_t *) pointer to the list header
	direction	direction of the search
			(LIST_DIR_FORWARD -> search starts at the head
					     of the list,
			 LIST_DIR_REVERSE -> search starts at the tail of
					     the list and the search continues
					     towards the head)
	compare_func	(int (*)(list_link_t *, void *)) Pointer to function
			that checks the node.  The function should return
			TRUE if the node meets the criteria and FALSE if it
			doesn't.  The second argument also gets passed to the
			compare function.  It's a programmer-definable argument
			and can be set to NULL if it is not used.
	compare_arg	(void *) A parameter that is passed to the compare
			function.  This argument can allow the compare function
			to alter its matching criteria.

	This function returns status values as follows:

	NULL			no nodes matched the search criteria
	otherwise		pointer to the node (list_link_t *) that
				first matched the criteria

	This function requires the following include files:

	cnsparam_h, cbslib_h

	Related functions:

	list_init, list_insert, LIST_INSERT_HEAD, LIST_INSERT_TAIL,
	list_delete, list_remove, list_for_each, LIST_IS_EMPTY, CAST_LLINK_TO

	C/C++ usage:

	int	direction = LIST_DIR_FORWARD;
	list_link_t	*return_node;
	list_link_t	list_header;
	int	compare_func(list_link_t *list_entry, void *compare_arg);
	void	*compare_arg = (void *) NULL;

	return_node = list_find(&list_header,direction,compare_func,