/* * 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/ripng_base.hh,v 1.16 2004/06/21 18:06:07 hodson Exp $ */ #ifndef __XRL_INTERFACES_RIPNG_BASE_HH__ #define __XRL_INTERFACES_RIPNG_BASE_HH__ #undef XORP_LIBRARY_NAME #define XORP_LIBRARY_NAME "XrlRipngTarget" #include "libxorp/xlog.h" #include "libxipc/xrl_cmd_map.hh" class XrlRipngTargetBase { 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. */ XrlRipngTargetBase(XrlCmdMap* cmds = 0); /** * Destructor. * * Dissociates instance commands from command map. */ virtual ~XrlRipngTargetBase(); /** * 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 "ripng/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: * * Announce target birth. */ virtual XrlCmdError finder_event_observer_0_1_xrl_target_birth( // Input values, const string& target_class, const string& target_instance) = 0; /** * Pure-virtual function that needs to be implemented to: * * Announce target death. */ virtual XrlCmdError finder_event_observer_0_1_xrl_target_death( // Input values, const string& target_class, const string& target_instance) = 0; /** * Pure-virtual function that needs to be implemented to: * * * @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. */ virtual XrlCmdError redist6_0_1_add_route( // Input values, const IPv6Net& dst, const IPv6& nh, const string& ifname, const string& vifname, const uint32_t& metric, const uint32_t& ad, const string& cookie) = 0; virtual XrlCmdError redist6_0_1_delete_route( // Input values, const IPv6Net& network, const string& cookie) = 0; /** * Pure-virtual function that needs to be implemented to: * * When route redistribution begins, the receiver is sent the existing * list of routes. This message marks the beginning of the routes being * sent. * * @param cookie value set be requestor to identify redistribution source. * Typical value is the originating protocol name. */ virtual XrlCmdError redist6_0_1_starting_route_dump( // Input values, const string& cookie) = 0; /** * Pure-virtual function that needs to be implemented to: * * When route redistribution begins, the receiver is sent the existing * list of routes. This message marks the end of the existing routes being * sent. * * @param cookie value set be requestor to identify redistribution source. * Typical value is the originating protocol name. */ virtual XrlCmdError redist6_0_1_finishing_route_dump( // Input values, const string& cookie) = 0; /** * Pure-virtual function that needs to be implemented to: * * Add an address to run RIP process on. The addition of address is not * instantaneous, RIP has to instantiate state in the FEA to send and * receive packets. Once instantiated the address must be explicitly * enabled with set_rip_address_enabled. * * @param ifname the interface that owns vif that has address. * * @param vifname virtual interface owning address. * * @param addr the address to be added. */ virtual XrlCmdError ripng_0_1_add_rip_address( // Input values, const string& ifname, const string& vifname, const IPv6& addr) = 0; /** * Pure-virtual function that needs to be implemented to: * * Remove an address RIP process is running on. * * @param ifname the interface that owns vif that has address. * * @param vifname virtual interface owning address. * * @param addr the address to be removed. */ virtual XrlCmdError ripng_0_1_remove_rip_address( // Input values, const string& ifname, const string& vifname, const IPv6& addr) = 0; virtual XrlCmdError ripng_0_1_set_rip_address_enabled( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const bool& enabled) = 0; virtual XrlCmdError ripng_0_1_rip_address_enabled( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, bool& enabled) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set cost metric associated with address. */ virtual XrlCmdError ripng_0_1_set_cost( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& cost) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get cost metric associated with address. */ virtual XrlCmdError ripng_0_1_cost( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& cost) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set horizon type applied to routes advertised from address. * * @param horizon name of horizon type. Permitted values: "none", * "poison-reverse" "split-horizon-poison-reverse" */ virtual XrlCmdError ripng_0_1_set_horizon( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const string& horizon) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get horizon type applied to routes advertised from address. */ virtual XrlCmdError ripng_0_1_horizon( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, string& horizon) = 0; /** * Pure-virtual function that needs to be implemented to: * * Make RIP passive (receive only) on interface/vif/address. */ virtual XrlCmdError ripng_0_1_set_passive( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const bool& passive) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get value indicating whether RIP is passive (receive only) on * interface/vif/address. */ virtual XrlCmdError ripng_0_1_passive( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, bool& passive) = 0; /** * Pure-virtual function that needs to be implemented to: * * Accept and respond to non-RIP requests. */ virtual XrlCmdError ripng_0_1_set_accept_non_rip_requests( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const bool& accept) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get value indicating whether non-RIP requests are accepted and * responded to on interface/vif/address. */ virtual XrlCmdError ripng_0_1_accept_non_rip_requests( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, bool& accept) = 0; /** * Pure-virtual function that needs to be implemented to: * * Accept default route from peers. */ virtual XrlCmdError ripng_0_1_set_accept_default_route( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const bool& accept) = 0; /** * Pure-virtual function that needs to be implemented to: * * Accessor for whether default route is accepted from peers. */ virtual XrlCmdError ripng_0_1_accept_default_route( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, bool& accept) = 0; /** * Pure-virtual function that needs to be implemented to: * * Advertise default route (if present). */ virtual XrlCmdError ripng_0_1_set_advertise_default_route( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const bool& advertise) = 0; /** * Pure-virtual function that needs to be implemented to: * * Accessor for whether default route is advertised. */ virtual XrlCmdError ripng_0_1_advertise_default_route( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, bool& advertise) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set period that routes associated with reception address will expire in * the absence of updates. */ virtual XrlCmdError ripng_0_1_set_route_expiry_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get period that routes associated with reception address will expire in * the absence of updates. */ virtual XrlCmdError ripng_0_1_route_expiry_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set period that routes associated with reception address will be * deleted after they've expired. */ virtual XrlCmdError ripng_0_1_set_route_deletion_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get period that routes associated with reception address will be * deleted after they've expired. */ virtual XrlCmdError ripng_0_1_route_deletion_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set period that route table requests should be sent from address when * no peers are associated with it. */ virtual XrlCmdError ripng_0_1_set_table_request_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set period that route table requests should be sent from address when * no peers are associated with it. */ virtual XrlCmdError ripng_0_1_table_request_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set minimum period between the unsolicited sending of the routing table * from address. */ virtual XrlCmdError ripng_0_1_set_unsolicited_response_min_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get minimum period between the unsolicited sending of the routing table * from address. */ virtual XrlCmdError ripng_0_1_unsolicited_response_min_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set maximum period between the unsolicited sending of the routing table * from address. */ virtual XrlCmdError ripng_0_1_set_unsolicited_response_max_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get maximum period between the unsolicited sending of the routing table * from address. */ virtual XrlCmdError ripng_0_1_unsolicited_response_max_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set minimum period between sending triggered updates from address. */ virtual XrlCmdError ripng_0_1_set_triggered_update_min_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get minimum period between sending triggered updates from address. */ virtual XrlCmdError ripng_0_1_triggered_update_min_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set maximum period between sending triggered updates from address. */ virtual XrlCmdError ripng_0_1_set_triggered_update_max_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get maximum period between sending triggered updates from address. */ virtual XrlCmdError ripng_0_1_triggered_update_max_seconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_secs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Set the inter-packet delay between the output of packets from address. */ virtual XrlCmdError ripng_0_1_set_interpacket_delay_milliseconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const uint32_t& t_msecs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get the inter-packet delay between the output of packets from address. */ virtual XrlCmdError ripng_0_1_interpacket_delay_milliseconds( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, uint32_t& t_msecs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get a textual description of the status of address RIP is running upon. * * @param ifname the interface that owns vif that has the address. * * @param vifname virtual interface owns the address. * * @param addr the address to query. */ virtual XrlCmdError ripng_0_1_rip_address_status( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, string& status) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get addresses running RIP. */ virtual XrlCmdError ripng_0_1_get_all_addresses( // Output values, XrlAtomList& ifnames, XrlAtomList& vifnames, XrlAtomList& addrs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get counters associated with interface / vif /address. */ virtual XrlCmdError ripng_0_1_get_counters( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, XrlAtomList& counter_descriptions, XrlAtomList& counter_values) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get the list of peers associated with interface / vif / address. */ virtual XrlCmdError ripng_0_1_get_peers( // Input values, const string& ifname, const string& vifname, const IPv6& addr, // Output values, XrlAtomList& peers) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get list of all peers known to RIP. There is a 1-to-1 correspondence * between the items in the lists of peers, ifnames, vifnames, addrs. */ virtual XrlCmdError ripng_0_1_get_all_peers( // Output values, XrlAtomList& peers, XrlAtomList& ifnames, XrlAtomList& vifnames, XrlAtomList& addrs) = 0; /** * Pure-virtual function that needs to be implemented to: * * Get counters associated with peer of interface / vif /address. * * @param counter_descriptions textual descriptions of counters. * * @param counter_values values associated with counters. * * @param peer_last_active is the number of seconds since TimeVal(0,0). */ virtual XrlCmdError ripng_0_1_get_peer_counters( // Input values, const string& ifname, const string& vifname, const IPv6& addr, const IPv6& peer, // Output values, XrlAtomList& counter_descriptions, XrlAtomList& counter_values, uint32_t& peer_last_active) = 0; /** * Pure-virtual function that needs to be implemented to: * * Configure protocol route redistribution. * * @param protocol_name name of protocol to redistribute routes from. * * @param cost RIP cost metric to assign to protocol routes. * * @param tag RIP tag to associate with protocol routes. */ virtual XrlCmdError ripng_0_1_redist_protocol_routes( // Input values, const string& protocol_name, const uint32_t& cost, const uint32_t& tag) = 0; /** * Pure-virtual function that needs to be implemented to: * * Remove protocol route redistribution. * * @param protocol_name name of protocol to stop redistribution of routes * from. */ virtual XrlCmdError ripng_0_1_no_redist_protocol_routes( // Input values, const string& protocol_name) = 0; /** * Pure-virtual function that needs to be implemented to: * * Method invoked by target implementing socket6/0.1 when a packet arrives * from an IPv6 source. * * @param sockid the identifier associated with socket where error * occurred. * * @param src_host the originating host. * * @param src_port the originating IP port. * * @param data the data received. */ virtual XrlCmdError socket6_user_0_1_recv_event( // Input values, const string& sockid, const IPv6& src_host, const uint32_t& src_port, const vector<uint8_t>& data) = 0; /** * Pure-virtual function that needs to be implemented to: * * Method invoked by target implementing socket6/0.1 when a connection * request is received from an IPv6 source. */ virtual XrlCmdError socket6_user_0_1_connect_event( // Input values, const string& sockid, const IPv6& src_host, const uint32_t& src_port, const string& new_sockid, // Output values, bool& accept) = 0; /** * Pure-virtual function that needs to be implemented to: * * Method invoked by target implementing socket6/0.1 when an error occurs. * * @param sockid the identifier associated with socket where error * occurred. * * @param error a textual description of the error. * * @param fatal indication of whether socket is shutdown because of error. */ virtual XrlCmdError socket6_user_0_1_error_event( // Input values, const string& sockid, const string& error, const bool& fatal) = 0; /** * Pure-virtual function that needs to be implemented to: * * Method invoked by target implementing socket6/0.1 when a socket is * forcibly closed. This would typically happen when the address the * socket is bound to is removed from an interface. This method is not * called if the socket is closed through socket/0.1/close. */ virtual XrlCmdError socket6_user_0_1_close_event( // Input values, const string& sockid, const string& reason) = 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_finder_event_observer_0_1_xrl_target_birth(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_finder_event_observer_0_1_xrl_target_death(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_redist6_0_1_add_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_redist6_0_1_delete_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_redist6_0_1_starting_route_dump(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_redist6_0_1_finishing_route_dump(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_add_rip_address(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_remove_rip_address(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_rip_address_enabled(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_rip_address_enabled(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_cost(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_cost(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_horizon(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_horizon(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_passive(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_passive(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_accept_non_rip_requests(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_accept_non_rip_requests(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_accept_default_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_accept_default_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_advertise_default_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_advertise_default_route(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_route_expiry_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_route_expiry_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_route_deletion_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_route_deletion_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_table_request_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_table_request_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_unsolicited_response_min_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_unsolicited_response_min_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_unsolicited_response_max_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_unsolicited_response_max_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_triggered_update_min_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_triggered_update_min_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_triggered_update_max_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_triggered_update_max_seconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_set_interpacket_delay_milliseconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_interpacket_delay_milliseconds(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_rip_address_status(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_get_all_addresses(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_get_counters(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_get_peers(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_get_all_peers(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_get_peer_counters(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_redist_protocol_routes(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_ripng_0_1_no_redist_protocol_routes(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_socket6_user_0_1_recv_event(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_socket6_user_0_1_connect_event(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_socket6_user_0_1_error_event(const XrlArgs& in, XrlArgs* out); const XrlCmdError handle_socket6_user_0_1_close_event(const XrlArgs& in, XrlArgs* out); void add_handlers(); void remove_handlers(); }; #endif /* __XRL_INTERFACES_RIPNG_BASE_HH__ */