/*
 * Copyright (c) 2001-2009 XORP, Inc.
 * See the XORP LICENSE.lgpl 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/olsr4.xrls,v 1.4 2009/01/05 18:31:15 jtc Exp $
 */

/**
 *  Get name of Xrl Target
 */
finder://olsr4/common/0.1/get_target_name->name:txt

/**
 *  Get version string from Xrl Target
 */
finder://olsr4/common/0.1/get_version->version:txt

/**
 *  Get status of Xrl Target
 */
finder://olsr4/common/0.1/get_status->status:u32&reason:txt

/**
 *  Request clean shutdown of Xrl Target
 */
finder://olsr4/common/0.1/shutdown

/**
 *  Announce target birth to observer.
 *
 *  @param target_class the target class name.
 *
 *  @param target_instance the target instance name.
 */
finder://olsr4/finder_event_observer/0.1/xrl_target_birth?target_class:txt&target_instance:txt

/**
 *  Announce target death to observer.
 *
 *  @param target_class the target class name.
 *
 *  @param target_instance the target instance name.
 */
finder://olsr4/finder_event_observer/0.1/xrl_target_death?target_class:txt&target_instance:txt

/**
 *  Method invoked by target implementing socket4/0.1 when a packet arrives
 *  from an IPv4 source.
 *
 *  @param sockid the identifier associated with socket where the event
 *  occurred.
 *
 *  @param if_name the interface name the packet arrived on, if known. If
 *  unknown, then it is an empty string.
 *
 *  @param vif_name the vif name the packet arrived on, if known. If unknown,
 *  then it is an empty string.
 *
 *  @param src_host the originating host.
 *
 *  @param src_port the originating IP port.
 *
 *  @param data the data received.
 */
finder://olsr4/socket4_user/0.1/recv_event?sockid:txt&if_name:txt&vif_name:txt&src_host:ipv4&src_port:u32&data:binary

/**
 *  Method invoked by target implementing socket4/0.1 when a connection request
 *  is received from an IPv4 source. It applies only to TCP sockets.
 *
 *  @param sockid the identifier associated with socket where the event
 *  occurred.
 *
 *  @param src_host the connecting host.
 *
 *  @param src_port the connecting IP port.
 *
 *  @param new_sockid the identifier associated with the new socket that has
 *  been created to handle the new connection.
 *
 *  @param accept if true, the connection request has been accepted, otherwise
 *  it has been rejected.
 */
finder://olsr4/socket4_user/0.1/inbound_connect_event?sockid:txt&src_host:ipv4&src_port:u32&new_sockid:txt->accept:bool

/**
 *  Method invoked by target implementing socket4/0.1 when an outgoing
 *  connection request originated by the local host is completed. It applies
 *  only to TCP sockets. Note that if the connection failed, the error_event
 *  will be dispatched instead.
 *
 *  @param sockid the identifier associated with socket where the event
 *  occurred.
 */
finder://olsr4/socket4_user/0.1/outgoing_connect_event?sockid:txt

/**
 *  Method invoked by target implementing socket4/0.1 when an error occurs.
 *
 *  @param sockid the identifier associated with socket where the event
 *  occurred.
 *
 *  @param error a textual description of the error.
 *
 *  @param fatal indication of whether socket is shutdown because of error.
 */
finder://olsr4/socket4_user/0.1/error_event?sockid:txt&error:txt&fatal:bool

/**
 *  Method invoked by target implementing socket4/0.1 when the peer has closed
 *  the connection. It applies only to TCP sockets. Note that the socket itself
 *  is left open and must be explicitly closed.
 *
 *  @param sockid the identifier associated with socket where the event
 *  occurred.
 */
finder://olsr4/socket4_user/0.1/disconnect_event?sockid:txt

/**
 *  Configure a policy filter.
 *
 *  @param filter the identifier of the filter to configure.
 *
 *  @param conf the configuration of the filter.
 */
finder://olsr4/policy_backend/0.1/configure?filter:u32&conf:txt

/**
 *  Reset a policy filter.
 *
 *  @param filter the identifier of the filter to reset.
 */
finder://olsr4/policy_backend/0.1/reset?filter:u32

/**
 *  Push all available routes through all filters for re-filtering.
 */
finder://olsr4/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.
 */
finder://olsr4/policy_redist4/0.1/add_route4?network:ipv4net&unicast:bool&multicast:bool&nexthop:ipv4&metric:u32&policytags:list

/**
 *  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.
 */
finder://olsr4/policy_redist4/0.1/delete_route4?network:ipv4net&unicast:bool&multicast:bool

