There should one node per CLI instance. There should be one CLI instance per router.
| CliNode (int init_family, xorp_module_id init_module_id,
	    EventLoop& init_eventloop) | CliNode | 
Constructor for a given address family, module ID, and event loop.
Parameters:
| init_family | the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively). Note that this argument may disappear in the future, and a single Cli node would provide access for both IPv4 and IPv6. | 
| init_module_id | the module ID (xorp_module_id). Should be equal to XORP_MODULE_CLI. | 
| init_eventloop | the event loop to use. | 
| ~CliNode () | ~CliNode | 
[virtual]
| int		 start () | start | 
Start the node operation.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int		 stop () | stop | 
Stop the node operation.
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void	 enable () | enable | 
Enable node operation.
If an unit is not enabled, it cannot be start, or pending-start.
| void	 disable () | disable | 
Disable node operation.
If an unit is disabled, it cannot be start or pending-start. If the unit was runnning, it will be stop first.
| void	 set_cli_port (unsigned short v) | set_cli_port | 
Set the CLI access port.
The access port is the TCP port the CLI node listens to for network access (e.g., telnet xorp_host <port_number>).
Parameters:
| v | the access port number (in host order). | 
| void	 add_enable_cli_access_from_subnet (const IPvXNet& subnet_addr) | add_enable_cli_access_from_subnet | 
Add a subnet address to the list of subnet addresses enabled for CLI access.
This method can be called more than once to add a number of subnet addresses.
Parameters:
| subnet_addr | the subnet address to add. | 
| int		 delete_enable_cli_access_from_subnet (const IPvXNet& subnet_addr) | delete_enable_cli_access_from_subnet | 
Delete a subnet address from the list of subnet addresses enabled for CLI access.
Parameters:
| subnet_addr | the subnet address to delete. | 
Returns: XORP_OK on success, otherwise XORP_ERROR (e.g., if the subnet address was not added before).
| void	 add_disable_cli_access_from_subnet (const IPvXNet& subnet_addr) | add_disable_cli_access_from_subnet | 
Add a subnet address to the list of subnet addresses disabled for CLI access.
This method can be called more than once to add a number of subnet addresses.
Parameters:
| subnet_addr | the subnet address to add. | 
| int		 delete_disable_cli_access_from_subnet (const IPvXNet& subnet_addr) | delete_disable_cli_access_from_subnet | 
Delete a subnet address from the list of subnet addresses disabled for CLI access.
Parameters:
| subnet_addr | the subnet address to delete. | 
Returns: XORP_OK on success, otherwise XORP_ERROR (e.g., if the subnet address was not added before).
| CliCommand	* cli_command_root () | cli_command_root | 
Get the CliCommand entry for the CLI root command.
Returns: a pointer to the CliCommand entry for the CLI root command.
| int	 xlog_output (void *obj, xlog_level_t level, const char *msg) | xlog_output | 
[static]
Output a log message to a CliClient object.
Parameters:
| obj | the CliClient object to apply this method to. | 
| level | the XLOG level. | 
| msg | a C-style string with the message to output. | 
Returns: on success, the number of characters printed, otherwise %XORP_ERROR.
| CliClient	* find_cli_by_term_name (const string& term_name) | find_cli_by_term_name | 
[const]
Find a CLI client CliClient for a given terminal name.
Parameters:
| term_name | the CLI terminal name to search for. | 
Returns: the CLI client CliClient with name of term_name on success, otherwise NULL.
| CliClient	* find_cli_by_session_id (uint32_t session_id) | find_cli_by_session_id | 
[const]
Find a CLI client CliClient for a given session ID.
Parameters:
| session_id | the CLI session ID to search for. | 
Returns: the CLI client CliClient with session ID of session_id on success, otherwise NULL.
| list<CliClient *>&  client_list () | client_list | 
Get the list of CLI clients (see CliClient).
Returns: a reference to the list of pointers to CLI clients (see CliClient).
| int  add_cli_command (
	const string&	processor_name,
	const string&	command_name,
	const string&	command_help,
	const bool&	is_command_cd,
	const string&	command_cd_prompt,
	const bool&	is_command_processor,
	string&		error_msg) | add_cli_command | 
