Source: ../../xrl/targets/fea_base.hh


 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top
/*
 * Copyright (c) 2001-2004 International Computer Science Institute
 * See LICENSE file for licensing, conditions, and warranties on use.
 *
 * DO NOT EDIT THIS FILE - IT IS PROGRAMMATICALLY GENERATED
 *
 * Generated by 'tgt-gen'.
 *
 * $XORP: xorp/xrl/targets/fea_base.hh,v 1.36 2004/06/10 22:42:10 hodson Exp $
 */


#ifndef __XRL_INTERFACES_FEA_BASE_HH__
#define __XRL_INTERFACES_FEA_BASE_HH__

#undef XORP_LIBRARY_NAME
#define XORP_LIBRARY_NAME "XrlFeaTarget"

#include "libxorp/xlog.h"
#include "libxipc/xrl_cmd_map.hh"

class XrlFeaTargetBase {
protected:
    XrlCmdMap* _cmds;

public:
    /**
     * Constructor.
     *
     * @param cmds an XrlCmdMap that the commands associated with the target
     *		   should be added to.  This is typically the XrlRouter
     *		   associated with the target.
     */
    XrlFeaTargetBase(XrlCmdMap* cmds = 0);

    /**
     * Destructor.
     *
     * Dissociates instance commands from command map.
     */
    virtual ~XrlFeaTargetBase();

    /**
     * Set command map.
     *
     * @param cmds pointer to command map to associate commands with.  This
     * argument is typically a pointer to the XrlRouter associated with the
     * target.
     *
     * @return true on success, false if cmds is null or a command map has
     * already been supplied.
     */
    bool set_command_map(XrlCmdMap* cmds);

    /**
     * Get Xrl instance name associated with command map.
     */
    inline const string& name() const { return _cmds->name(); }

    /**
     * Get version string of instance.
     */
    inline const char* version() const { return "fea/0.0"; }

protected:

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Get name of Xrl Target
     */
    virtual XrlCmdError common_0_1_get_target_name(
	// Output values,
	string&	name) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Get version string from Xrl Target
     */
    virtual XrlCmdError common_0_1_get_version(
	// Output values,
	string&	version) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Get status of Xrl Target
     */
    virtual XrlCmdError common_0_1_get_status(
	// Output values,
	uint32_t&	status,
	string&	reason) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Request clean shutdown of Xrl Target
     */
    virtual XrlCmdError common_0_1_shutdown() = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Add a FIB client.
     *
     *  @param target_name the target name of the FIB client to add.
     */
    virtual XrlCmdError fea_fib_0_1_add_fib_client4(
	// Input values,
	const string&	target_name) = 0;

    virtual XrlCmdError fea_fib_0_1_add_fib_client6(
	// Input values,
	const string&	target_name) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete a FIB client.
     *
     *  @param target_name the target name of the FIB client to delete.
     */
    virtual XrlCmdError fea_fib_0_1_delete_fib_client4(
	// Input values,
	const string&	target_name) = 0;