/**
 *  Enable profiling
 *
 *  @param pname profile variable
 */
finder://olsr4/profile/0.1/enable?pname:txt

/**
 *  Disable profiling
 *
 *  @param pname profile variable
 */
finder://olsr4/profile/0.1/disable?pname:txt

/**
 *  Get log entries.
 *
 *  @param pname profile variable
 *
 *  @param instance_name to send the profiling info to.
 */
finder://olsr4/profile/0.1/get_entries?pname:txt&instance_name:txt

/**
 *  Clear the profiling entries
 *
 *  @param pname profile variable
 */
finder://olsr4/profile/0.1/clear?pname:txt

/**
 *  List all the profiling variables registered with this target.
 */
finder://olsr4/profile/0.1/list->info:txt

/**
 *  Enable/Disable tracing.
 *
 *  @param tvar trace variable.
 *
 *  @param enable set to true to enable, false to disable.
 */
finder://olsr4/olsr4/0.1/trace?tvar:txt&enable:bool

/**
 *  Clear all OLSR protocol databases.
 */
finder://olsr4/olsr4/0.1/clear_database

/**
 *  Set the willingness-to-forward.
 *
 *  @param willingness the new willingness-to-forward.
 */
finder://olsr4/olsr4/0.1/set_willingness?willingness:u32

/**
 *  Get the willingness-to-forward.
 */
finder://olsr4/olsr4/0.1/get_willingness->willingness:u32

/**
 *  Set the MPR_COVERAGE.
 *
 *  @param coverage the new MPR_COVERAGE value.
 */
finder://olsr4/olsr4/0.1/set_mpr_coverage?coverage:u32

/**
 *  Get the MPR_COVERAGE.
 */
finder://olsr4/olsr4/0.1/get_mpr_coverage->coverage:u32

/**
 *  Set the TC_REDUNDANCY.
 */
finder://olsr4/olsr4/0.1/set_tc_redundancy?redundancy:txt

/**
 *  Get the TC_REDUNDANCY.
 */
finder://olsr4/olsr4/0.1/get_tc_redundancy->redundancy:txt

/**
 *  Enable/disable TC fisheye mode.
 *
 *  @param enabled true to enable fisheye, false to disable it.
 */
finder://olsr4/olsr4/0.1/set_tc_fisheye?enabled:bool

/**
 *  Get the current TC fisheye mode.
 */
finder://olsr4/olsr4/0.1/get_tc_fisheye->enabled:bool

/**
 *  Set the current HNA base cost metric.
 */
finder://olsr4/olsr4/0.1/set_hna_base_cost?metric:u32

/**
 *  Get the current HNA base cost metric.
 */
finder://olsr4/olsr4/0.1/get_hna_base_cost->metric:u32

/**
 *  Set the HELLO_INTERVAL.
 *
 *  @param interval the new HELLO_INTERVAL.
 */
finder://olsr4/olsr4/0.1/set_hello_interval?interval:u32

/**
 *  Get the HELLO_INTERVAL.
 */
finder://olsr4/olsr4/0.1/get_hello_interval->interval:u32

/**
 *  Set the REFRESH_INTERVAL.
 *
 *  @param interval the new REFRESH_INTERVAL.
 */
finder://olsr4/olsr4/0.1/set_refresh_interval?interval:u32

/**
 *  Get the REFRESH_INTERVAL.
 */
finder://olsr4/olsr4/0.1/get_refresh_interval->interval:u32

/**
 *  Set the TC_INTERVAL.
 *
 *  @param interval the new TC_INTERVAL.
 */
finder://olsr4/olsr4/0.1/set_tc_interval?interval:u32

/**
 *  Get the TC_INTERVAL.
 */
finder://olsr4/olsr4/0.1/get_tc_interval->interval:u32

/**
 *  Set the MID_INTERVAL.
 *
 *  @param interval the new MID_INTERVAL.
 */
finder://olsr4/olsr4/0.1/set_mid_interval?interval:u32

/**
 *  Get the MID_INTERVAL.
 */
finder://olsr4/olsr4/0.1/get_mid_interval->interval:u32

/**
 *  Set the HNA_INTERVAL.
 *
 *  @param interval the new HNA_INTERVAL.
 */
finder://olsr4/olsr4/0.1/set_hna_interval?interval:u32

/**
 *  Get the HNA_INTERVAL.
 */
finder://olsr4/olsr4/0.1/get_hna_interval->interval:u32