Add a CLI command to the CLI manager.
Parameters:
| processor_name | the name of the module that will process that command. | 
| command_name | the name of the command to add. | 
| command_help | the help for the command to add. | 
| is_command_cd | if true, this is a command that allows "change directory" inside the CLI command-tree. | 
| command_cd_prompt | if is_command_cd is true, the string that will replace the CLI prompt after we "cd" to that level of the CLI command-tree. | 
| is_command_processor | if true, this is a processing command that would be performed by @processor_name. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  delete_cli_command (
	const string&	processor_name,
	const string&	command_name,
	string&		error_msg) | delete_cli_command | 
Delete a CLI command from the CLI manager.
Parameters:
| processor_name | the name of the module that is processing that command. | 
| command_name | the name of the command to delete. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void  recv_process_command_output (const string *processor_name,
				     const string *cli_term_name,
				     const uint32_t *cli_session_id,
				     const string *command_output) | recv_process_command_output | 
Process the response of a command processed by a remote node.
Parameters:
| processor_name | the name of the module that has processed that command. | 
| cli_term_name | the terminal name the command was entered from. | 
| cli_session_id | the CLI session ID the command was entered from. | 
| command_output | the command output to process. | 
| int  proto_recv (const string&	, 
		   const string&	, 
		   const IPvX&		, 
		   const IPvX&		, 
		   uint8_t		, 
		   int32_t		, 
		   int32_t		, 
		   bool			, 
		   bool			, 
		   const vector<uint8_t>& , 
		   string&		  
	) | proto_recv | 
UNUSED
Reimplemented from ProtoNode.
| int	 proto_send (const string&	, 
		   const string&	, 
		   const IPvX&		, 
		   const IPvX&		, 
		   uint8_t		, 
		   int32_t		, 
		   int32_t		, 
		   bool			, 
		   bool			, 
		   const uint8_t*	, 
		   size_t		, 
		   string&		  
	) | proto_send | 
UNUSED
Reimplemented from ProtoNode.
| int	 signal_message_recv (const string&	, 
			    int			, 
			    uint32_t		, 
			    const IPvX&		, 
			    const IPvX&		, 
			    const uint8_t *	, 
			    size_t		  
	) | signal_message_recv | 
UNUSED
Reimplemented from ProtoNode.
| int	 signal_message_send (const string&	, 
			    int			, 
			    uint32_t		, 
			    const IPvX&		, 
			    const IPvX&		, 
			    const uint8_t *	, 
			    size_t		  
	) | signal_message_send | 
UNUSED
Reimplemented from ProtoNode.
| typedef XorpCallback6<void, const string&, const string&, const string&, uint32_t, const vector<string>&, const vector<string>& >::RefPtr SenderProcessCallback | SenderProcessCallback | 
| void  set_send_process_command_callback (const SenderProcessCallback& v) | set_send_process_command_callback | 
Set a callback to send a CLI command to a processing module.
Parameters:
| v | the SenderProcessCallback callback to set. | 
| CliClient * add_client (XorpFd input_fd, XorpFd output_fd, bool is_network,
			  const string& startup_cli_prompt, string& error_msg) | add_client | 
Add a CLI client (CliClient) to the CLI with enabled access from a file descriptor.
Parameters:
| input_fd | the file descriptor for the CLI client to read data from. | 
| output_fd | the file descriptor for the CLI client to write data to. | 
| is_network | if true, this client is associated with a network connection. | 
| startup_cli_prompt | the startup CLI prompt. | 
| error_msg | the error message (if error). | 
Returns: a pointer to the CLI client (CliClient) with enabled CLI access on success, otherwise NULL.
| int  remove_client (CliClient *cli_client, string& error_msg) | remove_client | 
Remove a CLI client (CliClient) from the CLI.
Note that the CLI client object itself is not deleted.
Parameters:
| cli_client | the CLI client (CliClient) to remove. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| typedef XorpCallback1<void, CliClient* >::RefPtr CliClientDeleteCallback | CliClientDeleteCallback | 
| void  set_cli_client_delete_callback (const CliClientDeleteCallback& v) | set_cli_client_delete_callback | 
Set the callback method that is invoked whenever a CliClient is deleted
Parameters:
| v | the CliClientDeleteCallback callback to set. | 
| bool	 is_log_trace () | is_log_trace | 
[const]
Test if trace log is enabled.
This method is used to test whether to output trace log debug messges.
Returns: true if trace log is enabled, otherwise false.
| void	 set_log_trace (bool is_enabled) | set_log_trace | 
Enable/disable trace log.
This method is used to enable/disable trace log debug messages output.
Parameters:
| is_enabled | if true, trace log is enabled, otherwise is disabled. |