Source: ../../ospf/xrl_target.hh
|
|
|
|
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
// vim:set sts=4 ts=8:
// Copyright (c) 2001-2009 XORP, Inc.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, Version 2, June
// 1991 as published by the Free Software Foundation. Redistribution
// and/or modification of this program under the terms of any other
// version of the GNU General Public License is not permitted.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details,
// see the GNU General Public License, Version 2, a copy of which can be
// found in the XORP LICENSE.gpl file.
//
// XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
// http://xorp.net
// $XORP: xorp/ospf/xrl_target.hh,v 1.47 2009/01/05 18:31:01 jtc Exp $
#ifndef __OSPF_XRL_TARGET_HH__
#define __OSPF_XRL_TARGET_HH__
#include "xrl/targets/ospfv2_base.hh"
#include "xrl/targets/ospfv3_base.hh"
#include "ospf.hh"
class XrlOspfV2Target : XrlOspfv2TargetBase {
public:
XrlOspfV2Target(XrlRouter *r, Ospf<IPv4>& ospf, XrlIO<IPv4>& io);
/**
* Get name of Xrl Target
*/
XrlCmdError common_0_1_get_target_name(
// Output values,
string& name);
/**
* Get version string from Xrl Target
*/
XrlCmdError common_0_1_get_version(
// Output values,
string& version);
/**
* Get status of Xrl Target
*/
XrlCmdError common_0_1_get_status(
// Output values,
uint32_t& status,
string& reason);
/**
* Request clean shutdown of Xrl Target
*/
XrlCmdError common_0_1_shutdown();
/**
* Receive an IPv4 packet from a raw socket.
*
* @param if_name the interface name the packet arrived on.
*
* @param vif_name the vif name the packet arrived on.
*
* @param src_address the IP source address.
*
* @param dst_address the IP destination address.
*
* @param ip_protocol the IP protocol number.
*
* @param ip_ttl the IP TTL (hop-limit). If it has a negative value, then
* the received value is unknown.
*
* @param ip_tos the Type of Service (Diffserv/ECN bits for IPv4). If it
* has a negative value, then the received value is unknown.
*
* @param ip_router_alert if true, the IP Router Alert option was included
* in the IP packet.
*
* @param ip_internet_control if true, then this is IP control traffic.
*/
XrlCmdError raw_packet4_client_0_1_recv(
// Input values,
const string& if_name,
const string& vif_name,
const IPv4& src_address,
const IPv4& dst_address,
const uint32_t& ip_protocol,
const int32_t& ip_ttl,
const int32_t& ip_tos,
const bool& ip_router_alert,
const bool& ip_internet_control,
const vector<uint8_t>& payload);
/**
* Configure a policy filter.
*
* @param filter the identifier of the filter to configure.
*
* @param conf the configuration of the filter.
*/
XrlCmdError policy_backend_0_1_configure(
// Input values,
const uint32_t& filter,
const string& conf);
/**
* Reset a policy filter.
*
* @param filter the identifier of the filter to reset.
*/
XrlCmdError policy_backend_0_1_reset(
// Input values,
const uint32_t& filter);
/**
* Push all available routes through all filters for re-filtering.
*/
XrlCmdError policy_backend_0_1_push_routes();
/**
* Start route redistribution for an IPv4 route.
*
* @param network the route to advertise.
*
* @param unicast whether the route is unicast.
*
* @param multicast whether the route is multicast.
*
* @param nexthop the nexthop of the route.
*
* @param metric the metric of the route.
*
* @param policytags the set of policy-tags associated with the route.
*/
XrlCmdError policy_redist4_0_1_add_route4(
// Input values,
const IPv4Net& network,
const bool& unicast,
const bool& multicast,
const IPv4& nexthop,
const uint32_t& metric,
const XrlAtomList& policytags);
/**
* Terminate route redistribution for an IPv4 route.
*
* @param network the route for which advertisements should cease.
*
* @param unicast whether the route is unicast.
*
* @param multicast whether the route is multicast.
*/
XrlCmdError policy_redist4_0_1_delete_route4(
// Input values,
const IPv4Net& network,
const bool& unicast,
const bool& multicast);
/**
* Set router id
*/
XrlCmdError ospfv2_0_1_set_router_id(
// Input values,
const IPv4& id);
/**
* Set RFC 1583 compatibility.
*/
XrlCmdError ospfv2_0_1_set_rfc1583_compatibility(
// Input values,
const bool& compatibility);
/**
* Set the router alert in the IP options.
*/
XrlCmdError ospfv2_0_1_set_ip_router_alert(
// Input values,
const bool& ip_router_alert);
/**
* @param type of area "normal", "stub", "nssa"
*/
XrlCmdError ospfv2_0_1_create_area_router(
// Input values,
const IPv4& area,
const string& type);
/**
* Change area type.
*
* @param area id of the area
*
* @param type of area "border", "stub", "nssa"
*/
XrlCmdError ospfv2_0_1_change_area_router_type(
// Input values,
const IPv4& area,
const string& type);
/**
* Destroy area.
*/
XrlCmdError ospfv2_0_1_destroy_area_router(
// Input values,
const IPv4& area);
/**
* Create a binding to an interface.
*
* @param ifname the interface that owns vif that has address.
*
* @param vifname virtual interface owning address.
*
* @param addr the address to be added.
*
* @param type of link "p2p", "broadcast", "nbma", "p2m", "vlink"
*/
XrlCmdError ospfv2_0_1_create_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& addr,
const string& type,
const IPv4& area);
/**
* Delete peer.
*/
XrlCmdError ospfv2_0_1_delete_peer(
// Input values,
const string& ifname,
const string& vifname);
/**
* Set the peer state up or down.
*/
XrlCmdError ospfv2_0_1_set_peer_state(
// Input values,
const string& ifname,
const string& vifname,
const bool& enable);
/**
* Add a neighbour to the peer.
*/
XrlCmdError ospfv2_0_1_add_neighbour(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv4& neighbour_address,
const IPv4& neighbour_id);
/**
* Remove a neighbour from the peer.
*/
XrlCmdError ospfv2_0_1_remove_neighbour(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv4& neighbour_address,
const IPv4& neighbour_id);
/**
* Create a virtual link.
*
* @param neighbour_id the router ID of the other end of the link.
*
* @param area in which an attempt has been made to configure a virtual
* link it has to be the backbone. Its just being passed in so it can be
* checked by the protocol.
*/
XrlCmdError ospfv2_0_1_create_virtual_link(
// Input values,
const IPv4& neighbour_id,
const IPv4& area);
/**
* Delete virtual link
*
* @param neighbour_id the router ID of the other end of the link.
*/
XrlCmdError ospfv2_0_1_delete_virtual_link(
// Input values,
const IPv4& neighbour_id);
/**
* The area through which the virtual link transits.
*
* @param neighbour_id the router ID of the other end of the link.
*
* @param transit_area that the virtual link transits.
*/
XrlCmdError ospfv2_0_1_transit_area_virtual_link(
// Input values,
const IPv4& neighbour_id,
const IPv4& transit_area);
/**
* The edge cost of this interface.
*/
XrlCmdError ospfv2_0_1_set_interface_cost(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& cost);
/**
* The RxmtInterval.
*/
XrlCmdError ospfv2_0_1_set_retransmit_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* Update packet will have their age incremented by this amount before
* transmission. This value should take into account transmission and
* propagation delays; it must be greater than zero.
*/
XrlCmdError ospfv2_0_1_set_inftransdelay(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& delay);
/**
* Used in the designated router election.
*/
XrlCmdError ospfv2_0_1_set_router_priority(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* The interval between hello messages.
*/
XrlCmdError ospfv2_0_1_set_hello_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* The period to wait before considering a router dead.
*/
XrlCmdError ospfv2_0_1_set_router_dead_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* Set simple password authentication key.
*
* @param ifname the interface name.
*
* @param vifname the vif name.
*
* @param area the area ID.
*
* @param password the authentication password.
*/
XrlCmdError ospfv2_0_1_set_simple_authentication_key(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const string& password);
/**
* Delete simple password authentication key.
*
* @param ifname the interface name.
*
* @param vifname the vif name.
*
* @param area the area ID.
*/
XrlCmdError ospfv2_0_1_delete_simple_authentication_key(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area);
/**
* Set MD5 authentication key.
*
* @param ifname the interface name.
*
* @param vifname the vif name.
*
* @param area the area ID.
*
* @param key_id the key ID (must be an integer in the interval [0, 255]).
*
* @param password the authentication password.
*
* @param start_time the authentication start time (YYYY-MM-DD.HH:MM).
*
* @param end_time the authentication end time (YYYY-MM-DD.HH:MM).
*
* @param max_time_drift the maximum time drift (in seconds) among
* all routers. Allowed values are [0--65534] seconds or 65535 for
* unlimited time drift.
*/
XrlCmdError ospfv2_0_1_set_md5_authentication_key(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& key_id,
const string& password,
const string& start_time,
const string& end_time,
const uint32_t& max_time_drift);
/**
* Delete MD5 authentication key.
*
* @param ifname the interface name.
*
* @param vifname the vif name.
*
* @param area the area ID.
*
* @param key_id the key ID (must be an integer in the interval [0, 255]).
*/
XrlCmdError ospfv2_0_1_delete_md5_authentication_key(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& key_id);
/**
* Toggle the passive status of an interface.
*/
XrlCmdError ospfv2_0_1_set_passive(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const bool& passive,
const bool& host);
/**
* If this is a "stub" or "nssa" area toggle the sending of a default
* route.
*/
XrlCmdError ospfv2_0_1_originate_default_route(
// Input values,
const IPv4& area,
const bool& enable);
/**
* Set the StubDefaultCost, the default cost sent in a default route in a
* "stub" or "nssa" area.
*/
XrlCmdError ospfv2_0_1_stub_default_cost(
// Input values,
const IPv4& area,
const uint32_t& cost);
/**
* Toggle the sending of summaries into "stub" or "nssa" areas.
*/
XrlCmdError ospfv2_0_1_summaries(
// Input values,
const IPv4& area,
const bool& enable);
/**
* Add area range.
*/
XrlCmdError ospfv2_0_1_area_range_add(
// Input values,
const IPv4& area,
const IPv4Net& net,
const bool& advertise);
/**
* Delete area range.
*/
XrlCmdError ospfv2_0_1_area_range_delete(
// Input values,
const IPv4& area,
const IPv4Net& net);
/**
* Change the advertised state of this area.
*/
XrlCmdError ospfv2_0_1_area_range_change_state(
// Input values,
const IPv4& area,
const IPv4Net& net,
const bool& advertise);
/**
* Enable/Disable tracing.
*
* @param tvar trace variable.
*
* @param enable set to true to enable false to disable.
*/
XrlCmdError ospfv2_0_1_trace(
// Input values,
const string& tvar,
const bool& enable);
/**
* Get a single lsa from an area. A stateless mechanism to get LSAs. The
* client of this interface should start from zero and continue to request
* LSAs (incrementing index) until toohigh becomes true.
*
* @param area database that is being searched.
*
* @param index into database starting from 0.
*
* @param valid true if a LSA has been returned. Some index values do not
* contain LSAs. This should not be considered an error.
*
* @param toohigh true if no more LSA exist after this index.
*
* @param self if true this LSA was originated by this router.
*
* @param lsa if valid is true the LSA at index.
*/
XrlCmdError ospfv2_0_1_get_lsa(
// Input values,
const IPv4& area,
const uint32_t& index,
// Output values,
bool& valid,
bool& toohigh,
bool& self,
vector<uint8_t>& lsa);
/**
* Get a list of all the configured areas.
*/
XrlCmdError ospfv2_0_1_get_area_list(XrlAtomList& areas);
/**
* Get the list of neighbours.
*/
XrlCmdError ospfv2_0_1_get_neighbour_list(
// Output values,
XrlAtomList& areas);
/**
* Get information on a neighbour.
*
* @param nid neighbour ID returned by the get_neighbour_list.
*
* @param valid true if valid information has been returned.
*
* @param address of neighbour in txt to allow IPv4 and IPv6.
*
* @param interface with which the neighbour forms the adjacency.
*
* @param state of the adjacency.
*
* @param rid router ID of the neighbour.
*
* @param priority of the neighbour (used for DR election).
*
* @param area the neighbour is in.
*
* @param opt value in the neighbours hello packet.
*
* @param dr designated router.
*
* @param bdr backup designated router.
*
* @param up time in seconds that the neigbour has been up.
*
* @param adjacent time in seconds that there has been an adjacency.
*/
XrlCmdError ospfv2_0_1_get_neighbour_info(
// Input values,
const uint32_t& nid,
// Output values,
string& address,
string& interface,
string& state,
IPv4& rid,
uint32_t& priority,
uint32_t& deadtime,
IPv4& area,
uint32_t& opt,
IPv4& dr,
IPv4& bdr,
uint32_t& up,
uint32_t& adjacent);
/**
* Clear the OSPF database.
*/
XrlCmdError ospfv2_0_1_clear_database();
private:
Ospf<IPv4>& _ospf;
XrlIO<IPv4>& _xrl_io;
};
class XrlOspfV3Target : XrlOspfv3TargetBase {
public:
XrlOspfV3Target(XrlRouter *r,
/* Ospf<IPv4>& ospf_ipv4, */
Ospf<IPv6>& ospf_ipv6,
/* XrlIO<IPv4>& io_ipv4, */
XrlIO<IPv6>& io_ipv6);
/**
* Get name of Xrl Target
*/
XrlCmdError common_0_1_get_target_name(
// Output values,
string& name);
/**
* Get version string from Xrl Target
*/
XrlCmdError common_0_1_get_version(
// Output values,
string& version);
/**
* Get status of Xrl Target
*/
XrlCmdError common_0_1_get_status(
// Output values,
uint32_t& status,
string& reason);
/**
* Request clean shutdown of Xrl Target
*/
XrlCmdError common_0_1_shutdown();
/**
* Receive an IPv4 packet from a raw socket.
*
* @param if_name the interface name the packet arrived on.
*
* @param vif_name the vif name the packet arrived on.
*
* @param src_address the IP source address.
*
* @param dst_address the IP destination address.
*
* @param ip_protocol the IP protocol number.
*
* @param ip_ttl the IP TTL (hop-limit). If it has a negative value, then
* the received value is unknown.
*
* @param ip_tos the Type of Service (Diffserv/ECN bits for IPv4). If it
* has a negative value, then the received value is unknown.
*
* @param ip_router_alert if true, the IP Router Alert option was included
* in the IP packet.
*
* @param ip_internet_control if true, then this is IP control traffic.
*/
XrlCmdError raw_packet4_client_0_1_recv(
// Input values,
const string& if_name,
const string& vif_name,
const IPv4& src_address,
const IPv4& dst_address,
const uint32_t& ip_protocol,
const int32_t& ip_ttl,
const int32_t& ip_tos,
const bool& ip_router_alert,
const bool& ip_internet_control,
const vector<uint8_t>& payload);
/**
* Receive an IPv6 packet from a raw socket.
*
* @param if_name the interface name the packet arrived on.
*
* @param vif_name the vif name the packet arrived on.
*
* @param src_address the IP source address.
*
* @param dst_address the IP destination address.
*
* @param ip_protocol the IP protocol number.
*
* @param ip_ttl the IP TTL (hop-limit). If it has a negative value, then
* the received value is unknown.
*
* @param ip_tos the Type Of Service (IP traffic class for IPv4). If it
* has a negative value, then the received value is unknown.
*
* @param ip_router_alert if true, the IP Router Alert option was included
* in the IP packet.
*
* @param ip_internet_control if true, then this is IP control traffic.
*
* @param ext_headers_type a list of u32 integers with the types of the
* optional extention headers.
*
* @param ext_headers_payload a list of payload data, one for each
* optional extention header. The number of entries must match
* ext_headers_type.
*/
XrlCmdError raw_packet6_client_0_1_recv(
// Input values,
const string& if_name,
const string& vif_name,
const IPv6& src_address,
const IPv6& dst_address,
const uint32_t& ip_protocol,
const int32_t& ip_ttl,
const int32_t& ip_tos,
const bool& ip_router_alert,
const bool& ip_internet_control,
const XrlAtomList& ext_headers_type,
const XrlAtomList& ext_headers_payload,
const vector<uint8_t>& payload);
/**
* Pure-virtual function that needs to be implemented to:
*
* Configure a policy filter.
*
* @param filter the identifier of the filter to configure.
*
* @param conf the configuration of the filter.
*/
XrlCmdError policy_backend_0_1_configure(
// Input values,
const uint32_t& filter,
const string& conf);
/**
* @param filter the identifier of the filter to reset.
*/
XrlCmdError policy_backend_0_1_reset(
// Input values,
const uint32_t& filter);
/**
* Push all available routes through all filters for re-filtering.
*/
XrlCmdError policy_backend_0_1_push_routes();
/**
* Start route redistribution for an IPv6 route.
*
* @param network the route to advertise.
*
* @param unicast whether the route is unicast.
*
* @param multicast whether the route is multicast.
*
* @param nexthop the nexthop of the route.
*
* @param metric the metric of the route.
*
* @param policytags the set of policy-tags associated with the route.
*/
XrlCmdError policy_redist6_0_1_add_route6(
// Input values,
const IPv6Net& network,
const bool& unicast,
const bool& multicast,
const IPv6& nexthop,
const uint32_t& metric,
const XrlAtomList& policytags);
/**
* Terminate route redistribution for an IPv6 route.
*
* @param network the route for which advertisements should cease.
*
* @param unicast whether the route is unicast.
*
* @param multicast whether the route is multicast.
*/
XrlCmdError policy_redist6_0_1_delete_route6(
// Input values,
const IPv6Net& network,
const bool& unicast,
const bool& multicast);
/**
* Set instance id
*/
XrlCmdError ospfv3_0_1_set_instance_id(
// Input values,
const uint32_t& id);
/**
* Set router id
*/
XrlCmdError ospfv3_0_1_set_router_id(
// Input values,
const IPv4& id);
/**
* Set the router alert in the IP options.
*/
XrlCmdError ospfv3_0_1_set_ip_router_alert(
// Input values,
const bool& ip_router_alert);
/**
* @param type of area "normal", "stub", "nssa"
*/
XrlCmdError ospfv3_0_1_create_area_router(
// Input values,
const IPv4& area,
const string& type);
/**
* Change area type.
*
* @param area id of the area
*
* @param type of area "border", "stub", "nssa"
*/
XrlCmdError ospfv3_0_1_change_area_router_type(
// Input values,
const IPv4& area,
const string& type);
/**
* Destroy area.
*/
XrlCmdError ospfv3_0_1_destroy_area_router(
// Input values,
const IPv4& area);
/**
* Create a binding to an interface.
*
* @param ifname the interface.
*
* @param vifname virtual interface.
*
* @param type of link "p2p", "broadcast", "nbma", "p2m", "vlink"
*/
XrlCmdError ospfv3_0_1_create_peer(
// Input values,
const string& ifname,
const string& vifname,
const string& type,
const IPv4& area);
/**
* Delete peer.
*/
XrlCmdError ospfv3_0_1_delete_peer(
// Input values,
const string& ifname,
const string& vifname);
/**
* Set the peer state up or down.
*/
XrlCmdError ospfv3_0_1_set_peer_state(
// Input values,
const string& ifname,
const string& vifname,
const bool& enable);
/**
* Add an address to the peer.
*/
XrlCmdError ospfv3_0_1_add_address_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv6& addr);
/**
* Remove an address from the peer.
*/
XrlCmdError ospfv3_0_1_remove_address_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv6& addr);
/**
* Set the address state up or down.
*/
XrlCmdError ospfv3_0_1_set_address_state_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv6& addr,
const bool& enable);
/**
* Activate peer. Called once the peer and child nodes have been
* configured.
*/
XrlCmdError ospfv3_0_1_activate_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area);
/**
* Update peer. Called if the peer and child nodes are modified.
*/
XrlCmdError ospfv3_0_1_update_peer(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area);
/**
* Add a neighbour to the peer.
*/
XrlCmdError ospfv3_0_1_add_neighbour(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv6& neighbour_address,
const IPv4& neighbour_id);
/**
* Remove a neighbour from the peer.
*/
XrlCmdError ospfv3_0_1_remove_neighbour(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const IPv6& neighbour_address,
const IPv4& neighbour_id);
/**
* Create a virtual link.
*
* @param neighbour_id the router ID of the other end of the link.
*
* @param area in which an attempt has been made to configure a virtual
* link it has to be the backbone. Its just being passed in so it can be
* checked by the protocol.
*/
XrlCmdError ospfv3_0_1_create_virtual_link(
// Input values,
const IPv4& neighbour_id,
const IPv4& area);
/**
* Delete virtual link
*
* @param neighbour_id the router ID of the other end of the link.
*/
XrlCmdError ospfv3_0_1_delete_virtual_link(
// Input values,
const IPv4& neighbour_id);
/**
* The area through which the virtual link transits.
*
* @param neighbour_id the router ID of the other end of the link.
*
* @param transit_area that the virtual link transits.
*/
XrlCmdError ospfv3_0_1_transit_area_virtual_link(
// Input values,
const IPv4& neighbour_id,
const IPv4& transit_area);
/**
* The edge cost of this interface.
*/
XrlCmdError ospfv3_0_1_set_interface_cost(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& cost);
/**
* The RxmtInterval.
*/
XrlCmdError ospfv3_0_1_set_retransmit_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* Update packet will have their age incremented by this amount before
* transmission. This value should take into account transmission and
* propagation delays; it must be greater than zero.
*/
XrlCmdError ospfv3_0_1_set_inftransdelay(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& delay);
/**
* Used in the designated router election.
*/
XrlCmdError ospfv3_0_1_set_router_priority(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* The interval between hello messages.
*/
XrlCmdError ospfv3_0_1_set_hello_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* The period to wait before considering a router dead.
*/
XrlCmdError ospfv3_0_1_set_router_dead_interval(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const uint32_t& interval);
/**
* Toggle the passive status of an interface.
*/
XrlCmdError ospfv3_0_1_set_passive(
// Input values,
const string& ifname,
const string& vifname,
const IPv4& area,
const bool& passive);
/**
* If this is a "stub" or "nssa" area toggle the sending of a default
* route.
*/
XrlCmdError ospfv3_0_1_originate_default_route(
// Input values,
const IPv4& area,
const bool& enable);
/**
* Set the StubDefaultCost, the default cost sent in a default route in a
* "stub" or "nssa" area.
*/
XrlCmdError ospfv3_0_1_stub_default_cost(
// Input values,
const IPv4& area,
const uint32_t& cost);
/**
* Toggle the sending of summaries into "stub" or "nssa" areas.
*/
XrlCmdError ospfv3_0_1_summaries(
// Input values,
const IPv4& area,
const bool& enable);
/**
* Add area range.
*/
XrlCmdError ospfv3_0_1_area_range_add(
// Input values,
const IPv4& area,
const IPv6Net& net,
const bool& advertise);
/**
* Delete area range.
*/
XrlCmdError ospfv3_0_1_area_range_delete(
// Input values,
const IPv4& area,
const IPv6Net& net);
/**
* Change the advertised state of this area.
*/
XrlCmdError ospfv3_0_1_area_range_change_state(
// Input values,
const IPv4& area,
const IPv6Net& net,
const bool& advertise);
/**
* Enable/Disable tracing.
*
* @param tvar trace variable.
*
* @param enable set to true to enable false to disable.
*/
XrlCmdError ospfv3_0_1_trace(
// Input values,
const string& tvar,
const bool& enable);
/**
* Get a single lsa from an area. A stateless mechanism to get LSAs. The
* client of this interface should start from zero and continue to request
* LSAs (incrementing index) until toohigh becomes true.
*
* @param area database that is being searched.
*
* @param index into database starting from 0.
*
* @param valid true if a LSA has been returned. Some index values do not
* contain LSAs. This should not be considered an error.
*
* @param toohigh true if no more LSA exist after this index.
*
* @param self if true this LSA was originated by this router.
*
* @param lsa if valid is true the LSA at index.
*/
XrlCmdError ospfv3_0_1_get_lsa(
// Input values,
const IPv4& area,
const uint32_t& index,
// Output values,
bool& valid,
bool& toohigh,
bool& self,
vector<uint8_t>& lsa);
/**
* Get a list of all the configured areas.
*/
XrlCmdError ospfv3_0_1_get_area_list(XrlAtomList& areas);
/**
* Get the list of neighbours.
*/
XrlCmdError ospfv3_0_1_get_neighbour_list(
// Output values,
XrlAtomList& areas);
/**
* Get information on a neighbour.
*
* @param nid neighbour ID returned by the get_neighbour_list.
*
* @param valid true if valid information has been returned.
*
* @param address of neighbour in txt to allow IPv4 and IPv6.
*
* @param interface with which the neighbour forms the adjacency.
*
* @param state of the adjacency.
*
* @param rid router ID of the neighbour.
*
* @param priority of the neighbour (used for DR election).
*
* @param area the neighbour is in.
*
* @param opt value in the neighbours hello packet.
*
* @param dr designated router.
*
* @param bdr backup designated router.
*
* @param up time in seconds that the neigbour has been up.
*
* @param adjacent time in seconds that there has been an adjacency.
*/
XrlCmdError ospfv3_0_1_get_neighbour_info(
// Input values,
const uint32_t& nid,
// Output values,
string& address,
string& interface,
string& state,
IPv4& rid,
uint32_t& priority,
uint32_t& deadtime,
IPv4& area,
uint32_t& opt,
IPv4& dr,
IPv4& bdr,
uint32_t& up,
uint32_t& adjacent);
/**
* Clear the OSPF database.
*/
XrlCmdError ospfv3_0_1_clear_database();
private:
// Ospf<IPv4>& _ospf_ipv4;
Ospf<IPv6>& _ospf_ipv6;
// XrlIO<IPv4>& _xrl_io_ipv4;
XrlIO<IPv6>& _xrl_io_ipv6;
};
#endif // __OSPF_XRL_TARGET_HH__
Generated by: pavlin on kobe.xorp.net on Wed Jan 7 19:11:07 2009, using kdoc 2.0a54+XORP.