/**
 *  Set the DUP_HOLD_TIME.
 *
 *  @param dup_hold_time the new DUP_HOLD_TIME.
 */
finder://olsr4/olsr4/0.1/set_dup_hold_time?dup_hold_time:u32

/**
 *  Get the DUP_HOLD_TIME.
 */
finder://olsr4/olsr4/0.1/get_dup_hold_time->dup_hold_time:u32

/**
 *  Set the main address.
 *
 *  @param addr Our main IPv4 address which OLSR uses as a router ID.
 */
finder://olsr4/olsr4/0.1/set_main_address?addr:ipv4

/**
 *  Get the main address.
 */
finder://olsr4/olsr4/0.1/get_main_address->addr:ipv4

/**
 *  Create an IPv4 address binding for OLSR. OLSR must be bound to a given
 *  protocol address on each interface, which means interface bindings in
 *  OLSRv1 must be keyed by interface name as well as protocol address. Only a
 *  single IPv4 address may be thus bound, and the address must be supplied
 *  when the binding is created. This is to workaround the lack of RFC 3927
 *  link-scoped IPv4 capability in most IPv4 implementations. The addition of
 *  address is not instantaneous. OLSR has to instantiate state in the FEA to
 *  send and receive packets. Once instantiated, the address must be explicitly
 *  enabled with the set_binding_enabled XRL.
 *
 *  @param ifname the interface that owns vif that has addr
 *
 *  @param vifname virtual interface owning addr
 *
 *  @param local_addr the address to be added.
 *
 *  @param local_port the port to listen for control traffic on.
 *
 *  @param all_nodes_addr the address to use for transmission.
 *
 *  @param all_nodes_port the port to use for transmission.
 */
finder://olsr4/olsr4/0.1/bind_address?ifname:txt&vifname:txt&local_addr:ipv4&local_port:u32&all_nodes_addr:ipv4&all_nodes_port:u32

/**
 *  Destroy an IPv4 address binding for OLSR.
 *
 *  @param ifname the interface to unbind.
 *
 *  @param vifname the vif to unbind.
 */
finder://olsr4/olsr4/0.1/unbind_address?ifname:txt&vifname:txt

/**
 *  Set the enabled state of an IPv4 address binding for OLSR.
 *
 *  @param ifname the interface to set enabled state for.
 *
 *  @param vifname the vif to set enabled state for.
 *
 *  @param enabled true if OLSR is to be configured administratively up on the
 *  interface, false if it is to be configured down.
 */
finder://olsr4/olsr4/0.1/set_binding_enabled?ifname:txt&vifname:txt&enabled:bool

/**
 *  Get the state of an IPv4 address binding for OLSR.
 *
 *  @param ifname the interface to query.
 *
 *  @param vifname the vif to qurery
 *
 *  @param enabled true if OLSR is configured administratively up on the given
 *  interface.
 */
finder://olsr4/olsr4/0.1/get_binding_enabled?ifname:txt&vifname:txt->enabled:bool

/**
 *  Change the UDP address and port where OLSR listens for control traffic on
 *  this interface. In order to do this the process must tell the FEA to tear
 *  down and re-bind the control traffic socket.
 *
 *  @param ifname the name of the interface.
 *
 *  @param vifname the name of the vif.
 *
 *  @param local_addr the new local IPv4 address.
 *
 *  @param local_port the new local port number.
 */
finder://olsr4/olsr4/0.1/change_local_addr_port?ifname:txt&vifname:txt&local_addr:ipv4&local_port:u32

/**
 *  Change the address where OLSR sends control traffic on the given interface.
 *  By default OLSR will attempt to use the all-ones broadcast address.
 *  Currently multicast addresses are NOT supported.
 *
 *  @param ifname the name of the interface.
 *
 *  @param vifname the name of the vif.
 *
 *  @param all_nodes_addr the address to use.
 *
 *  @param all_nodes_port the port to use.
 */
finder://olsr4/olsr4/0.1/change_all_nodes_addr_port?ifname:txt&vifname:txt&all_nodes_addr:ipv4&all_nodes_port:u32

/**
 *  Get the list of interfaces currently configured for OLSR. Return a list of
 *  u32 type values. Each value is an internal ID that can be used with the
 *  get_interface_info XRL.
 */
finder://olsr4/olsr4/0.1/get_interface_list->interfaces:list