    virtual XrlCmdError fea_fib_0_1_delete_fib_client6(
	// Input values,
	const string&	target_name) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_interface_names(
	// Output values,
	XrlAtomList&	ifnames) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_names(
	// Input values,
	const string&	ifname,
	// Output values,
	XrlAtomList&	vifs) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_flags(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	bool&	enabled,
	bool&	broadcast,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_pif_index(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	uint32_t&	pif_index) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_addresses4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	XrlAtomList&	addresses) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_addresses6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	XrlAtomList&	addresses) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_address_flags4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	bool&	enabled,
	bool&	broadcast,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_address_flags6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	bool&	enabled,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_interface_enabled(
	// Input values,
	const string&	ifname,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_mac(
	// Input values,
	const string&	ifname,
	// Output values,
	Mac&	mac) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_mtu(
	// Input values,
	const string&	ifname,
	// Output values,
	uint32_t&	mtu) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_vif_enabled(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_prefix4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_broadcast4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	IPv4&	broadcast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_endpoint4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	IPv4&	endpoint) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_prefix6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_endpoint6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	IPv6&	endpoint) = 0;

    virtual XrlCmdError ifmgr_0_1_start_transaction(
	// Output values,
	uint32_t&	tid) = 0;

    virtual XrlCmdError ifmgr_0_1_commit_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    virtual XrlCmdError ifmgr_0_1_abort_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    virtual XrlCmdError ifmgr_0_1_create_interface(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname) = 0;

    virtual XrlCmdError ifmgr_0_1_delete_interface(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Implicitly configure an interface within the FEA by using information
     *  from the underlying system.
     *
     *  @param tid the transaction ID.
     *
     *  @param ifname the name of the interface to configure.
     */
    virtual XrlCmdError ifmgr_0_1_configure_interface_from_system(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname) = 0;

    virtual XrlCmdError ifmgr_0_1_set_interface_enabled(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_set_mac(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const Mac&	mac) = 0;

    virtual XrlCmdError ifmgr_0_1_set_mtu(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const uint32_t&	mtu) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Create a vif
     *
     *  @param ifname the name of the physical interface associated with the
     *  new vif.
     *
     *  @param vif name for new vif, must be unique across all the vifs in the
     *  system.
     */
    virtual XrlCmdError ifmgr_0_1_create_vif(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif) = 0;

    virtual XrlCmdError ifmgr_0_1_delete_vif(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif) = 0;

    virtual XrlCmdError ifmgr_0_1_set_vif_enabled(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_create_address4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address) = 0;

    virtual XrlCmdError ifmgr_0_1_delete_address4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address) = 0;

    virtual XrlCmdError ifmgr_0_1_set_address_enabled4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	const bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_address_enabled4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_set_prefix4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	const uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_set_broadcast4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	const IPv4&	broadcast) = 0;

    virtual XrlCmdError ifmgr_0_1_set_endpoint4(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	const IPv4&	endpoint) = 0;

    virtual XrlCmdError ifmgr_0_1_create_address6(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address) = 0;

    virtual XrlCmdError ifmgr_0_1_delete_address6(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address) = 0;

    virtual XrlCmdError ifmgr_0_1_set_address_enabled6(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	const bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_configured_address_enabled6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_set_prefix6(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	const uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_set_endpoint6(
	// Input values,
	const uint32_t&	tid,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	const IPv6&	endpoint) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Register network interface observer for configured interfaces.
     *
     *  @param clientname name of xrl entity supporting fea_ifmgr_client.xif
     *  methods.
     */
    virtual XrlCmdError ifmgr_0_1_register_client(
	// Input values,
	const string&	clientname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Unregister network interface observer for configured interfaces. This
     *  method is not strictly necessary, the fea will remove the interface
     *  observer from its list of known observers if interface update XRLs
     *  fail.
     */
    virtual XrlCmdError ifmgr_0_1_unregister_client(
	// Input values,
	const string&	clientname) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_interface_names(
	// Output values,
	XrlAtomList&	ifnames) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_names(
	// Input values,
	const string&	ifname,
	// Output values,
	XrlAtomList&	vifs) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_flags(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	bool&	enabled,
	bool&	broadcast,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_pif_index(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	uint32_t&	pif_index) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_addresses4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	XrlAtomList&	addresses) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_address_flags4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	bool&	enabled,
	bool&	broadcast,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_addresses6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	XrlAtomList&	addresses) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_address_flags6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	bool&	enabled,
	bool&	loopback,
	bool&	point_to_point,
	bool&	multicast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_interface_enabled(
	// Input values,
	const string&	ifname,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_mac(
	// Input values,
	const string&	ifname,
	// Output values,
	Mac&	mac) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_mtu(
	// Input values,
	const string&	ifname,
	// Output values,
	uint32_t&	mtu) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_vif_enabled(
	// Input values,
	const string&	ifname,
	const string&	vif,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_prefix4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_broadcast4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	IPv4&	broadcast) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_endpoint4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	IPv4&	endpoint) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_prefix6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	uint32_t&	prefix_len) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_endpoint6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	IPv6&	endpoint) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_address_enabled4(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv4&	address,
	// Output values,
	bool&	enabled) = 0;

    virtual XrlCmdError ifmgr_0_1_get_system_address_enabled6(
	// Input values,
	const string&	ifname,
	const string&	vif,
	const IPv6&	address,
	// Output values,
	bool&	enabled) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Register network interface observer for all system interfaces.
     *
     *  @param clientname name of xrl entity supporting fea_ifmgr_client.xif
     *  methods.
     */
    virtual XrlCmdError ifmgr_0_1_register_system_interfaces_client(
	// Input values,
	const string&	clientname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Unregister network interface observer for all system interfaces. This
     *  method is not strictly necessary, the fea will remove the interface
     *  observer from its list of known observers if interface update XRLs
     *  fail.
     */
    virtual XrlCmdError ifmgr_0_1_unregister_system_interfaces_client(
	// Input values,
	const string&	clientname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Register remote mirror of interface state.
     */
    virtual XrlCmdError ifmgr_replicator_0_1_register_ifmgr_mirror(
	// Input values,
	const string&	clientname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Register remote mirror of interface state.
     */
    virtual XrlCmdError ifmgr_replicator_0_1_unregister_ifmgr_mirror(
	// Input values,
	const string&	clientname) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Start transaction.
     *
     *  @param tid the transaction ID to use for this transaction.
     */
    virtual XrlCmdError fti_0_2_start_transaction(
	// Output values,
	uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Commit transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError fti_0_2_commit_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Abort transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError fti_0_2_abort_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Add a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst the destination subnet address of the entry.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_add_entry4(
	// Input values,
	const uint32_t&	tid,
	const IPv4Net&	dst,
	const IPv4&	gateway,
	const string&	ifname,
	const string&	vifname,
	const uint32_t&	metric,
	const uint32_t&	admin_distance,
	const string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Add a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst the destination subnet address of the entry.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_add_entry6(
	// Input values,
	const uint32_t&	tid,
	const IPv6Net&	dst,
	const IPv6&	gateway,
	const string&	ifname,
	const string&	vifname,
	const uint32_t&	metric,
	const uint32_t&	admin_distance,
	const string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst the destination subnet address of the entry.
     */
    virtual XrlCmdError fti_0_2_delete_entry4(
	// Input values,
	const uint32_t&	tid,
	const IPv4Net&	dst) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst the destination subnet address of the entry.
     */
    virtual XrlCmdError fti_0_2_delete_entry6(
	// Input values,
	const uint32_t&	tid,
	const IPv6Net&	dst) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete all routing entries for all address families.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError fti_0_2_delete_all_entries(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete all routing entries for the IPv4 address family.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError fti_0_2_delete_all_entries4(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Delete all routing entries for the IPv6 address family.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError fti_0_2_delete_all_entries6(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Lookup a route for a destination host address.
     *
     *  @param dst the destination host address to lookup.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_lookup_route4(
	// Input values,
	const IPv4&	dst,
	// Output values,
	IPv4Net&	netmask,
	IPv4&	gateway,
	string&	ifname,
	string&	vifname,
	uint32_t&	metric,
	uint32_t&	admin_distance,
	string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Lookup a route for a destination host address.
     *
     *  @param dst the destination host address to lookup.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_lookup_route6(
	// Input values,
	const IPv6&	dst,
	// Output values,
	IPv6Net&	netmask,
	IPv6&	gateway,
	string&	ifname,
	string&	vifname,
	uint32_t&	metric,
	uint32_t&	admin_distance,
	string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Lookup a route for a destination subnet address.
     *
     *  @param dst the destination subnet address to lookup.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_lookup_entry4(
	// Input values,
	const IPv4Net&	dst,
	// Output values,
	IPv4&	gateway,
	string&	ifname,
	string&	vifname,
	uint32_t&	metric,
	uint32_t&	admin_distance,
	string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Lookup a route for a destination subnet address.
     *
     *  @param dst the destination subnet address to lookup.
     *
     *  @param gateway the address of the next-hop router toward dst.
     *
     *  @param ifname the name of the physical interface toward dst.
     *
     *  @param vifname the name of the virtual interface toward dst.
     *
     *  @param metric the routing metric toward dst.
     *
     *  @param admin_distance the administratively defined distance toward dst.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError fti_0_2_lookup_entry6(
	// Input values,
	const IPv6Net&	dst,
	// Output values,
	IPv6&	gateway,
	string&	ifname,
	string&	vifname,
	uint32_t&	metric,
	uint32_t&	admin_distance,
	string&	protocol_origin) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Test if the underlying system supports IPv4.
     *
     *  @param result true if the underlying system supports IPv4, otherwise
     *  false.
     */
    virtual XrlCmdError fti_0_2_have_ipv4(
	// Output values,
	bool&	result) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Test if the underlying system supports IPv6.
     *
     *  @param result true if the underlying system supports IPv4, otherwise
     *  false.
     */
    virtual XrlCmdError fti_0_2_have_ipv6(
	// Output values,
	bool&	result) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Test whether the IPv4 unicast forwarding engine is enabled or disabled
     *  to forward packets.
     *
     *  @param enabled if true, then the IPv4 unicast forwarding is enabled,
     *  otherwise is disabled.
     */
    virtual XrlCmdError fti_0_2_get_unicast_forwarding_enabled4(
	// Output values,
	bool&	enabled) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Test whether the IPv6 unicast forwarding engine is enabled or disabled
     *  to forward packets.
     *
     *  @param enabled if true, then the IPv6 unicast forwarding is enabled,
     *  otherwise is disabled.
     */
    virtual XrlCmdError fti_0_2_get_unicast_forwarding_enabled6(
	// Output values,
	bool&	enabled) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Set the IPv4 unicast forwarding engine to enable or disable forwarding
     *  of packets.
     *
     *  @param enabled if true, then enable IPv4 unicast forwarding, otherwise
     *  disable it.
     */
    virtual XrlCmdError fti_0_2_set_unicast_forwarding_enabled4(
	// Input values,
	const bool&	enabled) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Set the IPv6 unicast forwarding engine to enable or disable forwarding
     *  of packets.
     *
     *  @param enabled if true, then enable IPv6 unicast forwarding, otherwise
     *  disable it.
     */
    virtual XrlCmdError fti_0_2_set_unicast_forwarding_enabled6(
	// Input values,
	const bool&	enabled) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Start transaction.
     *
     *  @param tid the transaction ID to use for this transaction.
     */
    virtual XrlCmdError redist_transaction4_0_1_start_transaction(
	// Output values,
	uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Commit transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError redist_transaction4_0_1_commit_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Abort transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError redist_transaction4_0_1_abort_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Add/delete a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst destination network.
     *
     *  @param nh nexthop router address.
     *
     *  @param ifname interface name associated with nexthop.
     *
     *  @param vifname virtual interface name with nexthop.
     *
     *  @param metric origin routing protocol metric for route.
     *
     *  @param ad administrative distance of origin routing protocol.
     *
     *  @param cookie value set be requestor to identify redistribution source.
     *  Typical value is the originating protocol name.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError redist_transaction4_0_1_add_route(
	// Input values,
	const uint32_t&	tid,
	const IPv4Net&	dst,
	const IPv4&	nh,
	const string&	ifname,
	const string&	vifname,
	const uint32_t&	metric,
	const uint32_t&	ad,
	const string&	cookie,
	const string&	protocol_origin) = 0;

    virtual XrlCmdError redist_transaction4_0_1_delete_route(
	// Input values,
	const uint32_t&	tid,
	const IPv4Net&	network,
	const string&	cookie) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Start transaction.
     *
     *  @param tid the transaction ID to use for this transaction.
     */
    virtual XrlCmdError redist_transaction6_0_1_start_transaction(
	// Output values,
	uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Commit transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError redist_transaction6_0_1_commit_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Abort transaction.
     *
     *  @param tid the transaction ID of this transaction.
     */
    virtual XrlCmdError redist_transaction6_0_1_abort_transaction(
	// Input values,
	const uint32_t&	tid) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Add/delete a routing entry.
     *
     *  @param tid the transaction ID of this transaction.
     *
     *  @param dst destination network.
     *
     *  @param nh nexthop router address.
     *
     *  @param ifname interface name associated with nexthop.
     *
     *  @param vifname virtual interface name with nexthop.
     *
     *  @param metric origin routing protocol metric for route.
     *
     *  @param ad administrative distance of origin routing protocol.
     *
     *  @param cookie value set be requestor to identify redistribution source.
     *  Typical value is the originating protocol name.
     *
     *  @param protocol_origin the name of the protocol that originated this
     *  entry.
     */
    virtual XrlCmdError redist_transaction6_0_1_add_route(
	// Input values,
	const uint32_t&	tid,
	const IPv6Net&	dst,
	const IPv6&	nh,
	const string&	ifname,
	const string&	vifname,
	const uint32_t&	metric,
	const uint32_t&	ad,
	const string&	cookie,
	const string&	protocol_origin) = 0;

    virtual XrlCmdError redist_transaction6_0_1_delete_route(
	// Input values,
	const uint32_t&	tid,
	const IPv6Net&	network,
	const string&	cookie) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Send a packet on a raw socket.
     */
    virtual XrlCmdError raw_packet_0_1_send4(
	// Input values,
	const IPv4&	src_address,
	const IPv4&	dst_address,
	const string&	vif_name,
	const uint32_t&	proto,
	const uint32_t&	ttl,
	const uint32_t&	tos,
	const vector<uint8_t>&	options,
	const vector<uint8_t>&	payload) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Send raw packet. Checksum is computed and applied before transmission.
     *  All the fields within the IPv4 header must be in network order.
     */
    virtual XrlCmdError raw_packet_0_1_send_raw4(
	// Input values,
	const string&	vif_name,
	const vector<uint8_t>&	packet) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Register to receive packets. The receiver is expected to support
     *  raw_socket_client/0.1 interface.
     */
    virtual XrlCmdError raw_packet_0_1_register_vif_receiver(
	// Input values,
	const string&	router_name,
	const string&	if_name,
	const string&	vif_name,
	const uint32_t&	proto) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Unregister stop receiving packets.
     *
     *  @param proto Protocol number that the receiver is interested in.
     */
    virtual XrlCmdError raw_packet_0_1_unregister_vif_receiver(
	// Input values,
	const string&	router_name,
	const string&	if_name,
	const string&	vif_name,
	const uint32_t&	proto) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Find suitable socket serving Xrl Target for a particular interface
     *  address.
     */
    virtual XrlCmdError socket4_locator_0_1_find_socket_server_for_addr(
	// Input values,
	const IPv4&	local_addr,
	// Output values,
	string&	xrl_target) = 0;

    /**
     *  Pure-virtual function that needs to be implemented to:
     *
     *  Find suitable socket serving Xrl Target for a particular interface
     *  address.
     */
    virtual XrlCmdError socket6_locator_0_1_find_socket_server_for_addr(
	// Input values,
	const IPv6&	local_addr,
	// Output values,
	string&	xrl_target) = 0;

private:
    const XrlCmdError handle_common_0_1_get_target_name(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_common_0_1_get_version(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_common_0_1_get_status(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_common_0_1_shutdown(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fea_fib_0_1_add_fib_client4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fea_fib_0_1_add_fib_client6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fea_fib_0_1_delete_fib_client4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fea_fib_0_1_delete_fib_client6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_interface_names(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_names(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_flags(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_pif_index(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_addresses4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_addresses6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_address_flags4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_address_flags6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_interface_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_mac(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_mtu(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_vif_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_prefix4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_broadcast4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_endpoint4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_prefix6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_endpoint6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_start_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_commit_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_abort_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_create_interface(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_delete_interface(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_configure_interface_from_system(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_interface_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_mac(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_mtu(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_create_vif(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_delete_vif(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_vif_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_create_address4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_delete_address4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_address_enabled4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_address_enabled4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_prefix4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_broadcast4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_endpoint4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_create_address6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_delete_address6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_address_enabled6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_configured_address_enabled6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_prefix6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_set_endpoint6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_register_client(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_unregister_client(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_interface_names(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_names(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_flags(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_pif_index(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_addresses4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_address_flags4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_addresses6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_address_flags6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_interface_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_mac(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_mtu(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_vif_enabled(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_prefix4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_broadcast4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_endpoint4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_prefix6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_endpoint6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_address_enabled4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_get_system_address_enabled6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_register_system_interfaces_client(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_0_1_unregister_system_interfaces_client(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_replicator_0_1_register_ifmgr_mirror(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_ifmgr_replicator_0_1_unregister_ifmgr_mirror(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_start_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_commit_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_abort_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_add_entry4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_add_entry6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_delete_entry4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_delete_entry6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_delete_all_entries(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_delete_all_entries4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_delete_all_entries6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_lookup_route4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_lookup_route6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_lookup_entry4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_lookup_entry6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_have_ipv4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_have_ipv6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_get_unicast_forwarding_enabled4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_get_unicast_forwarding_enabled6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_set_unicast_forwarding_enabled4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_fti_0_2_set_unicast_forwarding_enabled6(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction4_0_1_start_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction4_0_1_commit_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction4_0_1_abort_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction4_0_1_add_route(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction4_0_1_delete_route(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction6_0_1_start_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction6_0_1_commit_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction6_0_1_abort_transaction(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction6_0_1_add_route(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_redist_transaction6_0_1_delete_route(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_raw_packet_0_1_send4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_raw_packet_0_1_send_raw4(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_raw_packet_0_1_register_vif_receiver(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_raw_packet_0_1_unregister_vif_receiver(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_socket4_locator_0_1_find_socket_server_for_addr(const XrlArgs& in, XrlArgs* out);

    const XrlCmdError handle_socket6_locator_0_1_find_socket_server_for_addr(const XrlArgs& in, XrlArgs* out);

    void add_handlers();
    void remove_handlers();
};

#endif /* __XRL_INTERFACES_FEA_BASE_HH__ */

Generated by: pavlin on possum.icir.org on Thu Jul 8 23:48:20 2004, using kdoc $.