PIM Functions¶
sth::emulation_pim_config¶
Purpose¶
Creates, modifies, or deletes one or more emulated Protocol Independent Multicast (PIM) routers on a Spirent HLTAPI chassis. PIM is a multicast routing protocol that uses the underlying unicast routing information base to make multicast routing decisions. PIM is not dependent on any unicast routing protocol.
Synopsis¶
Note
- M indicates that the argument is Mandatory .
- S indicates the argument is for
scaling
scenarios.
sth::emulation_pim_config [-mode {create|modify|delete|disable|disable_all|enable|activate| enable_all|active|inactive} M] [-handle device_handle>|<pim_session_handle>] [-port_handle <port_handle>] [-bidir_capable {1|0}] [-bs_period <1-3600> ] [-c_bsr_priority <0-255>] [-c_bsr_rp_addr <a.b.c.d>] [-c_bsr_rp_holdtime <1-65535>] [-c_bsr_rp_priority <0-255>] [-c_rp_addr <a.b.c.d>] [-c_rp_priority <0-255>] [-count <1-65535>] [-dr_priority <1-4294967295>] [-hello_holdtime <1-65535>] [-hello_interval <1-65535>] [-hello_max_delay <1-65535>] [-intf_ip_addr <a.b.c.d>] [-intf_ip_addr_step <a.b.c.d>] [-intf_ip_prefix_len <1-128>] [-ip_version {4|6}] [-join_prune_holdtime <1-65535>] [-join_prune_interval <1-65535>] [-link_local_intf_ip_addr <a:b:c:d:e:f:g:h>] [-link_local_intf_ip_addr_step <a:b:c:d:e:f:g:h>] [-link_local_intf_prefix_len <1-128>] [-mac_address_start <aa:bb:cc:dd:ee:ff>] [-neighbor_intf_ip_addr <a.b.c.d>] [-override_interval <100-32767>] [-pim_mode {sm|ssm}] [-port_handle <a.b.c.d>] [-prune_delay <100-32767>] [-prune_delay_enable {1|0}] [-router_id <a.b.c.d>] [-router_id_step <a.b.c.d>] [-source_group_mapping {fully_meshed|one_to_one} ] [-type {remote_rp | c_bsr} ] [-vlan_cfi {1|0} ] [-vlan_id <0-4095> ] [-vlan_id_mode {fixed|increment}] [-vlan_id_step <1-4094>] [-vlan_user_priority <0-7>] [-vlan_outer_id <0-4095>] [-vlan_outer_cfi {1|0}] [-vlan_outer_id_mode {fixed|increment}] [-vlan_outer_id_step <1-4094>] [-vlan_outer_user_priority <0-7>] [-tunnel_handle <gre_tunnel_handle>] [-expand {true|false} S]
Arguments¶
-
-bidir_capable
¶
Determines whether to send the BI-DIR option in Hello messages. Valid values are 0 (disabled) and 1 (enabled). The default is 0. If enabled, the BI-DIR option is included in the Hello messages. Spirent HLTAPI does not support the BI- DIR specification. However, Spirent HLTAPI does allow this option to be sent in the Hello message.
-
-bs_period
¶
Specifies the frequency in seconds with which bootstrap messages are transmitted. This option is applicable only if the PIM session is configured as a candidate-bootstrap router (C-BSR). Possible values range from 1 to 3600. The default is 60.
-
-c_bsr_priority
¶
Specifies the 8-bit priority of the emulated bootstrap router (BSR). Possible values range from 0 (lowest) to 255 (highest). The default is 192 for “-mode create”. This option is applicable only if the PIM session is configured as a candidate-bootstrap router (C-BSR).
-
-c_bsr_rp_addr
¶
Defines a list of the Rendezvous Point (RP) addresses to use in Bootstrap messages of a simulated C-BSR. You must also specify the -c_bsr_rp_handle when using this argument. RP lists must be of the same length.
-
-c_bsr_rp_holdtime
¶
Defines a list of the hold times specified by the candidate Rendezvous Point (RP) router to use in the Bootstrap messages of a simulated C-BSR. Possible values range from 1 to 65535. The default is 150. RP lists must be of the same length. You must specify the -c_bsr_rp_handle to use this option.
-
-c_bsr_rp_priority
¶
The priority specified by the candidate Rendezvous Point (RP) router. Possible values range from 0 to 255. The default is 0. RP lists must be of the same length. You must specify the -c_bsr_rp_handle to use this option.
-
-c_rp_addr
¶
Specifies the IP address of the Rendezvous Point (RP) being used in C-RP-Advertisement. This option is applicable only if the PIM session is configured as a candidate Rendezvous Point router (C-RP).
-
-c_rp_bsr_addr
¶
Specifies the IP address of the BSR to which the C-RP- Advertisement is sent. This option is applicable only if the PIM session is configured as a candidate Rendezvous Point router (C-RP).
-
-c_rp_group_addr
¶
Defines multicast group address to advertise in C-RP-Adv messages of a simulated C-RP. This represents a multicast group for which the C-RP can serve as RP. No default. This argument is Mandatory for create mode (-mode create). If it is a list, the size must be the same as -c_rp_group_prefix_len for create mode and the same as -c_rp_group_handle for modify mode. You must also specify the -c_rp_group_mode argument.
-
-c_rp_priority
¶
The priority specified by the candidate Rendezvous Point (RP) router. This value is sent as an option in the Hello message. Possible values range from 0 to 255. The default is 192 for create mode. This option is applicable only if the PIM session is configured as a candidate Rendezvous Point router (C-RP).
-
-count
¶
Defines the number of PIM routers to create on the interface. Possible values range from 1 to 65535. The default is 1.
-
-dr_priority
¶
The Designated Router (DR) priority of this router. This value is sent as an option in the Hello message. Possible values range from 1 to 4294967295. The default is 0.
-
-handle
¶
Specifies the PIM session of the router to create, modify, delete, enable or disable. For modify mode, specify only one handle. For delete, enable, disable,active or inactive, you can specify a list of handles. This argument is Mandatory for modify,delete, disable, disable_all, active and inactive modes. (Please refer to the description of the -mode argument for more information)
-
-hello_holdtime
¶
Defines the session expiration interval in seconds. The expiration interval determines how long to wait for a KEEPALIVE message before ending a PIM session for an emulated router. Spirent HLTAPI also uses the -hello_holdtime value to determine the interval between transmitted KEEPALIVE messages. The transmission interval is one-third of the session expiration interval. Possible values range from 1 to 65535. The default is 3.5 times the -hello_interval.
-
-hello_interval
¶
Specifies the amount of time, in seconds, between Hello messages. Possible values range from 1 to 65535. The default is 30.
-
-hello_max_delay
¶
Randomized interval, in seconds, for initial Hello message on boot up or triggered Hello message to a rebooting neighbor. Possible values range from 1 to 65535. The default is 5.
-
-intf_ip_addr
¶
Specifies the IP address of the emulated PIM router on the test port. The default is the (first) tester IP address configured for the link between the test port and SUT interface.
-
-intf_ip_addr_step
¶
Specifies the amount by which to increment the first interface IP address to generate each subsequent addresses for consecutive routers. The default (for “-mode create” only) is 0.0.0.1 for IPv4 addresses and 0::0100 for IPv6 addresses.
-
-intf_prefix_length
¶
Specifies the length of the network prefix, which is the network part of the IP address. For example, 24 indicates that the first 24 bits of the IP address are shared by all devices in the network. Possible values for IPv4 addresses range from 1 to 32; the default is 24, Possible values for IPv6 addresses range from 1 to 128; the default is 64.
-
-ip_version
¶
Specifies the IP version of the multicast traffic to be sent through the emulated PIM router. Possible values are 4 (for IPv4 address format) or 6 (for IPv6 address format). The default is 4.
-
-join_prune_holdtime
¶
Specifies the hold time, in seconds, a receiving router must keep the Join state alive to advertise Join/Prune messages. Possible values range from 1 to 65535. The default is 3.5 times the -join_prune_interval.
-
-join_prune_interval
¶
Specifies the frequency, in seconds, at which Join/Prune messages (also called “t_periodic” in RFCs) are sent. Possible values range from 1 to 65535. The default is 60.
-
-link_local_intf_ip_addr
¶
Specifies the link local address for the first session. The default is FE80::0.
-
-link_local_intf_ip_addr_step
¶
Specifies the link local address step value. The default is 0000::1
-
-link_local_intf_prefix_len
¶
Specifies the length of the link local address prefix. Possible values for IPv6 addresses range from 1 to 128; the default is 64.
-
-mac_address_start
¶
Specifies the MAC address for the first session created for the PIM configuration. The default is 00:10:94:00:00:02.
-
-mode
¶
Specifies the action to perform. Possible values are create, delete, disable, disable_all, enable, enable_all or active, inactive. There is no default, you must specify a mode. The modes are described below:
create - When -port_handle is provided, Spirent HLTAPI creates one or more emulated routers and starts router communication for those routers, or starts router traffic for existing routers associated with the specified port. To create routers, specify the -port_handle argument and additional arguments to supply address information for the emulated routers. To start existing routers, specify only the -port_handle and -mode arguments; in this case, Spirent HLTAPI starts communication for all PIM routers that are associated with the specified port. When -handle is provided, PIM session will be enabled over the specified device. modify - Changes the configuration for the emulated router identified by the -handle argument. You must specify a valid PIM session handle. See the description for -handle. delete - Deletes the PIM router specified in the -handle argument. You must specify a valid PIM session handle. (See the -handle argument description for more information.) active - Enables the PIM router specified by the -handle argument. You must specify a valid PIM session handle. (See the -handle argument description for more information.) inactive - Disables the PIM router specified by the -handle argument. You must specify a valid PIM session handle. (See the -handle argument description for more information.) The configuration for the router is retained when it is inactive and is available as configured if the router is active. activate - Used for ``Scaling`` scenarios. 1. Enables PIM devices and configures PIM parameters for the devices created via the sth::emulation_device_config function. This mode requires the value of param_handle as the input to the -handle option. Use this mode for ``Scaling`` scenarios. Refer to -count and -expand options under the ``sth::emulation_pim_config`` function for more information. For this mode, only the following set of options are valid:: dr_priority ip_version pim_mode 2. Creates devices and enables PIM protocol. Requires -port_handle and -block_mode options. For this mode, the following options are required/supported along with the options specified above:: -count -block_mode -block_name_index -name -vlan_id -vlan_outer_id -vlan_user_pri -vlan_id_count -vlan_id_repeatmode -vlan_outer_id_count -vlan_outer_user_pri -vlan_outer_id_repeatmode -router_id -router_id_step -router_id_ipv6 -router_id_ipv6_step -intf_ip_addr -intf_ip_addr_step -intf_prefix_len -gateway_ip_addr -gateway_ip_addr_step -mac_addr -mac_addr_step -link_local_ipv6_addr -link_local_ipv6_addr_step -intf_ipv6_addr -intf_ipv6_addr_step -intf_ipv6_prefix_len -link_local_ipv6_prefix_len -gateway_ipv6_addr -gateway_ipv6_addr_step -mac_addr_step_per_port -mac_addr_step_per_vlan -ip_step_per_port -ip_step_per_vlan -ipv6_step_per_vlan -ipv6_step_per_port -link_local_ipv6_step_per_port -link_local_ipv6_step_per_vlan .. note:: Please refer to the emulation_device_config documentation.
Note
Most options are generally configured in create or modify mode. Specifying “-mode disable” or “-mode disable_all”is the same as specifying “-mode delete”. Likewise, specifying “-mode enable” or “-mode enable_all” is the same as specifying “-mode create”.
For -mode create, When -handle is provided, the following options will be obsoleted:
-count -mac_address_start -intf_ip_addr -intf_ip_addr_step -intf_prefix_length -link_local_intf_ip_addr -link_local_intf_ip_addr_step -link_local_intf_prefix_len -gateway_ip_addr -gateway_ip_addr_step -router_id -router_id_step -vci -vci_step -vlan_cfi -vlan_id -vlan_id_mode -vlan_id_step -vlan_user_priority -vpi -vpi_step -tunnel_handle -vlan_outer_id -vlan_outer_id_mode -vlan_outer_id_step -vlan_outer_user_priority
-
-neighbor_intf_ip_addr
¶
A list of interface IP addresses of the PIM peer on the connected SUT interface. The default is the (first) SUT IP address configured for the link between the test port and SUT interface.
-
-override_interval
¶
The delay interval (Join/Prune override interval), in milliseconds, for randomizing the transmission time of override messages. Possible values range from 100 to 0x7FFF. The default is 2500.
-
-pim_mode
¶
Specifies the emulated router’s PIM mode, which determines whether the PIM global router is running PIM-Sparse Mode (PIM-SM) or PIM-Source Specific Mode (PIM-SSM) and whether the group configuration is (S,G) or (*,G)+RP. Possible values are:
sm - The PIM-SM protocol exists exclusively between routers. Hosts (sources or receivers) do not participate in the protocol. PIM-SM shares many of the common characteristics of a routing protocol, such as discovery messages, topology information, and error detection and notification. PIM-SM also differs from traditional protocols since it does not participate in any kind of exchange of databases. In PIM-SM mode, the router supports all three group types: (S,G), (*,*,RP), and (*,G). The default is sm. ssm - PIM Source Specific Mode is a method to augment PIM-SM multicast routing. PIM-SSM requires the first hop router to build shortest path trees to all possible destinations. This proposal bypasses the requirement for any rendezvous points. This is a way to simplify communications for smaller multicast groups. PIM-SSM is described in RFC 3569, "An Overview of Source-Specific Multicast (SSM)". In PIM-SSM mode, the router will not send Join/Prune messages for groups that are not (S,G). You cannot add (*,*,RP) or (*,G) groups.
-
-port_handle
¶
The port on which to create the emulated PIM router. This handle is returned by the
sth::connect
function. (Please refer to the description of the -mode argument for more information)
-
-prune_delay
¶
Expected message propagation delay (LAN prune delay) in milliseconds. Possible values range from 100 to 0x7FFF. The default is 500.
-
-prune_delay_enable
¶
Enables or disables the LAN prune delay. Valid values are 0 (disabled) and 1 (enable). The default is 0. Set this value to 1 to include the LAN Prune Delay option in PIM Hello messages.
-
-router_id
¶
Identifies the emulated PIM router. The router ID is a 32- bit value, represented in dot notation. The default is 192.85.1.3.
-
-router_id_step
¶
The step size is the increment used to assign IDs to routers. Use the -router_id_step argument along with the -router_id and -count arguments to create PIM routers on the interface. You must specify a step value when the -count value is greater than 1. The default is 0.0.0.1.
-
-source_group_mapping
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the distribution option from multicast groups to sources when adding PIM register groups. Possible values are:
fully_meshed - Each source is messed with all multicast group addresses one_to_one - One source is paired with one multicast group
The default value is one_to_one.
-
-type
¶
Configures a PIM session router on a test port to simulate one of the following:
remote_rp Designated Router using a remote rendezvous point router. This is the default value. c_rp C-RP (Candidate RP) that sends C-RP-Adv messages to be elected RP. This option is not supported. c_bsr C-BSR (Candidate BootStrap Router) that sends Bootstrap messages to be elected BSR.
-
-vlan_cfi
¶
Sets the canonical format indicator field in VLAN for the emulated router node. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 1. If set to 0, it indicates Token Ring and packets are dropped by Ethernet ports. If set to 0, it indicates the network is Ethernet.
-
-vlan_id
¶
The VLAN ID of the emulated router node. Possible values range from 0 to 4095. The default is 1.
-
-vlan_id_mode
¶
Specifies VLAN ID assignment for multiple router configurations when -count is greater than 1. Valid values are “fixed” or “increment”. If you specify “fixed”, all of the routers will be assigned the same VLAN ID (the value of the -vlan_id argument). If you specify “increment”, then Spirent HLTAPI assigns unique VLAN IDs. When you use increment mode, you must also specify the -vlan_id_step argument to define the increment value.
-
-vlan_id_step
¶
The value that Spirent HLTAPI uses to increment the VLAN ID. You must specify this step when you use specify “increment” for the -vlan_id_mode argument and the router count (-count) is greater than 1. Possible step values range from 1 to 4094.
-
-vlan_user_priority
¶
VLAN priority assigned to emulated router nodes on this port. Possible values range from 0 to 7. The default is 0.
-
-vlan_outer_id
¶
Spirent Extension (for Spirent HLTAPI only).
The outer VLAN ID of VLAN sub-interface. Possible values range from 0 to 4095. The default is 1. When you use -vlan_outer_id, you must specify -vlan_id.
-
-vlan_outer_cfi
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether the Canonical Format Indicator (CFI) value is set for the VLAN outer header. Possible values are 0 or 1. The default is 0.
-
-vlan_outer_id_mode
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies how Spirent TestCenter assigns VLAN tags to packets in the specified outer header when router count is greater than 1. Possible values are:
fixed - The outer VLAN ID is the same for all packets. The fixed outer VLAN ID is the value of the -vlan_outer_id argument. increment - For all packets, the outer VLAN tag ID increments by the step specified in the -vlan_outer_id_step argument.
-
-vlan_outer_id_step
¶
Spirent Extension (for Spirent HLTAPI only).
The amount by which to increment the specified outer VLAN ID (-vlan_outer_id) for subsequent packets. Possible values range from 1 to 4094. You must specify this step when you specify “increment” for the -vlan_outer_id_mode argument.
-
-vlan_outer_user_priority
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the VLAN priority to assign to the outer header. Possible values range from 0 to 7. The default is 0.
-
-tunnel_handle
¶
Specifies the GRE tunnel handle, an array value, initialized by the emulation_gre_config command. The router sends traffic through this tunnel.
-
-expand
¶
Spirent Extension (for Spirent HLTAPI only).
Determines whether to expand the specified PIM device parameters into emulated PIM device objects. It is used in
Scaling
test scenarios.When set to true, a list of emulated device handles (handle_list) with enabled PIM device configurations is created.
When set to false, only PIM parameters are configured with no handle returned.
Arguments Unsupported by Save as HLTAPI¶
None
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper¶
-
-intf_ip_prefix_length
¶
The prefix length on the interface. The default is 24.
-
-gateway_intf_ip_addr
¶
The gateway IP address of the port interface
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper¶
-reset
Note
For more information about Spirent HLTAPI Wrapper, refer to Chapter 4 Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer’s Reference.
Cisco-specific Arguments¶
The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:
-c_bsr_addr
-c_bsr_adv
-c_bsr_group_addr
-c_bsr_group_admin
-c_bsr_group_bidir
-c_bsr_group_prefix_len
-c_bsr_rp_handle
-c_bsr_rp_mode
-c_rp_adv
-c_rp_adv_holdtime
-c_rp_adv_interval
-c_rp_group_admin
-c_rp_group_bidir
-c_rp_group_handle
-c_rp_group_mod
-c_rp_group_prefix_len
-gre_checksum_enable
-gre_key_enable
-gre_key_in
-gre_key_out
-keepalive_period
-register_probe_time
-register_suppression_time
-mvpn_enable
-mvpn_pe_count
-mvpn_pe_ip
-mvpn_pe_ip_incr
-mvrf_count
-default_mdt_ip
-default_mdt_ip_incr
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
handle A handle or a list of handles that identify the routers created
by the ``sth::emulation_pim_config`` function.
handle_list
A list of emulated devices with enabled PIM configuratin created by
``sth::emulation_pim_config`` function when expand is set true.
status Success (1) or failure (0) of the operation.
log An error message (if the operation failed).
Description¶
The sth::emulation_pim_config
function creates, modifies, or deletes
an emulated PIM router. Use the -mode argument to specify the action to
perform. (See the -mode argument description for information about the
actions.)
When you create an emulated router, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated router will use for PIM communication. (The port handle value is contained in the keyed list returned by the connect function.)
In addition to specifying the port, you must also specify one or more of the following attributes which determine the protocols (routing and multicast traffic) and characteristics of the PIM communication:
- The PIM mode (sm or ssm) (the -pim_mode argument)
- The designated router priority (the -dr_priority argument)
- The ID for the emulated router on the network (the -router_id argument)
- The IP address for the PIM router (SUT) to communicate with (the -intf_ip_addr argument)
- The IP version (IP_V4 or IP_V6) of the multicast traffic to be sent through the router (the -ip_version argument)
Note
For IPv4 traffic, you also set the testerIp and ipv4PrefixLen attributes. For IPv6 traffic, you also set the ipv6TesterIp, ipv6TesterLinkLocal, and ipv6PrefixLen attributes.
- Support for subinterface access to VLANs (see the -vlan* arguments)
- Hello message settings (the -hello_holdtime, -hello_interval, and -hello_max_delay.arguments)
- Prune/Join characteristics (the -prune_delay, -prune_delay_enable, join_prune_holdtime, -override_interval, and -join_prune_interval arguments)
- Neighbor configuration (the -neighbor_intf_ip_addr argument).
- Bootstrap routing (the enableBSR, -c_bsr_priority, -c_bsr_rp_addr, and -bs_period, and -c_bsr_rp_holdtime arguments).
- Additional arguments such as bi-directional transmission (the -bidir_capable argument)
When you create a router, Spirent HLTAPI starts the router communication.
Once you start sessions by creating routers, Spirent HLTAPI handles all
of the message traffic for the emulated routers. During the test, use the
sth::emulation_pim_control
function to stop and re-start individual
routers. To stop and start all of the routers associated with a particular
port, use the disable and enable modes with the sth::emulation_pim_config
function. After you have created the routers for your test, use the
sth::emulation_pim_group_config
function to set up routes.
Examples¶
#### HLTAPI for Tcl ####
The following example creates a PIM router:
set returnedString [::sth::emulation_pim_config \
-port_handle $port1Handle \
-mode "create" -pim_mode "sm" \
-port_handle $port1Handle \
-count 1 -ip_version 4 -type "remote_rp" \
-router_id 41.1.0.2 -router_id_step 0.0.1.0 \
-intf_ip_addr 41.1.0.2 -intf_ip_addr_step 0.0.1.0 \
-intf_ip_prefix_len 24 \
-mac_address_start 00:00:00:00:00:05 \
-neighbor_intf_ip_addr {41.1.0.1} \
-c_bsr_rp_addr 220.1.1.1 -c_bsr_priority 1 \
-bidir_capable 0 \
-bs_period 60 -dr_priority 1 \
-hello_holdtime 105 -hello_interval 30 -hello_max_delay 30 \
-join_prune_holdtime 210 -join_prune_interval 60 \
-override_interval 100 \
-prune_delay 100 -prune_delay_enable 1]
The following example starts a PIM router:
keylget returnedString handle upStreamRtrList
::sth::emulation_pim_control \
-mode start \
-port_handle $port1Handle \
-handle $upStreamRtrList
Sample output for example shown above:
{router_id 41.1.0.2} {router_state NEIGHBOR} {upstream_neighbor_addr
41.1.0.1} {j_p_pdu_rx 0.000000} {bsm_rx 1.000000} {j_p_pdu_tx 4.000000}
{bsm_tx 0.000000} {hello_rx 2.000000} {crp_rx 0.000000} {hello_tx 3.000000}
{group_assert_rx 0.000000} {s_g_join_rx 0.000000} {s_g_join_tx 0.000000}
{handle router1} {reg_stop_rx 0.000000} {group_join_rx 0.000000}
{duration 45.136785984} {group_join_tx 20.000000} {reg_rx 0.000000} {status
1}
The following example creates a PIM session over a provided device:
puts "Config LDP--------------------"
set routerStatus [sth::emulation_ldp_config -mode create \
-port_handle $port1Handle \
-intf_ip_addr 13.25.0.2\
-loopback_ip_addr 13.25.0.1 \
-gateway_ip_addr 13.25.0.1\
-remote_ip_addr 13.25.0.2 \
-graceful_recovery_timer 55 \
-keepalive_interval 56 \
-reconnect_time 57 \
-recovery_time 58 \
-egress_label_mode exnull \
-label_adv on_demand \
-PIM_registration 1 \
]
puts "LDP: $routerStatus"
keylget routerStatus handle router
puts "Config PIM--------------------"
set routerStatus [sth::emulation_pim_config -mode create \
-handle $router\
-type remote_rp \
-ip_version 4 \
-dr_priority 5 \
]
puts "PIM: $routerStatus"
Sample output for example shown above:
Config LDP--------------------
LDP: {handle router1} {handles router1} {status 1}
Config PIM--------------------
PIM: {handle router1} {handles router1} {status 1}
The following example uses the function in Scaling
mode (-mode activate)
with -port_handle and -block_mode:
set pim_ret [sth::emulation_pim_config\
-mode activate \
-port_handle $port1\
-count 2 \
-block_mode ONE_DEVICE_PER_BLOCK\
-block_name_index 1\
-dr_priority 1\
-ip_version 6\
-pim_mode sm\
-vlan_id 444 \
-vlan_outer_id 333 \
-router_id 11.111.11.11 \
-router_id_step 0.0.0.2\
-mac_addr 00:11:11:11:11:11 \
-mac_addr_step 00:00:00:00:00:02 \
-mac_addr_step_per_port 00:00:00:00:01:01 \
-mac_addr_step_per_vlan {"" 00:00:00:00:00:01} \
-ip_step_per_port 0.0.0.5 \
-ip_step_per_vlan {"" 0.0.1.1} \
-intf_ipv6_prefix_len 65 \
-ipv6_step_per_vlan {::7 ::3} \
-ipv6_step_per_port ::5 \
-intf_prefix_len 22 \
-link_local_ipv6_step_per_port ::9 \
-link_local_ipv6_step_per_vlan {::7 ::3} \
-name DEVICE_BLOCK_PIM_ROUTER \
-vlan_user_pri 3 \
-vlan_id_count 2 \
-vlan_outer_id_count 1 \
-vlan_outer_user_pri 4 \
-router_id_ipv6 0101::011 \
-router_id_ipv6_step ::11 \
-intf_ip_addr 11.111.11.11 \
-gateway_ip_addr 11.111.11.1 \
-link_local_ipv6_addr fe80::2 \
-link_local_ipv6_addr_step ::1 \
-intf_ipv6_addr 1111::3e9 \
-intf_ipv6_addr_step ::1 \
-link_local_ipv6_prefix_len 64 \
-gateway_ipv6_addr 1111::1 \
-gateway_ipv6_addr_step ::1 \
-expand true \
]
Sample Output:
{param_handle emulateddevicegenparams1} {status 1} {handle_list {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4}} {handles {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4}} {handle {}}
#### HLTAPI for Python ####
To start the PIM router on the specified port:
device_ret0 = sth.emulation_pim_config (
mode = 'create',
prune_delay = '500',
hello_max_delay = '5',
override_interval = '2500',
prune_delay_enable = '1',
c_bsr_rp_addr = '16.0.0.1',
c_bsr_rp_holdtime = '150',
c_bsr_rp_priority = '3',
c_bsr_rp_mode = 'create',
tunnel_handle = gre_ret,
port_handle = port_handle[0],
vlan_cfi = '0',
vlan_id = '100',
vlan_user_priority = '7',
vlan_outer_user_priority= '7',
vlan_outer_cfi = '0',
vlan_outer_id = '300',
hello_interval = '30',
ip_version = '4',
bs_period = '60',
hello_holdtime = '105',
dr_priority = '1',
join_prune_interval = '60',
bidir_capable = '0',
pim_mode = 'sm',
join_prune_holdtime = '210',
type = 'c_bsr',
c_bsr_priority = '1',
router_id = '100.0.0.1',
mac_address_start = '00:10:94:00:00:01',
intf_ip_addr = '12.85.1.3',
intf_ip_prefix_len = '24',
neighbor_intf_ip_addr= '12.85.1.4');
Sample Output:
{'status': '1', 'handles': 'router1', 'handle': 'router1'}
#### HLTAPI for Perl ####
To start the PIM router on the specified port:
my %device_ret0 = sth::emulation_pim_config (
mode => 'create',
prune_delay => '500',
hello_max_delay => '5',
override_interval => '2500',
prune_delay_enable => '1',
c_bsr_rp_addr => '16.0.0.1',
c_bsr_rp_holdtime => '150',
c_bsr_rp_priority => '3',
c_bsr_rp_mode => 'create',
tunnel_handle => "$gre_ret",
port_handle => "$hport[1]",
vlan_cfi => '0',
vlan_id => '100',
vlan_user_priority => '7',
vlan_outer_user_priority=> '7',
vlan_outer_cfi => '0',
vlan_outer_id => '300',
hello_interval => '30',
ip_version => '4',
bs_period => '60',
hello_holdtime => '105',
dr_priority => '1',
join_prune_interval => '60',
bidir_capable => '0',
pim_mode => 'sm',
join_prune_holdtime => '210',
type => 'c_bsr',
c_bsr_priority => '1',
router_id => '100.0.0.1',
mac_address_start => '00:10:94:00:00:01',
intf_ip_addr => '12.85.1.3',
intf_ip_prefix_len => '24',
neighbor_intf_ip_addr=> '12.85.1.4');
Sample Output:
$VAR1 = 'status';
$VAR2 = '1';
$VAR3 = 'handles';
$VAR4 = 'router1';
$VAR5 = 'handle';
$VAR6 = 'router1';
End of Procedure Header
sth::emulation_pim_control¶
Purpose¶
Starts or restarts a PIM router for the specified port, or stops a PIM router from routing traffic for the specified ports or groups.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_pim_control [-mode {stop|start|restart|join|prune} M] [-port_handle <port_handle_list> M] [-group_member_handle <handle>] [-handle <PIM_session_handle_list>]
Arguments¶
-
-group_member_handle
¶
Sets one or more group member pool handles.
-
-handle
¶
Specifies a list of sessions on which to take the specified action: stop the router, start or restart the router, and join or prune groups.
-
-mode
¶
Specifies the action to be taken. This argument is Mandatory . Possible values are:
stop Stops the router on the specified port start Starts the router on the specified port. restart Stops and then starts the router on the specified port. join If -handle <PIM_session_handle> is specified, joins all groups on this session. If -group_member_handle <group_handle> is specified, joins only the specified groups. If no handle is provided, joins all of the session groups on this port. prune If "-handle <PIM_session_handle>" is specified, prunes all groups on this session. If "-group_member_handle <handle>" is specified, prunes only the specified groups. If no handle is provided, prunes all of the session groups on this port.
-
-port_handle
¶
Specifies a list of ports on which to take the specified action to stop the router, start or restart the router, and join or prune groups. This argument is Mandatory . If you did not specify a handle (-handle), the specified action (-mode) is applied to all session routers on this port. The port handle is returned by the
sth::connect
function.
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper¶
None
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper¶
-flap_interval
-flap
Note
For more information about Spirent HLTAPI Wrapper, refer to Chapter 4 Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer’s Reference.
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
stopped Stopped (1) or Running (0)
status Success (1) or failure (0) of the operation.
log An error message (if the operation failed).
Description¶
The sth::emulation_pim_control
function controls the routing of
traffic through the specified ports. You can use the function to perform
three actions: starting routers, stopping routers, and restarting routers.
When you call the sth::emulation_pim_control
function, you specify a port
handle. Spirent HLTAPI applies the specified action to all of the sessions
associated with the specified port.
Examples¶
#### HLTAPI for Tcl ####
To start the PIM router on the specified port:
::sth::emulation_pim_control \
-mode start \
-handle router1
-port $port1Handle
To stop the PIM router on the specified port:
::sth::emulation_pim_control \
-mode stop \
-port $port1Handle
To restart the PIM router on the specified port:
::sth::emulation_pim_control \
-mode restart \
-port $port1Handle
To join the PIM router on the specified port:
::sth::emulation_pim_control \
-mode join \
-port_handle $port1Handle \
-handle $router \
-group_member_handle $groupMemberHandle(1)
To prune the PIM router on the specified port:
::sth::emulation_pim_control \
-mode prune \
-port_handle $port1Handle \
-handle $router \
-group_member_handle $groupMemberHandle(2)
Note
groupMemberHandle(1) must be created by the ::sth::emulation_pim_group_config function before using either join or prune mode.
Sample Output:
{router_id 41.1.0.2} {router_state NEIGHBOR} {upstream_neighbor_addr
41.1.0.1} {j_p_pdu_rx 0.000000} {bsm_rx 1.000000} {j_p_pdu_tx 4.000000}
{bsm_tx 0.000000} {hello_rx 2.000000} {crp_rx 0.000000} {hello_tx 3.000000}
{group_assert_rx 0.000000} {s_g_join_rx 0.000000} {s_g_join_tx 0.000000}
{handle router1} {reg_stop_rx 0.000000} {group_join_rx 0.000000}
{duration 45.136785984} {group_join_tx 20.000000} {reg_rx 0.000000} {status
1}
#### HLTAPI for Python ####
To start an LSR:
ctrl_ret1 = sth.emulation_pim_control (
port_handle = port_handle[0],
mode = 'start');
Sample Output:
{'status': '1', 'handle': 'router1'}
#### HLTAPI for Perl ####
To start an LSR:
my %ctrl_ret1 = sth::emulation_pim_control (
port_handle => "$hport[1]",
mode => 'start');
Sample Output:
$VAR1 = 'status';
$VAR2 = '1';
$VAR3 = 'handle';
$VAR4 = 'router1';
End of Procedure Header
sth::emulation_pim_group_config¶
Purpose¶
Configures multicast groups added to a PIM session, which enables you to add (*,G) or (S,G) entries to a PIM session.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_pim_group_config [-mode {create|modify|delete} M] [-group_pool_handle <handle>] [-group_pool_mode {send | register}] [-session_handle <PIM_host_handle>] [-source_pool_handle <list of IP addresses] [-handle <PIM_group_membership_handle> ] [-interval <1-1000>] [-join_prune_per_interval <1-1000>] [-rate_control {0|1}] [-register_per_interval <1-1000>] [-register_stop_per_interval <1-1000>] [-rp_ip_addr <a.b.c.d>] [-wildcard_group {0|1}] [-count <integer>] [-ip_addr_start {<a.b.c.d> | <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>}] [-ip_addr_step <integer> | <a.b.c.d> | <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-ip_prefix_len <1-128>] [-num_groups <1-65535>] [-ip_group_mem_step <a.b.c.d> | <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-rp_ip_addr_step <a.b.c.d>]
Arguments¶
-
-group_pool_handle
¶
Specifies the name of the group (that is, the list of multicast IP addresses) to link to the session during create mode. Before specifying the group pool handle, use the
sth::emulation_multicast_group_config
function to add the group pool. See “Multicast APIs” in the “Spirent TestCenter HLTAPI Command Reference” document for information about the sth::emulation_multicast_group_config andsth::emulation_multicast_source_config
functions.
-
-group_pool_mode
¶
Specifies how the membership pool is used to process PIM messages. Possible values are:
send Send Join/Prunes (downstream DR) messages register Send Register and NULL Register messages (source DR) and receive Stop-Register messages
The default value is send.
-
-handle
¶
Sets group membership handle that associates group pools with a PIM host. The handle is returned after linking to the specified group pool in create mode. In modify mode, you must use the membership handle (-handle) in conjunction with the session handle (-session_handle) to identify the multicast group pools.
Note
The PIM hosts, specified by -session_handle, join the multicast groups, specified by the -group_pool_handle. So, both arguments are Mandatory for -mode create and -mode modify.
If -handle is not specified in modify mode, it will modify all the created PIM group memberships that are associated with the specified PIM host.
-
-interval
¶
Specifies the minimum gap, in milliseconds, between between successive PIM messages. If you specify 0, Spirent HLTAPI sends PIM messages as fast as possible. Possible values range from 1 to 1000. The default is 1000.
-
-join_prune_per_interval
¶
Specifies the number of Join/Prune messages sent per interval. Possible values range from 1 to 1000. The default is 1000.
-
-mode
¶
Specifies the action to perform. Possible values are create, modify, and delete. There is no default; you must specify a mode. The modes are described below:
create Starts emulation on the port specified with -handle and associates an existing multicast group pool (-group_pool_handle) with the specified PIM host (that is, joins the membership). modify Changes the configuration identified by the -handle argument by applying the parameters specified in subsequent arguments. delete Remove one group of pools from this session.
-
-rate_control
¶
Enables rate control on Join/Prune and register messages when set to 1 (enable). Possible values are 0 (disable) and 1 (enable). The default is 0.
-
-register_per_interval
¶
Specifies the number of Register messages sent per interval. Possible values range from 1 to 1000. The default is 100.
-
-register_stop_per_interval
¶
Specifies the number of Register Stop messages sent per interval. Possible values range from 1 to 1000. The default is 100.
-
-rp_ip_addr
¶
Specifies the IP address of Rendezvous Point router for the multicast group pool.
-
-session_handle
¶
Specifies the handle of the PIM host on which to configure the PIM group ranges.
-
-source_pool_handle
¶
Specifies the handle of the source pool (a list of non-multicast source IP addresses) to associate with the groups in mode create. Use this argument if the host requests only specific information within the multicast group specified by -group_pool_handle. Before specifying this argument, use the
sth::emulation_multicast_source_config
function to add source pools. See Multicast Functions for information about the sth::emulation_multicast_source_config andsth::emulation_multicast_group_config
functions.
-
-wildcard_group
¶
Specifies whether the emulated PIM router will join wildcard groups. Possible values are 1 (enable) and 0 (disable). When enabled, Join/Prune messages are sent. Wildcard groups take effect only when source-specific groups (S,G) are disabled (no source pool). The default is 0. For wildcard groups, you must specify the RPR address (-rp_ip_addr).
-
-count
¶
Specifies number of PIM group blocks. The default value is 1.
-
-ip_addr_start
¶
Specifies the first multicast group address in the group pool. The default for IPv4 is 224.0.0.1. If you do not enter an IPv6 address, the default IPv4 address is used. This option will create multicast groups and map to PIM group sessions when -group_pool_handle option is not configured.
-
-ip_addr_step
¶
Specifies the amount by which to increment the first multicast group address to generate each subsequent group address in the group pool. This argument can be configured either in integer format or in IPv4 address format or in IPv6 address format. The IPv4 or IPv6 address is automatically converted to an integer value and then used as the address increment. Possible values range from 0 to 4294967295. The default value is 1. This option will create multicast groups and map to PIM group sessions when -group_pool_handle option is not configured.
-
-ip_prefix_len
¶
Sets the bit in the address by which to change the step value to generate each subsequent address in the pool. Possible values range from 1 to 128. The default for IPv4 addresses is 32. The default for IPv6 is 128. This option will create multicast groups and map to PIM group sessions when -group_pool_handle option is not configured.
-
-num_groups
¶
Specifies the number of multicast groups in the group pool. Possible values range from 1 to 65535. The default is 1. This option will create multicast groups and map to PIM group sessions when -group_pool_handle option is not configured.
-
-ip_group_mem_step
¶
Specifies the amount by which to increment the IP address between the specified multicast groups. This argument can be configured either in IPv4 address format or in IPv6 address format. This option will create multicast groups and map to PIM group sessions when -group_pool_handle option is not configured.
-
-rp_ip_addr_step
¶
Specifies the step value to increment IP address of Rendezvous Point router for the multicast group pool. This option will be used when -group_pool_handle option is not configured.
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper¶
-
-s_g_rpt_group
¶
When enabled, Join/Prune messages are sent. Possible values are 1 (enable) and 0 (disable). Takes effect only if source-specific groups are enabled.
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper¶
-join_prune_aggregation_factor
-flap_interval
-spt_switchover
-switch_over_interval
Note
For more information about Spirent HLTAPI Wrapper, refer to Chapter 4 Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer’s Reference.
Cisco-specific Arguments¶
The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:
-border_bit
-group_pool_mode
-join_prune_aggregation_factor
-s_g_rpt_group
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
handle
Identifies the handle of the group (PIM_group_config_handle)
created by the ``sth::emulation_pim_group_config`` function.
group_pool_handle
Identifies the group pool handle used by the
``sth::emulation_pim_group_config`` function to configure or modify
the group member.
status
Success (1) or failure (0) of the operation.
log
An error message (if the operation failed).
Description¶
The sth::emulation_pim_group_config
function configures or
modifies a group of PIM hosts where each group share a
set of common characteristics. Use the -mode argument to specify
the action to perform. (See the -mode argument description for information
about the actions.)
Before using this function, you must specify “-mode create” when
configuring PIM host emulation on a port and initialize the port handle
argument (using the sth::emulation_pim_config
function).
You can link groups of multicast IP addresses to any interested host or just a subset of IP addresses within each group.
Examples¶
#### HLTAPI for Tcl ####
The following example configures the hosts, represented by “upStreamRtr”, to subscribe to the multicast group(s) represented by “mcastGrpPoolHandle(1)”:
set returnedString [::sth::emulation_pim_group_config \
-mode "create" \
-group_pool_handle $mcastGrpPoolHandle(1) \
-session_handle $upStreamRtr\
-interval 0 \
-rate_control 0 \
-rp_ip_addr 220.1.1.1 \
-wildcard_group 0]
Sample output for example shown above:
{handle pimv4groupblk1} {group_pool_handle ipv4group1} {status 1}
The following example configures 5 PIM sessions on each PIM router, and each PIM session creates a multicast group and mapped with it. The IP address of Rendezvous Point router will be increment by the rp_ip_addr_step value for subsequent PIM sessions.
- set pim_group0 [sth::emulation_pim_group_config
-mode create -session_handle “router1 router2 router3” -interval 1 -rate_control 0 -count 5 -rp_ip_addr 10.1.1.1 -ip_addr_start 224.1.0.1 -ip_addr_step 3 -ip_prefix_len 21 -num_groups 3 -ip_group_mem_step 0.1.1.0 -rp_ip_addr_step 0.1.1.1 ]
Sample output for example shown above:
{handle {pimv4groupblk1 pimv4groupblk2 pimv4groupblk3 pimv4groupblk4
pimv4groupblk5 pimv4groupblk6 pimv4groupblk7 pimv4groupblk8 pimv4groupblk9
pimv4groupblk10 pimv4groupblk11 pimv4groupblk12 pimv4groupblk13 pimv4groupblk14
pimv4groupblk15}} {group_pool_handle {ipv4group1 ipv4group2 ipv4group3 ipv4group4
ipv4group5 ipv4group6 ipv4group7 ipv4group8 ipv4group9 ipv4group10 ipv4group11
ipv4group12 ipv4group13 ipv4group14 ipv4group15}} {status 1}
#### HLTAPI for Python ####
The following example configures the hosts, represented by “session_handle”, to subscribe to the multicast group(s) represented by “group_pool_handle”:
device_ret0_pim_group2 = sth.emulation_pim_group_config (
mode = 'create',
session_handle = session_handle,
group_pool_handle = group_pool_handle,
interval = '1',
rate_control = '1',
join_prune_per_interval= '200',
register_per_interval= '200',
register_stop_per_interval= '200',
rp_ip_addr = '12.0.0.1');
Sample Output:
{'status': '1', 'group_pool_handle': 'ipv4group2', 'handle'::
'pimv4groupblk4', 'source_pool_handle': 'multicastSourcePool(2)'}
#### HLTAPI for Perl ####
The following example configures the hosts, represented by “session_handle”, to subscribe to the multicast group(s) represented by “group_pool_handle”:
my %device_ret0_pim_group1 = sth::emulation_pim_group_config (
mode => 'create',
session_handle => "$session_handle",
group_pool_handle => "$group_pool_handle",
interval => '1',
rate_control => '1',
join_prune_per_interval=> '200',
register_per_interval=> '200',
register_stop_per_interval=> '200',
rp_ip_addr => '12.0.0.1');
Sample Output:
$VAR1 = 'group_pool_handle';
$VAR2 = 'ipv4group1';
$VAR3 = 'handle';
$VAR4 = 'pimv4groupblk2';
$VAR5 = 'status';
$VAR6 = '1';
$VAR7 = 'source_pool_handle';
$VAR8 = 'multicastSourcePool(1)';
End of Procedure Header
sth::emulation_pim_info¶
Purpose¶
Returns statistics about the PIM group activity on the specified handle. Statistics include the connection status and number and type of messages sent and received from the specified port.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_pim_info [-handle <PIM_session_handle> M]
Arguments¶
-
-handle
¶
Specifies the PIM session handle upon which host emulation is configured. This argument is Mandatory . This value is returned by the
sth::emulation_pim_config
function.
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
status
Retrieves a value indicating the success (1) or failure
(0) of the operation.
log
Retrieves a message describing the last error that
occurred during the operation. If the operation was
successful - {status 1} - the log value is null.
bsm_tx
Number of Bootstrap messages sent.
bsm_rx
Number of Bootstrap messages received.
crp_tx
Number of candidate Rendezvous Point (RP)
Advertisements sent.
crp_rx
Number of candidate Rendezvous Point (RP)
Advertisements received.
hello_tx
Number of PIM-Hello messages sent.
hello_rx
Number of PIM-Hello messages received.
group_join_tx
Number of (*,G) Join messages sent.
group_join_rx
Number of (*,G) Join messages received.
j_p_pdu_tx
Number of Join/Prune messages sent.
j_p_pdu_rx
Number of Join/Prune messages received.
reg_tx
Number of Register messages sent.
reg_rx
Number of Register messages received.
reg_stop_tx
Number of RegisterStop messages sent.
reg_stop_rx
Number of RegisterStop messages received.
s_g_join_tx
Number of (S,G) Join messages sent.
s_g_join_rx
Number of (S,G) Join messages received.
Cisco-specific Arguments¶
The following keys are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:
duration
s_g_assert_tx
s_g_assert_rx
null_reg_tx
null_reg_rx
bsm_rp_tx
bsm_rp_rx
bsm_group_tx
bsm_group_rx
graft_tx
graft_rx
graft_ack_tx
graft_ack_rx
group_assert_tx
group_assert_rx
group_prune_tx
group_prune_rx
s_g_prune_tx
s_g_prune_rx
Description¶
The sth::emulation_pim_info
function provides information about the
messages sent and received on the specified PIM handle.
This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0) and an error message. Function return values are formatted as a keyed list (supported by the Tcl extension software - TclX). Use the TclX function keylget to retrieve data from the keyed list. (See Return Values for a description of each key.)
Examples¶
#### HLTAPI for Tcl ####
Sample Input:
sth::emulation_pim_info -handle $handle1
Sample Output:
{router_id 41.1.0.2} {router_state NEIGHBOR} {upstream_neighbor_addr
41.1.0.1} {j_p_pdu_rx 0.000000} {bsm_rx 1.000000} {j_p_pdu_tx 4.000000}
{bsm_tx 0.000000} {hello_rx 2.000000} {crp_rx 0.000000} {hello_tx 3.000000}
{group_assert_rx 0.000000} {s_g_join_rx 0.000000} {s_g_join_tx 0.000000}
{handle router1} {reg_stop_rx 0.000000} {group_join_rx 0.000000}
{duration 45.136785984} {group_join_tx 20.000000} {reg_rx 0.000000} {status 1}
#### HLTAPI for Python ####
Sample Input:
results_ret1 = sth.emulation_pim_info (
handle = device);
Sample Output:
{'router_id': '100.0.0.1', 'status': '1', 'hello_tx': '1', 'handle': 'router1',
'reg_stop_rx': '0', 'bsm_tx': '0', 'duration': '4.91211009026',
'group_assert_rx': '0', 's_g_join_rx': '0', 'j_p_pdu_tx': '0',
'upstream_neighbor_addr': '12.85.1.4', 'bsm_rx': '0', 's_g_join_tx': '0',
'reg_rx': '0', 'crp_rx': '0', 'j_p_pdu_rx': '0', 'hello_rx': '0',
'group_join_tx': '0', 'group_join_rx': '0', 'router_state': 'HELLO'}
#### HLTAPI for Perl ####
Sample Input:
my %results_ret1 = sth::emulation_pim_info (
handle => "$device");
Sample Output:
$VAR1 = 'hello_tx';
$VAR2 = '1';
$VAR3 = 'group_assert_rx';
$VAR4 = '0';
$VAR5 = 'status';
$VAR6 = '1';
$VAR7 = 'j_p_pdu_tx';
$VAR8 = '0';
$VAR9 = 'bsm_rx';
$VAR10 = '0';
$VAR11 = 'crp_rx';
$VAR12 = '0';
$VAR13 = 'hello_rx';
$VAR14 = '0';
$VAR15 = 'upstream_neighbor_addr';
$VAR16 = '12.85.1.4';
...
End of Procedure Header