/**
 *  Get the per-interface information for the given interface.
 *
 *  @param faceid interface ID returned by get_interface_list.
 *
 *  @param ifname the name of the interface.
 *
 *  @param vifname the name of the vif.
 *
 *  @param local_addr the IPv4 address where OLSR is listening.
 *
 *  @param local_port the UDP port where OLSR is listening.
 *
 *  @param all_nodes_addr the IPv4 address where OLSR sends packets.
 *
 *  @param all_nodes_port the UDP port where OLSR sends packets.
 */
finder://olsr4/olsr4/0.1/get_interface_info?faceid:u32->ifname:txt&vifname:txt&local_addr:ipv4&local_port:u32&all_nodes_addr:ipv4&all_nodes_port:u32

/**
 *  Set the edge cost of an interface/vif.
 *
 *  @param ifname the name of the interface.
 *
 *  @param vifname the name of the vif.
 *
 *  @param cost the new edge cost of the interface.
 */
finder://olsr4/olsr4/0.1/set_interface_cost?ifname:txt&vifname:txt&cost:u32

/**
 *  Get the per-interface statistics for the given interface.
 *
 *  @param ifname the interface to query.
 *
 *  @param vifname the vif to qurery
 *
 *  @param bad_packets the number of bad packets received.
 *
 *  @param bad_messages the number of bad messages received.
 *
 *  @param messages_from_self the number of messages which appeared to be from
 *  our own main address.
 *
 *  @param unknown_messages the number of messages which could not be decoded.
 *
 *  @param duplicates the number of messages which appeared to be duplicates,
 *  according to histogram based duplicate detection.
 *
 *  @param forwarded the number of messages which have been forwarded to the
 *  rest of the OLSR topology on this interface.
 */
finder://olsr4/olsr4/0.1/get_interface_stats?ifname:txt&vifname:txt->bad_packets:u32&bad_messages:u32&messages_from_self:u32&unknown_messages:u32&duplicates:u32&forwarded:u32

/**
 *  Get the list of one-hop links. Return a list of u32 type values. Each value
 *  is an internal ID that can be used with the get_link_info XRL.
 */
finder://olsr4/olsr4/0.1/get_link_list->links:list

/**
 *  Get the information for a one-hop link. TODO: Add ETX support.
 *
 *  @param linkid Link entry ID returned by get_link_list.
 *
 *  @param local_addr the interface address of the local end of this link.
 *
 *  @param remote_addr the interface address of the remote end of this link.
 *
 *  @param main_addr the main address of the neighbor at the remote end of this
 *  link.
 *
 *  @param link_type the type of this link.
 *
 *  @param sym_time the time in seconds for which this link will be considered
 *  symmetric.
 *
 *  @param asym_time the time in seconds for which this link will be considered
 *  asymmetric.
 *
 *  @param hold_time the time in seconds until this link expires.
 */
finder://olsr4/olsr4/0.1/get_link_info?linkid:u32->local_addr:ipv4&remote_addr:ipv4&main_addr:ipv4&link_type:u32&sym_time:u32&asym_time:u32&hold_time:u32

/**
 *  Get the list of one-hop neighbors. Return a list of u32 type values. Each
 *  value is an internal ID that can be used with the get_neighbor_info XRL.
 */
finder://olsr4/olsr4/0.1/get_neighbor_list->neighbors:list

/**
 *  Get the information for a one-hop neighbor.
 *
 *  @param nid Neighbor entry ID returned by get_neighbor_list.
 *
 *  @param main_addr the main address of this neighbor.
 *
 *  @param willingness the willingness of this neighbor to forward.
 *
 *  @param degree the number of symmetric strict neighbors of this neighbor,
 *  excluding one-hop neighbors and this node.
 *
 *  @param link_count the number of links to this neighbor.
 *
 *  @param twohop_link_count the number of two-hop links which transit this
 *  neighbor as next-hop.
 *
 *  @param is_advertised true if this neighbor is in the Advertised Neighbor
 *  Set of this node.
 *
 *  @param is_sym true if this neighbor is symmetric.
 *
 *  @param is_mpr true if this neighbor is selected as an MPR by this node.
 *
 *  @param is_mpr_selector true if this neighbor chooses this node as an MPR.
 */
finder://olsr4/olsr4/0.1/get_neighbor_info?nid:u32->main_addr:ipv4&willingness:u32&degree:u32&link_count:u32&twohop_link_count:u32&is_advertised:bool&is_sym:bool&is_mpr:bool&is_mpr_selector:bool

/**
 *  Get the list of two-hop links. Return a list of u32 type values. Each value
 *  is an internal ID that can be used with the get_twohop_link_info XRL.
 */
finder://olsr4/olsr4/0.1/get_twohop_link_list->twohop_links:list

/**
 *  Get the information for a two-hop link. TODO: Add ETX support.
 *
 *  @param tlid two-hop link ID returned by get_twohop_link_list.
 *
 *  @param last_face_id the internal interface ID where advertisement of this
 *  two-hop link was last seen.
 *
 *  @param nexthop_addr the main address of the one-hop neighbor where this
 *  two-hop link exists.
 *
 *  @param dest_addr the main address of the two-hop neighbor at the remote end
 *  of this link.
 *
 *  @param hold_time the time in seconds until this two-hop link expires.
 */
finder://olsr4/olsr4/0.1/get_twohop_link_info?tlid:u32->last_face_id:u32&nexthop_addr:ipv4&dest_addr:ipv4&hold_time:u32

/**
 *  Get the list of two-hop neighbors. Return a list of u32 type values. Each
 *  value is an internal ID that can be used with the get_twohop_neighbor_info
 *  XRL.
 */
finder://olsr4/olsr4/0.1/get_twohop_neighbor_list->twohop_neighbors:list

/**
 *  Get the information for a two-hop neighbor.
 *
 *  @param tnid two-hop neighbor ID returned by get_twohop_neighbor_list.
 *
 *  @param main_addr the main address of this two-hop neighbor.
 *
 *  @param is_strict true if this two-hop neighbor is not also a two-hop
 *  neighbor.
 *
 *  @param link_count the number of two-hop links that exist to this two-hop
 *  neighbor.
 *
 *  @param reachability the number of MPR candidates which cover this two-hop
 *  neighbor.
 *
 *  @param coverage the number of selected MPRs which cover this two-hop
 *  neighbor.
 */
finder://olsr4/olsr4/0.1/get_twohop_neighbor_info?tnid:u32->main_addr:ipv4&is_strict:bool&link_count:u32&reachability:u32&coverage:u32

/**
 *  Get the list of learned Multiple Interface Declaration (MID) entries.
 *  Return a list of u32 type values. Each value is an internal ID that can be
 *  used with the get_mid_entry XRL.
 */
finder://olsr4/olsr4/0.1/get_mid_entry_list->mid_entries:list

/**
 *  Get the information contained in a MID entry.
 *
 *  @param midid MID entry ID returned by get_mid_entry_list.
 *
 *  @param main_addr the main address of the OLSR node
 *
 *  @param iface_addr the interface address being advertised.
 *
 *  @param distance the distance measured between this node and the origin of
 *  the MID packet containing this entry.
 *
 *  @param hold_time the time in seconds until this entry expires.
 */
finder://olsr4/olsr4/0.1/get_mid_entry?midid:u32->main_addr:ipv4&iface_addr:ipv4&distance:u32&hold_time:u32

/**
 *  Get the list of learned Topology Control (TC) entries. Return a list of u32
 *  type values. Each value is an internal ID that can be used with the
 *  get_tc_entry XRL.
 */
finder://olsr4/olsr4/0.1/get_tc_entry_list->tc_entries:list

/**
 *  Get the information contained in a TC entry.
 *
 *  @param tcid TC entry ID returned by get_tc_entry_list.
 *
 *  @param destination the main address of the advertised destination.
 *
 *  @param lasthop the main address of the node advertising this entry.
 *
 *  @param distance the distance measured between this node and the origin of
 *  the TC packet containing this entry.
 *
 *  @param seqno the advertised sequence number of this entry.
 *
 *  @param hold_time the time in seconds until this entry expires.
 */
finder://olsr4/olsr4/0.1/get_tc_entry?tcid:u32->destination:ipv4&lasthop:ipv4&distance:u32&seqno:u32&hold_time:u32

/**
 *  Get the list of learned external route (HNA) entries. Return a list of u32
 *  type values. Each value is an internal ID that can be used with the
 *  get_hna_entry XRL.
 */
finder://olsr4/olsr4/0.1/get_hna_entry_list->hna_entries:list

/**
 *  Get the information contained in a HNA entry.
 *
 *  @param hnaid HNA entry ID returned by get_hna_entry_list.
 *
 *  @param destination the main address of the advertised destination.
 *
 *  @param lasthop the main address of the node advertising this entry.
 *
 *  @param distance the distance measured between this node and the origin of
 *  the TC packet containing this entry.
 *
 *  @param hold_time the time in seconds until this entry expires.
 */
finder://olsr4/olsr4/0.1/get_hna_entry?hnaid:u32->destination:ipv4net&lasthop:ipv4&distance:u32&hold_time:u32

