PPPoE Functions

sth::pppox_config

Purpose

Configures PPPoE sessions for the specified Spirent HLTAPI port.

The Point-to-Point Protocol (PPP) provides a method of transporting datagrams over point-to-point links between hosts, switches, and routers. Spirent HLTAPI supports Point-to-Point Protocol over Ethernet (PPPoE), Point-to-Point Protocol over ATM (PPPoA), and Point-to-Point Protocol over Ethernet over ATM (PPPoEoA).

Synopsis

Note

  1. M indicates that the argument is Mandatory .
  2. S indicates the argument is for scaling scenarios.
sth::pppox_config
   [-mode {create|modify|activate|reset}  M]
   [-port_handle <handle>]
   [-handle <session_block_handle>]
   [-encap {ethernet_ii|ethernet_ii_vlan|ethernet_ii_mvlan|ethernet_ii_qinq|vc_mux|llcsnap}]
   [-protocol {pppoe|pppoa|pppoeoa}]
   [-ac_select_mode <service_name>]
   [-agent_mac_addr <aa:bb:cc:dd:ee:ff> ]
   [-agent_session_id <session_id>]
   [-agent_type {2516|dsl} ]
   [-attempt_rate <1-1000>]
   [-auth_mode {none|pap|chap|pap_or_chap}]
    [-username <username>]
    [-username_wildcard {0|1}]
    [-wildcard_pound_start <0-65535>]
    [-wildcard_pound_fill <0-9>]
    [-wildcard_pound_end <0-65535>]
    [-wildcard_question_start <0-65535>]
    [-wildcard_question_fill <0-9> ]
    [-wildcard_question_end <0-65535>]
    [-password <password>]
    [-password_wildcard {0|1}]
    [-wildcard_pound_start <0-65535>]
    [-wildcard_pound_fill <0-9> ]
    [-wildcard_pound_end <0-65535>]
    [-wildcard_question_start <0-65535>]
    [-wildcard_question_fill <0-9> ]
    [-wildcard_question_end <0-65535>]
    [-auth_req_timeout <1-65535>]
   [-auto_retry {0|1}]
   [-chap_ack_timeout <1-65535> ]
    [-circuit_id_suffix_mode {none|incr}]
    [-circuit_id_incr_start <integer>]
    [-circuit_id_incr_step <integer>]
    [-circuit_id_incr_count <integer>]
    [-client_traffic_behavior {all_sessions_connected|ignore_failed_sessions}]
   [-config_req_timeout <1-65535>]
    [-max_configure_req <1-65535>]
    [-max_outstanding <2-65535>]
    [-max_terminate_req <1-65535>]
   [-device_block_mode {multi_device_per_block|one_device_per_block}]
   [-disconnect_rate <1-1000>]
   [-dut_assigned_src_addr 1]
   [-echo_req 0]
   [-echo_req_interval <0-65535>]
   [-fsm_max_naks <1-65535> ]
   [-gateway_ip_addr <a.b.c.d>]
   [-gateway_ip_step <a.b.c.d>]
   [-gateway_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
   [-gateway_ipv6_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
   [-include_id {0|1}]
   [-intf_ip_addr  <a.b.c.d>]
   [-intf_ip_addr_step <a.b.c.d>]
   [-gateway_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
   [-gateway_ipv6_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
   [-intermediate_agent {0|1}]
   [-ip_cp {ipv4_cp|ipv6_cp|ipv4v6_cp}]
   [-auto_fill_ipv6 {0|1}]
   [-ipcp_req_timeout <1-65535>]
   [-lcp_mru <128-65535>]
   [-local_magic {0|1}]
   [-mac_addr <aa:bb:cc:dd:ee:ff>]
   [-mac_addr_step <aa:bb:cc:dd:ee:ff>]
   [-max_auth_req <1-65535> ]
   [-max_auto_retry_count <1-65535> ]
   [-max_configure_req <1-65535> ]
   [-max_echo_acks <0-65535> ]
   [-max_ipcp_req <1-65535> ]
   [-max_padi_req <1-65535> ]
   [-max_padr_req <1-65535> ]
   [-mru_neg_enable {0|1}]
   [-num_sessions <1-65535>]
   [-padi_include_tag {0|1}]
   [-padi_req_timeout <1-65535>]
   [-padr_include_tag {0|1}]
   [-padr_req_timeout <1-65535>]
   [-pppoe_circuit_id <alphanumeric>]
   [-pppoe_remote_id <alphanumeric>]
   [-qinq_incr_mode {inner|outer|both}]
   [-qinq_oneblock {1|0}]
   [-remote_id_suffix_mode {none|incr }]
   [-remote_id_incr_start <integer>]
   [-remote_id_incr_step <integer>]
   [-remote_id_incr_count <integer>]
   [-service_name <name>]
   [-stack_gateway_ip_recycle_count <0-65535> ]
   [-stack_gateway_ip_repeat_count <0-65535>]
   [-term_req_timeout <1-65535>]
   [-vci <0-65535>]
   [-vci_count <1-65536>]
   [-vci_step <0-65535>]
   [-vpi <0-255>]
   [-vpi_count <1-256>]
   [-vpi_step <0-255>]
   [-pvc_incr_mode {vpi|vci|both}]
   [-vlan_id <0-4095>]
    [-vlan_id_count <1-4095>]
    [-vlan_id_step <0-4095>]
    [-vlan_user_priority <0-7>]
    [-vlan_cfi {1|0}]
    [-vlan_tpid <0-65535>]
    [-vlan_id_repeat_count  <0-65535> ]
    [-vlan_id_stack_count  <1-65535>]
   [-vlan_id_outer <0-4095>]
    [-vlan_id_outer_count <1-4096>]
    [-vlan_id_outer_step <0-4095>]
    [-vlan_outer_user_priority <0-7>]
    [-vlan_outer_cfi {1|0}]
    [-vlan_tpid_outer <0-65535>]
   [-vlan_cfi_list {1|0}]
   [-vlan_id_count_list <1-4095>
   [-vlan_id_list <0-4095>]
   [-vlan_id_step_list <0-4095>]
   [-vlan_tpid_list <0-65535>]
   [-vlan_user_priority_list <0-7>]
   [-expand {true|false} S]
   [-ac_name <ANY>]
   [-emulation_type {client}]
   [-enable_max_payload_tag {true|false}]
   [-ipv4_addr_pool_count <1-65535>]
   [-ipv4_addr_pool_start <IPV4>]
   [-ipv4_addr_pool_step <NUMERIC>]
   [-ipv6_addr_pool_count <1-65535>]
   [-ipv6_addr_pool_int_id_start <IPV6>]
   [-ipv6_addr_pool_int_id_step <IPV6>]
   [-ipv6_addr_pool_prefix_step <IPV6>]
   [-ipv6_addr_pool_prefix_start <IPV6>]
   [-max_payload_bytes <0-65535>]
   [-remote_or_session_id <ANY>]

Arguments

-ac_select_list

Use this option with -ac_select_mode only when the specified type of service is either ac_mac or ac_name. This option specifies the ac mac address and percentage pair as either 00:11:00:00:00:11|50 or 00:11:00:00:00:12|50 or the ac name and percentage pair as either ciscoAC|60 or ciscoAC2|40.

-ac_select_mode

Specifies the type of service (ISP name, class or QoS) requested. If blank, (not specified or empty string specified), any service is acceptable. There are various ways the AC can be selected based on the PADO received from AC. The default is an empty string.

-agent_mac_addr

Spirent Extension (for Spirent HLTAPI only).

Enabled for RFC 2516-type relay agents only. The Relay Agent MAC address is the MAC address of the next hop from the subscriber client group to the access concentrator. Its format is aa:bb:cc:dd:ee:ff. The default is “” (empty String).

-agent_session_id

Spirent Extension (for Spirent HLTAPI only).

Specifies the session ID of the RFC2516-type relay agent (see -agent_type). Use wildcard characters to make each ID unique:

@s - Session index associated with the PPPoX client.
@b - Block (host/router) index
@p - Port name
@m - MAC address of the PPPoX client

You can also include the following customizable substitution options:

@x - Custom step setup in
     (start,count,step,zeropadding,stutter) format
start - starting value
count - number of values to generate
step - amount to increment the start value when the start
    value must be stepped
zeropadding - length the value should be padded to by
    prepending 0's
stutter - number of times the session_id value should be repeated
    before applying the next step

To include the “@” symbol in a relay agent option, use it twice:

@@ - This must be used to include the textual "@" symbol in
     the string

The default is “remote @m-@p-@g”.

Note

The relay remote ID (-agent_remote_id) and relay session ID (-agent_session_id) parameters are mutually exclusive.

-agent_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the type of relay agent to use. Possible values are 2516 (for the RFC 2516-type of relay agent) and dsl (for the DSL-type of relay agent). The default is 2516.

-attempt_rate

Specifies the PPP attempt rate, in seconds, for all PPP session blocks on this port. Possible values range from 1 to 1000. The default is 100. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-auth_mode

Specifies the authentication mode. During the Link Control Protocol (LCP) phase, one peer may send an authentication challenge to the other. LCP supports Password Authentication Protocol (PAP) and Challenge Handshake Authentication Protocol (CHAP). Possible values are:

none - No authentication.
pap  - PAP
chap - CHAP MD5
pap_or_chap - Automatically negotiated; accepts both PAP and
        CHAP offered by the DUT.

The default is none.

-auth_req_timeout

Specifies the timeout wait period for the server to either send a CHAP challenge or time between the re-transmission of a PAP request. Possible values range from 1 to 65525 seconds. The default is 3 seconds.

-auto_retry

Spirent Extension (for Spirent HLTAPI only).

Enables or disables an automatic retry to connect failed PPP sessions. Possible values are 0 (disable) and 1 (enable). The default value is 0.

-chap_ack_timeout

Spirent Extension (for Spirent HLTAPI only).

Specifies the timeout wait period for the server to send an ACK to a challenge response. Possible values range from 1 to 65525 seconds. The default is 3 seconds.

-circuit_id_suffix_mode

Defines the mode of circuit ID suffix that is appended to circuit ID name. Possible values are none and incr. The default is incr. The modes are described below:

none - Indicates there is no circuit ID suffix.
incr - Indicates the circuit ID suffix increments in
       the step specified in the -circuit_id_incr_step
       argument.

Note

The list mode is not supported by Spirent HLTAPI.

-circuit_id_incr_start

Specifies the starting value of circuit ID suffix. The default is 0. You can specify this argument when -circuit_id_suffix_mode is incr.

-circuit_id_incr_step

Specifies the step size in which the circuit ID suffix increments. The default is 1. You can specify this argument when -circuit_id_suffix_mode is incr.

-circuit_id_incr_count

Defines the circuit ID suffix repeat value. The default is 1. You can specify this argument when -circuit_id_suffix_mode is set to incr.

-client_traffic_behavior

Specifies how traffic should be handled based on the results of session connecting. Possible values are:

all_sessions_connected - Start traffic only if all
                         sessions are connected.

ignore_failed_sessions - Ignore sessions that failed to connect.

The default is all_sessions_connected. Note that it is a project level argument. If modified, all the PPPox clients will be impacted.

-config_req_timeout

Specifies the configuration timeout value in seconds. When this expires, another PPP Configure-Request packet will be sent, until the value defined for the -max_configure_req argument is reached. After that, the session is terminated. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting. Possible values range from 1 to 65535. The default is 3. See also -max_configure_req.

-device_block_mode

Specifies how device blocks are allocated to represent the devices that are created. Possible values are described below:

multi_device_per_block
               Creates multiple devices on one device block. If
               you specify this mode and set -num_sessions to
               10, Spirent HLTAPI creates one device block with
               a device count of 10.

one_device_per_block
               Creates one device on one device block. If you
               specify this mode and set -num_sessions to 10,
               Spirent HLTAPI creates 10 device blocks, with a
               device count of 1 on each device block.

The default value is multi_device_per_block.

-disconnect_rate

Specifies the PPP disconnect rate for all PPP session blocks on this port. Possible values range from 1 to 1000. The default is 1000. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-dut_assigned_src_addr

The DUT assigned source address, which is always set to 1. The IP address is always assigned by the DUT.

-echo_req

Enables or disables echo requests. Possible values are 0 (false) and 1 (true).

-echo_req_interval

Specifies the interval (in seconds) between sending out consecutive echo requests. Possible values range from 0 to 65525 seconds. The default is 10 seconds.

-encap

Identifies the type of Layer 2 encapsulation to use. Possible values are ethernet_ii, ethernet_ii_vlan, ethernet_ii_mvlan, ethernet_ii_qinq, vc_mux and llcsnap. ethernet_ii, ethernet_ii_vlan, ethernet_ii_mvlan, and ethernet_ii_qinq support Ethernet encapsulation, while vc_mux and llcsnap support ATM encapsulation.

If you use the -vlan_* arguments to define a VLAN interface with a single tag, you must set the Layer 2 encapsulation type to ethernet_ii_vlan.

If you use the -vlan_outer* arguments to define a Q-in-Q interface, you must set the L2 encapsulation type to ethernet_ii_qinq.

If you use -vlan_*_list or -vlan_outer_*_list arguments to define a VLAN interface with more than two tags, you must set the Layer 2 encapsulation type to ethernet_ii_mvlan. ethernet_ii_mvlan specifies VLAN from the 3rd tag on. The first two VLAN tags are specified with vlan_id, vlan_outer_id, and their related arguments.

If you use the -vci_* arguments and -vpi_* arguments to define a ATM interface, you must set the L2 encapsulation type to vc_mux or llcsnap

When the -protocol argument is set to pppoeoa, then both Ethernet and ATM encapsulation will be set. In this case, you can set the L2 encapsulation type to the combination of {ethernet_ii|ethernet_ii_vlan|ethernet_ii_qinq} and {vc_mux|llcsnap}.

Note

If you modify the encapsulation value from encap ethernet_ii or ethernet_ii_vlan to ethernet_ii_qinq or vice versa (using “-mode modify”), you must resend all parameters. Otherwise, the parameters use their default values. The following example configures PPPoE for QinQ:

sth::pppox_config   -port_handle port1 \
      -mode create \
      -protocol pppoe \
      -encap ethernet_ii_qinq \
      -auth_mode pap \
      -include_id 1 \
      -num_sessions 15000 \
      -mac_addr 00.00.12.00.00.02 \
      -mac_addr_step 00.00.00.00.00.01 \
      -username spirent \
      -password spirent \
      -vlan_id 1 \
      -vlan_id_outer 10 \
      -vlan_id_count 3000 \
      -vlan_id_outer_count 5 \
      -vlan_id_step 1 \
      -vlan_id_outer_step 1 \
      -qinq_incr_mode inner \

The following example configures PPPoEoA for VLAN:

sth::pppox_config   -port_handle port1 \
      -mode create \
      -protocol pppoeoa \
      -encap "ethernet_ii_vlan llcsnap ?\
      -auth_mode none\
      -include_id 1 \
      -num_sessions 15000 \
      -mac_addr 00.00.12.00.00.02 \
      -mac_addr_step 00.00.00.00.00.01 \
      -vlan_id 1 \
      -vlan_id_count 3000 \
      -vlan_id_step 1 \
-fsm_max_naks

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of Negative-Acknowledgments allowed during LCP and NCP configuration/negotiation. Possible values range from 1 to 65535. The default is 5.

-handle

Specifies the handle of the PPPoE session group to use when -mode is set to “modify” or “reset.” This argument is Mandatory for modify mode only. The handle is returned by the sth::pppox_config function.

-include_id

Specifies whether to include the CHAP ID in challenge messages. Possible values are:

1 - The CHAP ID is included in challenge messages.
0 - The CHAP ID is not included.

The default is 0.

-intermediate_agent

Spirent Extension (for Spirent HLTAPI only).

Enables or disables the relay agent. Possible value are 0 (disable the relay agent) or 1 (enable the relay agent). The default is 0.

-ip_cp

The IP Control Protocol (IPCP) version to enable. Possible values are:

ipv4_cp - Enables IPv4 addressing
ipv6_cp - Enables IPv6 addressing
ipv4v6_cp - Enables IPv4 and IPv6 addressing.
-gateway_ip_addr

Specifies the starting IPv4 gateway address of the emulated PPPoX client. The value must be in IPv4 format. This argument is available when -ip_cp is set to ipv4_cp or ipv4v6_cp.

-gateway_ip_step

Defines the increment used to generate IPv4 gateway addresses. The value must be in IPv4 format. This argument is available when -ip_cp is set to ipv4_cp or ipv4v6_cp.

-gateway_ipv6_addr

Defines the starting IPv6 gateway address of the emulated PPPoX client. The values must be in IPv6 format. This argument is available when -ip_cp is set to ipv6_cp or ipv4v6_cp.

-gateway_ipv6_step

Defines the increment used to generate gateway IPv6 addresses. The values must be in IPv6 format. This argument is available when -ip_cp is set to ipv6_cp or ipv4v6_cp.

-intf_ip_addr

Defines the starting IPv4 address of the emulated PPPoX client. The value must be in IPv4 format. This argument is available when -ip_cp is set to ipv4_cp.

-intf_ip_addr_step

Defines the increment used to generate IPv4 addresses. The value must be in IPv4 format. This argument is available when -ip_cp is set to ipv4_cp.

-intf_ipv6_addr

Defines the starting IPv6 address of the emulated PPPoX client. The value must be in IPv6 format. This argument is available when -ip_cp is set to ipv6_cp or ipv4v6_cp.

-intf_ipv6_addr_step

Defines the increment used to generate IPv6 addresses. The value must be in IPv6 format. This argument is available when -ip_cp is set to ipv6_cp or ipv4v6_cp.

-auto_fill_ipv6

Spirent Extension (for Spirent HLTAPI only).

Enables or disables IPv6 auto filling. Possible value are 0 (disable) or 1 (enable). The default is 1. This option is available when the -ip_cp argument is set to ipv6_cp or ipv4v6_cp.

-ipcp_req_timeout

Specifies the timeout value (in seconds) for acknowledgment of an NCP Configure-Request. Possible values range from 1 to 65535 seconds. The default value is 3 seconds.

-lcp_mru

Spirent Extension (for Spirent HLTAPI only).

Specifies the local maximum receive unit (MRU) size in bytes. Possible values range from 128 to 65535. For PPPoE, the MRU size cannot exceed 65535. The default is 1492. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-local_magic

Enables or disables the use of the magic number for detection of data link layer errors. This argument is used for loop back detection. Possible values are 0 (disable magic number) and 1 (enable magic number). The default is 1. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-mac_addr

Specifies the starting value for the MAC address. The default is 00-10-94-01-00-01.

-mac_addr_step

Specifies the step value applied to the base MAC address. The default is 00:00:00:00:00:01

-max_auth_req

Specifies the maximum number of authentication requests that can be sent without getting an authentication response from the DUT. Possible values range from 1 to 65535. The default is 5.

-max_auto_retry_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of automatic retry attempts. Possible values range from 1 to 65535. The default is 65535.

-max_configure_req

Specifies the maximum number of times a PPP Configure- Request packet can be sent without a response before a session fails. Possible values range from 1 to 65535. The default is 5. See also -config_req_timeout, This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-max_echo_acks

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of consecutive, unanswered echo request to send before failing the subscriber session. Possible values range from 0 to 65535. The default is 3. If you specify 0 for this argument, echo requests are disabled. Specifying any other number enables echo requests on the port; this is the same as setting -echo_req to 1. See also -echo_req and -term_req_timeout.

-max_ipcp_req

Specifies the maximum number of NCP Configure-Requests that can be sent without acknowledgement before a session fails. Possible values range from 1 to 65535. The default is 10. See also -term_req_timeout.

-max_outstanding

Specifies the maximum number of sessions that can be connecting or disconnecting at one time for all PPP session blocks on this port. Possible values range from 2 to 65535. The default is 100. This is a port-wide option. Any subsequent use of this option on a port after the initial “-mode create” will overwrite any previous setting.

-max_padi_req

Specifies the maximum number of PADI packets that can be sent without acknowledgment before a session fails. Possible values range from 1 to 65535. The default is 5.

-max_padr_req

Specifies the maximum number of PADR packets that can be sent without acknowledgment before a session fails. Possible values range from 1 to 65535. The default is 5.

-max_terminate_req

Specifies the maximum number of times a PPP Terminate- Request packet can be sent before a session fails. Possible values range from 1 to 65535. The default is 10. See also -term_req_timeout.

-mode

Specifies the action to perform. Possible values are create, modify, and reset. This argument is Mandatory . The modes are described below:

create - Configures the PPPoE sessions on the port specified
     with the -port_handle argument. The first "-mode
     create" argument also creates the PPPoE port object.

modify - Changes the configuration for the PPPoE port and
    session block identified by the -handle argument.

    sth::pppox_config -mode modify -handle host2
     -username spirent -password spirent

    Output:
    {status 1} {handles host2} {port_handle port1}
    {pppoe_port pppoxportconfig1} {pppoe_session
    pppoeclientblockconfig1} {procName sth::pppox_config}

    If you have configured either IGMP over PPPoX and
    modify sth::pppox_config, you must also modify the IGMP
    handle to accept the new handle as well. (See the usage
    examples provided for sth::emulation_igmp_config.)

activate - Used for ``Scaling`` scenarios.
         1. Enables PPPoE devices and configures PPPoE 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::pppox_config`` function for more
            information. For this mode, only the following set of
            options are valid::

              ac_name
              pppoe_circuit_id
              agent_type
              auth_mode
              max_padi_req
              max_auto_retry_count
              agent_mac_addr
              echo_req
              emulation_type
              enable_max_payload_tag
              ipv6_addr_pool_count
              ipv6_addr_pool_int_id_start
              padr_req_timeout
              ipv6_addr_pool_prefix_start
              ipv4_addr_pool_start
              include_id
              password
              username
              ipv6_addr_pool_int_id_step
              max_payload_bytes
              ipv6_addr_pool_prefix_step
              ipv4_addr_pool_count
              service_name
              auto_retry
              padi_req_timeout
              padi_include_tag
              max_echo_acks
              ipv4_addr_pool_step
              remote_or_session_id
              intermediate_agent
              echo_req_interval
              padr_include_tag
              ip_cp
              lower_encap
              max_padr_req

       2. Creates devices and enables PPPoE 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.

reset - Deletes the session block associated with the handle
    name. To re-connect and re-start, you must reconfigure
    your settings.

Note

  1. Before using “sth::pppox_config -mode reset”, you must first delete all traffic streams with the “sth::traffic_config -mode reset” command. Traffic streams must be reset before PPPoX can be reset.
  2. When modifying PPPoX sessions, only modify sth::pppox_config when the aggregate.idle flag returned by sth::pppox_stats is 1 and no sessions are connected.
-mru_neg_enable

Spirent Extension (for Spirent HLTAPI only).

Enables or disables MRU negotiation. Possible value are 0 (disable) or 1 (enable). The default is 1.

-num_sessions

The number of PPPoE clients to emulate. Possible values range from 1 to 65535. The default is 1.

Note

  1. If the value of -encap is set to “ethernet_ii_vlan”, then the value of -num_sessions must be divided evenly by value of -vlan_id_count.

  2. If the value of -encap is set to “ethernet_ii_qinq” then the value of -num_sessions must be divided evenly by the least common multiple of vlan_id_count and vlan_id_outer_count.

    Likewise, if the value of -encap is set to ” vc_mux” or “llcsnap”, then the value of -num_sessions must be divided evenly by the least common multiple of vpi_count and vci_count.

-padi_include_tag

Spirent Extension (for Spirent HLTAPI only).

Specifies whether to include the relay agent tags in transmitted PADI messages. Possible values are 0 (do not include relay agent tags in PADI messages) or 1 (include relay agent tags in PADI messages). The default is 1.

-padi_req_timeout

Specifies the timeout value (in seconds) for acknowledgment of a PADI packet. Possible values range from 1 to 65535. The default is 3.

-padr_include_tag

Spirent Extension (for Spirent HLTAPI only).

Specifies whether to include the relay agent tags in transmitted PADR messages. Possible values are 0 (do not include relay agent tags in PADR messages) or 1 (include relay agent tags in PADR messages). The default is 1.

-padr_req_timeout

Specifies the timeout value (in seconds) for acknowledgment of a PADR packet. Possible values range from 1 to 65535. The default is 3.

-pppoe_circuit_id

Defines the circuit ID name. The default is “circuit”. The value must be in alphanumeric format.

-pppoe_remote_id

Defines the remote ID name. The default is “remote”. The value must be in alphanumeric format.

-password

Specifies the string base from which the passwords are generated (for example, Password#) when the authentication mode is pap, chap, or pap_or_chap (see -auth_mode). The default is “pass”. See Notes for information about using wildcards in passwords.

-password_wildcard

Enables wildcard substitution in the -password argument. Possible values are 0 (false) and 1 (true). If the value is set to 1, any wildcards used in -password are replaced with the corresponding values for -wildcard_pound_start, wildcard_pound_end, wildcard_question_start and -wildcard_question_end. If the value is 0, wildcards are not replaced in the specified password. The default is 0.

-port_handle

Specifies the handle of the port on which to create the PPPoE port and session block when -mode is set to “create”. This argument is Mandatory for create mode only. Specifies the port handle is returned by the sth::connect function.

-protocol

Specifies the type of protocol to use. The possible values are pppoe, pppoa, and pppoeoa. The default value is pppoe.

-qinq_incr_mode

Determines which VLAN ID to increment first. Possible values are:

inner - increment the inner VLAN ID before the outer VLAN ID
outer - increment the outer VLAN ID before the inner VLAN ID
both - increment both the inner and outer VLAN ID at the
        same time

The default is outer.

-qinq_oneblock

Spirent Extension (for Spirent HLTAPI only).

Determines whether Spirent TestCenter creates Q-in-Q (802.1q Tunnel Tags) hosts with one handle returned. When it is set to 1, Spirent TestCenter creates multiple Q-in-Q hosts with one handle returned instead of returning multiple handles. You can configure all the generated hosts at one time by specifying this handle. Possible values are 0 (disabled) and 1 (enabled).The default value is 0.

-remote_id_suffix_mode

Defines the mode of remote ID suffix that is appended to remote ID name. Possible values are none and incr. The default is incr. The modes are described below:

none - Indicates there is no remote ID suffix.

incr - Indicates the remote ID suffix increments
       in the step specified in the -remote_id_incr_step
       argument.

Note

The list mode is not supported by Spirent HLTAPI.

-remote_id_incr_start

Specifies the starting value of remote ID suffix. The default is 0. You can specify this argument when -remote_id_suffix_mode is incr.

-remote_id_incr_step

Specifies the step size in which the remote ID suffix increments. The default is 1. You can specify this argument when -remote_id_suffix_mode is incr.

-remote_id_incr_count

Defines the remote ID suffix repeat value. The default is 1. You can specify this argument when -remote_id_suffix_mode is incr.

-service_name

Spirent Extension (for Spirent HLTAPI only).

Indicates the service (ISP name, class, or QoS) requested. If you do not specify a service name or specify an empty string, Spirent HLTAPI will accept any service.

-stack_gateway_ip_recycle_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times to increment the IPv4 gateway address before returning to the starting value. Possible values range from 0 to 65535. The default value is 0.

-stack_gateway_ip_repeat_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times to repeat the same IPv4 gateway address before incrementing it. Possible values range from 0 to 65535. The default value is 0.

-term_req_timeout

The maximum amount of time (in seconds) that the termination process can take before another PPP Terminate- Request packet is sent. If there is no response, another packet is sent until the value defined for the -max_terminate_req argument is reached, and then the session is terminated. Possible values range from 1 to 65535. The default is 10. See also -max_terminate_req.

-username

The string base from which the usernames are generated (for example, User#) when the authentication mode is pap, chap, or pap_or_chap (see -auth_mode). The default is “anonymous”. See Notes for information about using wildcards in passwords.

-username_wildcard

Enables wildcard substitution in the -username argument. Possible values are 0 (false) and 1 (true). If the value is set to 1, any wildcards used in -username are replaced with the corresponding values according to -willcard_pound_start, -wildcard_pound_end, -wildcard_question_start and -wilcard_question_end. If the value is 0, wildcards are not replaced. The default is 0.

-pvc_incr_mode

Determines which ID to increment first. Possible values are:

vci - Increments the VC ID before the Virtual Path (VP) ID
vpi - Increments the VP ID before the Virtual Circuit (VC)ID
both - Increments both the VP and VC ID at the same time
-vci

Specifies the VCI of the first ATM PVC pool. Possible values range from 0 to 65535.

-vci_count

The number of VCI to use when generating PPPoE clients. The value must be less than num_sessions.

-vci_step

Specifies the step size in which the VCI value is incremented. Possible values range from 0 to 65535. The default value is 0.

-vpi

Specifies the VPI of the first ATM PVC pool (for an ATM connection). Possible values are 0 to 255.

-vpi_count

The number of VPI to use when generating PPPoE clients. The value must be less than num_sessions.

-vpi_step

Specifies the step size in which the VPI value is incremented. Possible values are from 0 to 255. The default value is 0.

-vlan_id

The first inner VLAN ID to use when generating PPPoE clients. Possible values range from 0 to 4095. The default is 1.

-vlan_cfi

Spirent Extension (for Spirent HLTAPI only).

Defines the VLAN Canonical Format Indicator (CFI). Possible values are 1 and 0. The default value is 0.

-vlan_id_count

The number of inner VLAN IDs to use when generating PPPoE clients. Spirent HLTAPI assigns VLAN membership in round-robin fashion. If the value of -encap is set to “ethernet_ii_vlan”, then the value of -num_sessions must be divided evenly by the value of -vlan_id_count. Possible values range from 1 to 4096. The default is 1.

-vlan_id_outer

The first outer VLAN ID to use when generating PPPoE clients . This ID only applies to PPPoE w/Stacked VLAN. Possible values range from 0 to 4095. The default is 1.

-vlan_outer_cfi

Spirent Extension (for Spirent HLTAPI only).

Defines the outer VLAN CFI. The possible values are 1 and 0. The default value is 0.

-vlan_id_outer_count

The number of outer VLAN IDs to use when generating PPPoE clients. Spirent HLTAPI assigns VLAN membership in round-robin fashion. The VLAN count must divide evenly into the number of sessions. The VLAN count cannot be greater than the session count. Possible values range from 1 to 4096. The default is 1.

-vlan_id_outer_step

The value that Spirent HLTAPI uses to increment the outer VLAN ID. Possible step values range from 0 to 4095. The default is 0.

-vlan_id_step

The value that Spirent HLTAPI uses to increment the inner VLAN ID. Possible step values range from 0 to 4095. The default is 0.

-vlan_id_repeat_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times to repeat the same IPv4 address before incrementing it for the inner VLAN. The value must be an integer. The default value is 0.

-vlan_id_stack_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of VLAN objects to be created. Possible values range from 1 to 65535. The default value is 1.

-vlan_user_priority

Specifies the inner VLAN priority to assign to the specified port. Possible values range from 0 to 7. The default is 0.

-vlan_user_priority_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of inner VLAN priorities to assign to the specified port. Possible values range from 0 to 7. The default value is 0.

-vlan_outer_user_priority

Specifies the outer VLAN priority to assign to the specified port. Possible values range from 0 to 7. The default is 0.

-vlan_tpid

Spirent Extension (for Spirent HLTAPI only).

Specifies the Ethernet type of VLAN for the device interface. Possible values range from 0 to 65535. The default value is 33024.

-vlan_tpid_outer

Spirent Extension (for Spirent HLTAPI only).

Specifies the Ethernet type of outer VLAN for the device interface. Possible values range from 0 to 65535. The default value is 33024.

-vlan_id_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of VLAN IDs to use when generating PPPoE clients using ethernet_ii_mvlan encapsulation. Possible values range from 1 to 4095. The default is 100.

-vlan_cfi_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of VLAN CFIs to use when generating PPPoE clients using ethernet_ii_mvlan encapsulation. Possible values are 1 and 0. The default value is 0.

-vlan_id_count_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of numbers of VLAN IDs to use when generating PPPoE clients using ethernet_ii_mvlan encapsulation. Possible values range from 1 to 4096. The default value is 1.

-vlan_id_step_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of values to increment inner VLAN IDs using ethernet_ii_mvlan encapsulation. Possible step values range from 1 to 4095. The default value is 1.

-vlan_tpid_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of VLAN Tag Protocol IDs for ethernet_ii_mvlan encapsulation. Possible values range from 0 to 65535. The default value is 33024.

-wildcard_pound_fill

Spirent Extension (for Spirent HLTAPI only).

Wildcard fill character for -wildcard_pound_start and -wildcard_pound_end. If 0, the numbers are replaced without leading zeroes. Otherwise, leading zeroes are added to ensure that the number is at least the specified number of digits wide. Possible values range from 0 to 9. The default is 0. See Notes for more about using wildcards.

-wildcard_question_fill

Spirent Extension (for Spirent HLTAPI only).

Wildcard fill character for -wildcard_question_start and -wildcard_question_end. If 0, the numbers are replaced without leading zeroes. Otherwise, leading zeroes are added to ensure that the number is at least the specified number of digits wide. Possible values range from 0 to 9. The default is 0. See Notes for more about using wildcards.

-wildcard_pound_start

Starting numerical value to replace the wildcard pound (#) character in user names and passwords, such as user# or pwd#. Possible values range from 0 to 65535. The default is 1. See Notes for more about using wildcards.

-wildcard_pound_end

Final numerical value to replace the wildcard pound (#) character in user names and passwords, such as user# or pwd#. Possible values range from 0 to 65535. The default is 1. See Notes for more about using wildcards.

-wildcard_question_start

Starting numerical value to replace the wildcard question mark character in user names and passwords. Possible values range from 0 to 65535. The default is 1. See Notes for more about using wildcards.

-wildcard_question_end

Final numerical value to replace the wildcard question mark character in user names and passwords. Possible values range from 0 to 65535. The default is 1. See Notes for more about using wildcards.

-expand

Spirent Extension (for Spirent HLTAPI only).

Determines whether to expand the specified PPPoE device parameters into emulated PPPoE device objects. It is used in Scaling test scenarios.

When set to true, a list of emulated device handles (handle_list) with enabled PPPoE device configurations is created.

When set to false, only PPPoE parameters are configured with no handle returned.

-ac_name

Specifies the Access Concentrator name in the PADO messages. The default is spirenttestcenter Applicable only in -mode activate when -block_mode or -expand is specified.

-emulation_type

Specifies the PPPoX node emulation type. The default is client Applicable only in -mode activate when -block_mode or -expand is specified.

-enable_max_payload_tag

Enables the PPP-Max-Payload-Tag (see RFC 4638). The default is false

-ipv4_addr_pool_count

Specifies the number of IPv4 addresses in the PPPoX server’s pool. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv4_addr_pool_step

Specifies the step IPv4 address for the PPPoX server’s pool. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv4_addr_pool_start

Specifies the starting IPv4 address for the PPPoX server’s pool. The default is 192.0.1.0 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_addr_pool_int_id_step

Specifies the IPv6 address pool Interface ID (lower 64 bits) step. The default is ::1 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_addr_pool_int_id_start

Specifies the IPv6 address pool Interface ID (lower 64 bits) start. The default is ::2 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_addr_pool_prefix_start

Specifies the IPv6 address pool prefix (upper 64 bits) start. The default is 2001::: Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_addr_pool_prefix_step

Specifies the IPv6 address pool prefix (upper 64 bits) step. The default is 0:0:0:1::: Applicable only in -mode activate when -block_mode or -expand is specified.

-max_payload_bytes

Specifies the maximum number of PPP payload bytes the client can transmit and receive. The default is 1500 Applicable only in -mode activate when -block_mode or -expand is specified.

-remote_or_session_id

Specifies the remote ID or session ID depending on the relay agent type. Special wildcards allowed. The default is remote @m-@p-@b Applicable only in -mode activate when -block_mode or -expand is specified.

Arguments Unsupported by Save as HLTAPI

The following Spirent HLTAPI arguments are currently not supported by the Save as HLTAPI function:

-qinq_incr_mode
-qinq_oneblock
-apply
-reset_mode

Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper

-max_negotiation_retrys

Specifies the maximum number of automatic retry attempts. Possible values range from 1 to 65535. The default is 65535.

-max_lcp_failure

Specifies the maximum number of times a PPP Configure- Request packet can be sent without a response before a session fails. Possible values range from 1 to 65535. The default is 5.

-ppp_local_ip

Defines the starting IPv4 address of the emulated PPPoX client. The value must be in IPv4 format. This argument is available when -ip_cp is set to ipv4_cp.

Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper

None.

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:

-echo_rsp
-sessions_per_vc
-vlan_user_priority_count
-vlan_user_priority_step
-circuit_id_suffix_list
-remote_id_suffix_list

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):

handles   Identifies the PPPoE session block handle (or group) returned
          by the "``sth::pppox_config -mode create"`` function.

handle_list
          A list of emulated devices with PPPoE session configuratin created by
          ``sth::pppox_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::pppox_config function creates or modifies an emulated PPPoE session block. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

Modifying any option during a PPPoE session which currently is a member of a multicast group will sever the PPPoE session, IGMP host, and multicast group relationship. Therefore, do not use sth::pppox_config while sessions are connected to prevent aborting the PPPoX engine. To see if sessions are connected, look at the aggregate.idle flag returned by “sth::pppox_stats -mode aggregate”. If aggregate.idle is “0”, then do not send sth::pppox_config. If the PPPoX engine is aborted, you will need to reconfigure the PPPoX session. If using IGMP over PPPoX, you will also need to reconfigure the IGMP session.

When you create a PPPoE session block, you must use the -port_handle argument to specify the Spirent HLTAPI port that the emulated PPPoE session block will use for PPPoE communication. (The port handle value is contained in the keyed list returned by the sth::connect function.)

Use the -mode create argument to define the characteristics of a PPPoE session block. You can use a single session block to emulate multiple PPPoE clients.

In addition to specifying the port handle (-port_handle), you must also provide one or more of the following arguments when you create a PPPoE session block, or use their default values:

-num_sessions (the number of PPPoE clients to emulate)

-mac_addr (starting value for the MAC address)

-mac_addr_step (increment used to generate additional MAC addresses for
                multiple clients)

-auth_mode  (authentication style)

-include_id (include or exclude the CHAP ID in challenge messages)

-username  (if specifying an authentication style)

-password  (if specifying an authentication style)

For a detailed description of PPPoE encapsulation, see “RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE)”.

For an example of how to configure PPPoE traffic, see the documentation for sth::traffic_config.

Examples

#### HLTAPI for Tcl ####

The following example configures a PPPoE session:

sth::pppox_config -port_handle $p0  \
     -mode create \
     -protocol pppoe \
     -encap ethernet_ii \
     -local_magic         1 \
     -max_configure_req   5 \
     -max_terminate_req   10 \
     -attempt_rate        100 \
     -disconnect_rate     100 \
     -max_outstanding     100 \
     -num_sessions        1 \
     -mac_addr            $mac_addr \
     -username            $username \
     -password            $password

Sample Output for example shown above:

{status 1} {port_handle port1} {handles host2} {pppoe_port \
pppoeportconfig1}\
{pppoe_host host2}{pppoe_session pppoeclientblkconfig1} {procName \
sth::pppox_config}

The following example configures multiple PPPoE sessions:

set pppHandles ""
for {set i 1} {$i <= $num_blocks} {incr i} {
     set rL [sth::pppox_config   -port_handle port1 \
                                 -mode create \
                                 -protocol pppoe \
                                 -encap ethernet_ii \
                                 -num_sessions $num_sessions \
     ]

     #Create a list of PPPoX handles
     keylget rL handles pppHandle
     lappend pppHandles $pppHandle
 }

The following example uses the function in Scaling mode (-mode activate) with -port_handle and -block_mode:

set pppoe_ret [sth::pppox_config\
            -mode                                            activate \
            -port_handle                                     $port1\
            -count                                           2 \
            -block_mode                                      ONE_DEVICE_PER_BLOCK\
            -block_name_index                                1\
            -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                              {"" ::2} \
            -ipv6_step_per_port                              ::1 \
            -intf_prefix_len                                 22 \
            -link_local_ipv6_step_per_port                   ::4 \
            -link_local_ipv6_step_per_vlan                   {"" ::5} \
            -name                                            DEVICE_BLOCK_PPPOX \
            -vlan_user_pri                                   3 \
            -vlan_id_count                                   2 \
            -vlan_id_repeatmode                              REPEAT_ACROSS_PORT\
            -vlan_outer_id_count                             2 \
            -vlan_outer_user_pri                             4 \
            -vlan_outer_id_repeatmode                        REPEAT_ACROSS_PORT\
            -router_id_ipv6                                  0101::011 \
            -router_id_ipv6_step                             ::11 \
            -intf_ip_addr                                    11.111.11.11 \
            -gateway_ip_addr                                 11.111.11.1 \
            -expand                                          true \
            -ac_name                                         spirent\
            -pppoe_circuit_id                                circuit1\
            -agent_type                                      2516\
            -auth_mode                                       none\
            -max_padi_req                                    11\
            -max_auto_retry_count                                2\
            -agent_mac_addr                                  00-00-00-00-00-01\
            -echo_req                                        true\
            -emulation_type                                  client\
            -enable_max_payload_tag                          true\
            -ipv6_addr_pool_count                            1\
            -ipv6_addr_pool_int_id_start                     ::2\
            -padr_req_timeout                                    4\
            -ipv6_addr_pool_prefix_start                     2002::\
            -ipv4_addr_pool_start                            10.1.1.1\
            -include_id                                      true\
            -password                                        spirent\
            -username                                        spirent\
            -ipv6_addr_pool_int_id_step                      ::2\
            -max_payload_bytes                               1400\
            -ipv6_addr_pool_prefix_step                     ::\
            -ipv4_addr_pool_count                           2\
            -service_name                                   spirent\
            -auto_retry                              true\
            -padi_req_timeout                               20\
            -padi_include_tag                               true\
            -max_echo_acks                                  10\
            -ipv4_addr_pool_step                            1\
            -remote_or_session_id                           remote\
            -intermediate_agent                             true\
            -echo_req_interval                              20\
            -padr_include_tag                               true\
            -ip_cp                                          ipv4_cp\
            -lower_encap                                  pppoe\
            -max_padr_req                              3]

Sample Output:

{param_handle emulateddevicegenparams1} {status 1} {handle_list {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6
emulateddevice7 emulateddevice8}} {handle {}} {handles {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6
emulateddevice7 emulateddevice8}}

To connect all PPPoX handles in list:

set rL [sth::pppox_control -handle $pppHandles -action connect]

#### HLTAPI for Python ####

The following example configures one PPPoE session:

device_ret0 = sth.pppox_config (
           mode                = 'create',
           encap               = 'ethernet_ii_vlan',
           protocol            = 'pppoe',
           username_wildcard   = '1',
           wildcard_pound_start= '1',
           wildcard_pound_end  = '3',
           ac_select_mode      = 'service_name',
           circuit_id_suffix_mode= 'incr',
           circuit_id_incr_start= '1',
           circuit_id_incr_step= '3',
           circuit_id_incr_count= '3',
           remote_id_suffix_mode= 'none',
           port_handle         = port_handle[0],
           max_outstanding     = '100',
           disconnect_rate     = '1000',
           attempt_rate        = '100',
           pppoe_circuit_id    = 'circuit',
           mru_neg_enable      = '1',
           max_configure_req   = '10',
           chap_ack_timeout    = '3',
           max_padi_req        = '10',
           padi_include_tag    = '1',
           padr_req_timeout    = '3',
           max_terminate_req   = '10',
           term_req_timeout    = '3',
           username            = 'spirent#',
           use_partial_block_state= 'false',
           max_auto_retry_count= '65535',
           agent_session_id    = 'remote',
           agent_type          = 'dsl',
           max_ipcp_req        = '10',
           intermediate_agent  = '1',
           echo_req_interval   = '10',
           password            = 'spirent',
           local_magic         = '1',
           config_req_timeout  = '3',
           active              = '1',
           auto_retry          = 'false',
           padi_req_timeout    = '3',
           agent_mac_addr      = '00:00:00:00:00:00',
           lcp_mru             = '1492',
           ip_cp               = 'ipv4_cp',
           auto_fill_ipv6      = '1',
           max_echo_acks       = '0',
           auth_mode           = 'chap',
           include_id          = '1',
           ipcp_req_timeout    = '3',
           pppoe_remote_id     = 'remote',
           max_padr_req        = '10',
           padr_include_tag    = '1',
           echo_req            = 'false',
           fsm_max_naks        = '5',
           vlan_cfi            = '0',
           vlan_id             = '100',
           vlan_user_priority  = '7',
           vlan_id_step        = '0',
           num_sessions        = '1',
           mac_addr            = '00:10:94:00:00:01',
           mac_addr_repeat     = '0',
           mac_addr_step       = '00:00:00:00:00:01',
           intf_ip_addr        = '192.85.1.3',
           gateway_ip_addr     = '192.85.1.1',
           intf_ip_addr_step   = '0.0.0.1',
           gateway_ip_step     = '0.0.0.0');

Sample Output:

{'status': '1', 'pppoe_session': 'pppoeclientblockconfig1',
'handles': 'host4', 'handle': 'host4',
'procName': 'sth::pppox_config', 'pppoe_port': 'pppoxportconfig1',
'port_handle': 'port1'}

#### HLTAPI for Perl ####

The following example configures one PPPoE session:

my %device_ret0 = sth::pppox_config (
             mode                => 'create',
             encap               => 'ethernet_ii_vlan',
             protocol            => 'pppoe',
             username_wildcard   => '1',
             wildcard_pound_start=> '1',
             wildcard_pound_end  => '3',
             ac_select_mode      => 'service_name',
             circuit_id_suffix_mode=> 'incr',
             circuit_id_incr_start=> '1',
             circuit_id_incr_step=> '3',
             circuit_id_incr_count=> '3',
             remote_id_suffix_mode=> 'none',
             port_handle         => "$hport[1]",
             max_outstanding     => '100',
             disconnect_rate     => '1000',
             attempt_rate        => '100',
             pppoe_circuit_id    => 'circuit',
             mru_neg_enable      => '1',
             max_configure_req   => '10',
             chap_ack_timeout    => '3',
             max_padi_req        => '10',
             padi_include_tag    => '1',
             padr_req_timeout    => '3',
             max_terminate_req   => '10',
             term_req_timeout    => '3',
             username            => 'spirent#',
             use_partial_block_state=> 'false',
             max_auto_retry_count=> '65535',
             agent_session_id    => 'remote',
             agent_type          => 'dsl',
             max_ipcp_req        => '10',
             intermediate_agent  => '1',
             echo_req_interval   => '10',
             password            => 'spirent',
             local_magic         => '1',
             config_req_timeout  => '3',
             active              => '1',
             auto_retry          => 'false',
             padi_req_timeout    => '3',
             agent_mac_addr      => '00:00:00:00:00:00',
             lcp_mru             => '1492',
             ip_cp               => 'ipv4_cp',
             auto_fill_ipv6      => '1',
             max_echo_acks       => '0',
             auth_mode           => 'chap',
             include_id          => '1',
             ipcp_req_timeout    => '3',
             pppoe_remote_id     => 'remote',
             max_padr_req        => '10',
             padr_include_tag    => '1',
             echo_req            => 'false',
             fsm_max_naks        => '5',
             vlan_cfi            => '0',
             vlan_id             => '100',
             vlan_user_priority  => '7',
             vlan_id_step        => '0',
             num_sessions        => '1',
             mac_addr            => '00:10:94:00:00:01',
             mac_addr_repeat     => '0',
             mac_addr_step       => '00:00:00:00:00:01',
             intf_ip_addr        => '192.85.1.3',
             gateway_ip_addr     => '192.85.1.1',
             intf_ip_addr_step   => '0.0.0.1',
             gateway_ip_step     => '0.0.0.0');

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'sth::pppox_config';
$VAR3 = 'pppoe_port';
$VAR4 = 'pppoxportconfig1';
$VAR5 = 'pppoe_session';
$VAR6 = 'pppoeclientblockconfig1';
$VAR7 = 'handle';
$VAR8 = 'host4';
$VAR9 = 'handles';
$VAR10 = 'host4';
$VAR11 = 'status';
$VAR12 = '1';
$VAR13 = 'port_handle';
$VAR14 = 'port1';

Note

You can generate outgoing usernames and passwords based on wildcard replacements. The following example generates 50 user names and passwords:

sth::pppox_config -port_handle $p0  \
  -mode create -protocol pppoe -encap ethernet_ii \
  -num_sessions $num_sessions \
  -username User# \
  -password Pass? \
  -wildcard_pound_start 1  \
  -wildcard_pound_end 50  \
  -wildcard_question_start 1  \
  -wildcard_question_end 50  \

The # character represents a counter. For example, define a counter to start at 1 (-wildcard_pound_start 1), run to 50 (-wildcard_pound_end), and increment by 1. Then, in the -username argument, specify user#, which would be replaced with User1, User2, and so on, when authentication begins.

The wildcard is replaced with a counter, starting at 1. For example, User becomes User1, User2, and so on. If you do not specify, then no substitution will take place.

End of Procedure Header

sth::pppox_control

Purpose

Connects, disconnects, pauses, resumes, retries, or resets the PPPoE sessions for the specified session block.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::pppox_control
   [-action {connect|disconnect|retry|reset|pause|resume|clear}  M]
   [-handle <handle>]
   [-port_handle <port_handle_list>]
   [-ipcp_mode {ipv4|ipv6|ipv4v6}]

Arguments

-action

Specifies the action to perform. Possible values are connect, disconnect, reset, retry, pause, resume, and clear. You must specify one of these values. The modes are described below:

connect - Establishes all PPPoX sessions on the specified
    session block.

disconnect - Disconnects all established PPPoX sessions from
    the specified session block.

retry - Attempts to connect failed PPPoX sessions on the
      port. You can only use the retry command after the
      sessions have finished attempting to connect (that is,
      the stats show that either aggregate.idle or
      aggregate.connected is 1).

reset - Terminates the port. This action does not reset the
      defaults nor does it attempt to re-connect. To re-
      connect to the port, you must reconfigure the session
      block.

pause - Pause all PPPoX sessions that are connecting or
       disconnecting.

resume - Resume PPPoX sessions that were paused with
       "-action pause" while connecting or disconnecting.

clear - Clears the PPPoX statistics for the port. You can
       only use this command after the sessions have been
       disconnected (that is, aggregate.idle is 1). You
       cannot clear the PPPoX port statistics while
       sessions are currently connected (that is,
       aggregate.connected is 1).

abort - Aborts all PPPoX sessions and resets the PPP
        emulation engine (without bringing the sessions
        back up) on the specified device.

Note

Use “sth::pppox_control -action clear” and “sth::pppox_control -action retry” only while sessions are in the idle state. To see if the PPPoX engine is in the idle state, look at the aggregate.idle flag returned by “sth::pppox_stats -mode aggregate”. If aggregate.idle is “0”, then do not send this command.

-handle

Identifies a list of session blocks on which to connect, disconnect, reset, retry, pause, resume, or clear the PPPoX sessions.

-port_handle

Specifies a list of ports to use. When you specify this argument, the action (-action) will be applied to all PPPoX sessions on the port. You must specify either -handle or -port_handle, but not both.

-ipcp_mode

Specifies the IP version of PPPoX sessions to connect, retry or disconnect. Possible values are ipv4, ipv6 and ipv4v6. The default mode is ipv4v6. You must specify one of these values. The modes are described below:

ipv4 - Use this mode, to connect, retry or disconnect all IPv4
       PPPoX sessions under the specified -handle or the -port_handle.

ipv6 - Use this mode, to connect, retry or disconnect all IPv6
       PPPoX sessions under the specified -handle or the -port_handle.

ipv4v6 - Use this mode, to connect, retry or disconnect all IPv4 and IPv6
       PPPoX sessions under the specified -handle or the -port_handle.

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    Success (1) or failure (0) of the operation.
log       An error message (if the operation failed).

Description

The pppox_control function stops or starts PPPoE session blocks. You can use the function to perform the following actions: connecting, disconnecting, resetting, retrying, pausing, resuming, or clearing PPPoE sessions. When you call the pppox_control function, you specify a handle.

You can check the aggregate.idle and aggregate.connected fields returned by “sth::pppox_stats -mode aggregate” to see when all sessions have finished connecting or disconnecting. If the aggregate.idle or aggregate.connected values are equal to 1, then you can send the sth::pppox_control connect, retry, disconnect, pause, or resume actions again. When the aggregate.connected value is 1, you can disconnect the PPPoX sessions with “sth::pppox_control [-handle <handle>] -action disconnect”. If configuring and connecting multiple PPPoX handles, configure all the handles before connecting PPPoE. Do not call sth::pppox_config while aggregate.connecting, aggregate.connected, or aggregate.disconnecting are equal to 1.

While in either the aggregate.connecting, aggregate.connected, or aggregate.disconnecting state, the PPPoE engine cannot accept newly configured PPPoE session blocks. Therefore, if you plan to configure and bring up multiple PPPoX groups, configure all the PPPoE session blocks before connecting PPPoE sessions.

Examples

#### HLTAPI for Tcl ####

To connect a PPPoE session:

sth::pppox_control -handle host2 -action connect

Output for the above example:

{status 1} {procName sth::pppox_control} {handles host2}

To connect multiple PPPoX handles:

set rL [sth::pppox_control -handle $pppHandles -action connect]

To disconnect a PPPoE session:

sth::pppox_control -handle host2 -action disconnect

Output for the above example:

{status 1} {procName sth::pppox_control} {handles host2}

To connect only IPv4 PPPoX servers:

sth::pppox_server_control \
                -action        connect \
                -port_handle   $hltSourcePort \
                -ipcp_mode     ipv4\

Output for the above example:

{status 1} {procName sth::pppox_control} {handles host1}

#### HLTAPI for Python ####

To connect a list of PPPoX handles:

device_list = [device_ret0['handle'].split()[0],device_ret1['handle'].split()[0]]

ctrl_ret1 = sth.pppox_control (
                 handle              = device_list,
                 action              = 'connect');

Sample Output:

{'status': '1', 'procName': 'sth::pppox_control', 'handles': 'host4 host6'}

#### HLTAPI for Perl ####

To connect a list of PPPoX handles:

my $device_list = "$device_ret0{handle}[0] $device_ret1{handle}[0]";

my %ctrl_ret1 = sth::pppox_control (
                 handle              => "$$device_list",
                 action              => 'connect');

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'sth::pppox_control';
$VAR3 = 'handles';
$VAR4 = 'host4 host6';
$VAR5 = 'status';
$VAR6 = '1';

End of Procedure Header

sth::pppox_stats

Purpose

Returns PPPoE port statistics associated with the specified port. 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::pppox_stats
    [-mode {aggregate | session}  M]
    [-handle <PPPoE_session_block_handle>]
    [-port_handle <port_handle>]

Arguments

-handle

Specifies the handle of the PPPoE session block for which you want to retrieve PPPoE port statistics. You must specify -handle or -port_handle, but not both.

-port_handle

Specifies the port for which you want to retrieve PPPoE statistics. You must specify -handle or -port_handle, but not both.

-mode

Specifies the type of statistics to return in the keyed list. The -mode argument is Mandatory . Possible values are aggregate or session:

aggregate  Retrieves transmitted and received statistics for all
           PPPoE sessions associated with the specified port and a
           status value (1 for success).

session    Retrieves transmitted and received statistics for only
           the PPPoE sessions specified with -handle.

Note

Session statistics are only valid after the PPPoE sessions are established. They will not be returned nor accessible until you are connected.

Cisco-specific Arguments

Although the -retry option is supported by Spirent HLTAPI, we strongly recommend that you use sth::pppox_control -action retry instead.

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

Following is a keyed list showing the types of keys returned for -mode aggregate:

aggregate.atm_mode              Specifies whether the port is in ATM mode
                                (currently not supported)
aggregate.avg_setup_time........Average time :mandatory:`Mandatory` to bring a session up
aggregate.chap_auth_rsp_tx......Number of CHAP messages sent
aggregate.chap_auth_chal_rx.....The number of CHAP messages received*
aggregate.chap_auth_succ_rx......The number of CHAP messages received*
aggregate.chap_auth_fail_rx......The number of CHAP messages received*

aggregate.connecting............PPPoE clients that are connecting. If
                                aggregate.connecting is 1, then there are
                                sessions connecting on the port.

aggregate.connected.............All sessions that have finished with NCP
                                negotiation. If aggregate.connected is 1,
                                then PPPoX has finished attempting all
                                configured PPPoX sessions.

aggregate.idle..................The sessions have been disconnected or
                                terminated. If aggregate.idle is 1, then
                                the port state is idle.

aggregate.disconnecting.........If aggregate.disconnecting is 1, then PPPoX
                                sessions are disconnecting.

aggregate.connect_attempts......Number of sessions attempted
aggregate.connect_success.......Number of sessions that connected
                                successfully
aggregate.disconnect_failed.....Number of sessions that failed to
                                disconnect
aggregate.disconnect_success....Number of sessions that disconnected
                                successfully
aggregate.echo_req_rx...........Number of Echo Requests received
aggregate.echo_rsp_tx...........Number of Echo Replies sent

aggregate.ipcp_cfg_ack_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_ack_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_nak_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_nak_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_rej_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_rej_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_req_rx.......Total number of IPCP messages received*
aggregate.lcp_cfg_req_rx........Number of LCP Configure-Request messages
                                received
aggregate.lcp_cfg_req_tx........Number of LCP Configure-Request messages
                                sent
aggregate.lcp_cfg_rej_rx........Number of LCP Configure-Reject messages
                                received
aggregate.lcp_cfg_rej_tx........Number of LCP Configure-Reject messages
                                sent
aggregate.lcp_cfg_ack_rx........Number of LCP Configure-ACK messages
                                received
aggregate.lcp_cfg_ack_tx........Number of LCP Configure-ACK messages
                                sent
aggregate.lcp_cfg_nak_rx........Number of LCP Configure-NAK messages
                                received
aggregate.lcp_cfg_nak_tx........Number of LCP Configure-NAK messages sent
aggregate.max_setup_time........Maximum time :mandatory:`Mandatory` to bring a session
                                                               up
aggregate.min_setup_time........Minimum time :mandatory:`Mandatory` to bring a session up
aggregate.num_sessions..........Number of sessions configured
aggregate.padi_rx...............Number of PADI messages received
aggregate.padi_tx...............Number of PADI messages sent
aggregate.pado_rx...............Number of PADO messages received
aggregate.padr_tx...............Number of PADR messages sent
aggregate.pads_rx...............Number of PADS messages received
aggregate.padt_tx...............Number of PADT messages sent
aggregate.padt_rx...............Number of PADT messages received
aggregate.pap_auth_ack_rx.......Number of PAP ACK messages received
aggregate.pap_auth_nak_rx.......Number of PAP NAK messages received
aggregate.pap_auth_req_tx.......Number of PAP Request messages sent
aggregate.retry_count...........Number of sessions that have been retried
                                using the Retry function
aggregate.sessions_up...........Number of sessions currently active
aggregate.sessions_down.........Number of sessions that failed to connect
aggregate.success_setup_rate....Number of sessions per second that have
                                been established
aggregate.term_ack_rx...........Number of LCP Terminate-ACK messages
                                received
aggregate.term_ack_tx...........Number of LCP Terminate-ACK messages
                                sent
aggregate.term_req_rx...........Number of LCP Terminate-Request messages
                                received
aggregate.term_req_tx...........Number of LCP Terminate-Request messages
                                sent

Following is a keyed list showing the types of keys returned for -mode session:

session.<session ID>.agg
                                The aggregate statistics of all sessions on that
                                particular host

session.<session ID>.attempted
                                Number of times this session was attempted
session.<session ID>.chap_auth_chal_rx
                                Total number of CHAP responses received*
session.<session ID>.chap_auth_fail_rx
                                Total number of CHAP responses received *
session.<session ID>.chap_auth_rsp_tx
                                Total number of CHAP responses sent*
session.<session ID>.chap_auth_succ_rx
                                Total number of CHAP responses received *
session.<session ID>.completed
                                Number of times this session was
                                successfully connected and disconnected
session.<session ID>.connect_success
                                Number of times this session was
                                successfully connected and disconnected
session.<session ID>.echo_req_rx
                                Total number of Echo-Request packets
                                received
session.<session ID>.echo_rsp_tx
                                Total number of Echo-Reply packets sent

session.<session ID>.failed_connect
                                Number of times this session failed to
                                connect
session.<session ID>.failed_disconnect
                                Number of times this session failed to
                                disconnect
session.<session ID>.ip_addr
                                IPv4 address assigned by the DUT to the
                                subscriber
session.<session ID>.ipv6_addr
                                IPv6 address assigned by the DUT to the
                                subscriber
session.<session ID>.ipv6_global_addr
                                IPv6 global address
session.<session ID>.ipcp_cfg_ack_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_ack_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_nak_rx
                                Total number of IPCP responses receive
                                (IPv4)*
session.<session ID>.ipcp_cfg_nak_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_rej_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_rej_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_req_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_req_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.lcp_cfg_ack_rx
                                Total number of Configure-Acknowledge
                                packets received
session.<session ID>.lcp_cfg_ack_tx
                                Total number of Configure-Acknowledge
                                packets sent
session.<session ID>.lcp_cfg_nak_rx
                                Total number of Configure-Negative-
                                Acknowledge packets received
session.<session ID>.lcp_cfg_nak_tx
                                Total number of Configure-Negative-
                                Acknowledge packets sent
session.<session ID>.lcp_cfg_rej_rx
                                Total number of Configure-Reject packets
                                received
session.<session ID>.lcp_cfg_rej_tx
                                Total number of Configure-Reject packets
                                sent
session.<session ID>.lcp_cfg_req_rx
                                Total number of Configure-Request packets
                                received
session.<session ID>.lcp_cfg_req_tx
                                Total number of Configure-Request packets
                                sent
session.<session ID>.padi_rx
                                Total number of PPPoE Active Discovery
                                Initialized packets received
session.<session ID>.padi_tx
                                Total number of PPPoE Active Discovery
                                Initialized packets sent
session.<session ID>.pado_rx
                                Total number of PPPoE Active Discovery
                                Offer packets received
session.<session ID>.pado_tx
                                Total number of PPPoE Active Discovery
                                Offer packets sent
session.<session ID>.padr_rx
                                Total number of PPPoE Active Discovery
                                Request packets received
session.<session ID>.padr_tx
                                Total number of PPPoE Active Discovery
                                Request packets sent
session.<session ID>.pads_rx
                                Total number of PPPoE Active Discovery
                                Session-confirmation packets received
session.<session ID>.pads_tx
                                Total number of PPPoE Active Discovery
                                Session-confirmation packets sent
session.<session ID>.padt_rx
                                Total number of PPPoE Active Discovery
                                Terminate packets received
session.<session ID>.padt_tx
                                Total number of PPPoE Active Discovery
                                Terminate packets sent
session.<session ID>.pap_auth_ack_rx
                                Total number of PAP responses received*
session.<session ID>.pap_auth_nak_rx
                                Total number of PAP responses sent*
session.<session ID>.pap_auth_req_tx
                                Total number of PAP responses received*
session.<session ID>.setup_time
                                Amount of time taken to bring up the
                                session
session.<session ID>.term_ack_rx
                                Total number of Terminate-Acknowledge
                                packets received
session.<session ID>.term_ack_tx
                                Total number of Terminate-Acknowledge
                                packets sent
session.<session ID>.term_req_rx
                                Total number of Terminate-Request packets
                                received
session.<session ID>.term_req_tx
                                Total number of Terminate-Request packets
                                sent

Note

“*” indicates the statistic is not fully supported and only provides the aggregate count.

Description

The sth::pppox_stats function retrieves a list of aggregate statistics for the PPPoE session configured on the specified port.

Examples

#### HLTAPI for Tcl ####

To retrieve statistics when -mode is aggregate:

sth::pppox_stats -handle host2 -mode aggregate

Sample Output:

{status 1} {aggregate {{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 6}
{lcp_cfg_rej_tx 0} {padt_tx 1} {pap_auth_ack_rx 0} {term_req_tx
1} {ipcp_cfg_ack_rx 6} {connect_success 2} {lcp_cfg_ack_rx 2} {num_sessions
1} {echo_req_rx 0} {chap_auth_fail_rx 0} {padr_tx 2} {max_setup_time 156}
{disconnect_success 1} {chap_auth_chal_rx 0} {echo_rsp_tx 0}
{pads_rx 2} {chap_auth_succ_rx 0} {ipcp_cfg_req_rx 6} {sessions_up 1}
{pap_auth_nak_rx 0} {ipcp_cfg_ack_tx 6} {ipcp_cfg_nak_rx 6}
{disconnect_failed 0} {lcp_cfg_req_rx 2} {padi_rx 0} {lcp_cfg_ack_tx 2}
{lcp_cfg_nak_rx 0} {min_setup_time 149} {success_setup_rate 6}
{chap_auth_rsp_tx 0} {term_ack_rx 0} {pads_tx 0} {pap_auth_req_tx 0}
{ipcp_cfg_rej_rx 6} {ipcp_cfg_req_tx 6} {sessions_down 0} {lcp_cfg_rej_rx 0}
{ipcp_cfg_nak_tx 6} {lcp_cfg_req_tx 2} {padi_tx 2} {padt_rx 0}
{lcp_cfg_nak_tx 0} {connect_attempts 2} {avg_setup_time 152} {pado_rx 2}
{connecting 0} {connected 1} {disconnecting 0} {idle 0} {atm_mode
0}}} {procName sth::pppox_stats} {handles host2}

To retrieve statistics when -mode is session:

set results_ret3 [sth::pppox_stats    \
    -handle                                           $device\
    -mode                                             session\
]

Sample Output:

{status 1} {session {{1 {{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0}
{ipv6_global_addr 2001::2} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0}
{failed_disconnect 0} {pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0}
{term_req_tx 0} {connect_success 1} {lcp_cfg_ack_rx 1} {completed 0}
{echo_req_rx 0} {chap_auth_fail_rx 0} {padr_tx 1} {ip_addr 0.0.0.0}
{chap_auth_chal_rx 0} {echo_rsp_tx 0} {setup_time 33} {pads_rx 1}
{chap_auth_succ_rx 0} {ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx
0} {ipcp_cfg_nak_rx 0} {lcp_cfg_req_rx 1} {failed_connect 0} {lcp_cfg_ack_tx 1}
{ipv6_addr fe80::2} {padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0}
{term_ack_rx 0} {pads_tx 0} {ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0}
{ipcp_cfg_req_tx 0} {ipcp_cfg_nak_tx 0} {lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 1}
{attempted 1} {padi_tx 1} {lcp_cfg_nak_tx 0} {padt_rx 0} {pado_rx 1}}} {2
{{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0} {ipv6_global_addr
2001:0:0:1::3} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0} {failed_disconnect 0}
{pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0} {term_req_tx 0}
{connect_success 1} {lcp_cfg_ack_rx 1} {completed 0} {echo_req_rx 0}
{chap_auth_fail_rx 0} {padr_tx 1} {ip_addr 0.0.0.0} {chap_auth_chal_rx 0}
{echo_rsp_tx 0} {setup_time 23} {pads_rx 1} {chap_auth_succ_rx 0}
{ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx 0} {ipcp_cfg_nak_rx 0}
{lcp_cfg_req_rx 1} {failed_connect 0} {lcp_cfg_ack_tx 1} {ipv6_addr fe80::3}
{padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0} {term_ack_rx 0} {pads_tx 0}
{ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0} {ipcp_cfg_req_tx 0} {ipcp_cfg_nak_tx 0}
{lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 1} {attempted 1} {padi_tx 1} {lcp_cfg_nak_tx
0} {padt_rx 0} {pado_rx 1}}}}} {procName sth::pppox_stats} {handles host3} {agg
{{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0} {ipv6_global_addr {2001::2
2001:0:0:1::3}} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0} {failed_disconnect 0}
{pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0} {term_req_tx 0}
{connect_success 2} {lcp_cfg_ack_rx 2} {completed 0} {echo_req_rx 0}
{chap_auth_fail_rx 0} {padr_tx 2} {ip_addr {0.0.0.0 0.0.0.0}} {chap_auth_chal_rx
0} {echo_rsp_tx 0} {setup_time 56} {pads_rx 2} {chap_auth_succ_rx 0}
{ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx 0} {ipcp_cfg_nak_rx 0}
{lcp_cfg_req_rx 2} {failed_connect 0} {lcp_cfg_ack_tx 2} {ipv6_addr {fe80::2
fe80::3}} {padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0} {term_ack_rx 0}
{pads_tx 0} {ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0} {ipcp_cfg_req_tx 0}
{ipcp_cfg_nak_tx 0} {lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 2} {attempted 2} {padi_tx
2} {lcp_cfg_nak_tx 0} {padt_rx 0} {pado_rx 2}}}

#### HLTAPI for Python ####

Sample Input:

results_ret1 = sth.pppox_stats (
            handle              = device,
            mode                = 'aggregate');

Sample Output:

{'status': '1', 'aggregate': {'num_sessions': '1', 'ipcp_cfg_nak_rx': '0',
'echo_rsp_tx': '0', 'term_ack_rx': '0', 'ipcp_cfg_nak_tx': '0',
'lcp_cfg_ack_rx': '0', 'lcp_cfg_ack_tx': '0', 'pado_rx': '0', 'padr_rx': '0',
'pads_rx': '0', 'padr_tx': '0', 'ipcp_cfg_rej_rx': '0',
'disconnect_success': '0', 'max_setup_time': '0', 'ipcp_cfg_rej_tx': '0',
'disconnect_failed': '0', 'chap_auth_succ_rx': '0', 'padt_rx': '0',
'term_ack_tx': '0', 'min_setup_time': '0', 'avg_setup_time': '0',
'padt_tx': '0', 'pads_tx': '0', 'lcp_cfg_rej_rx': '0', 'lcp_cfg_req_tx': '0',
'pap_auth_ack_rx': '0', 'connecting': '0', 'connect_success': '0',
'chap_auth_fail_rx': '0', 'disconnecting': '0', 'lcp_cfg_rej_tx': '0',
'lcp_cfg_req_rx': '0', 'pap_auth_req_tx': '0', 'echo_req_rx': '0',
'sessions_up': '0', 'ipcp_cfg_ack_rx': '0', 'connected': '0',
'connect_attempts': '0', 'atm_mode': '0', 'pap_auth_nak_rx': '0', 'term_req_tx'::
'0', 'chap_auth_chal_rx': '0', 'ipcp_cfg_ack_tx': '0', 'lcp_cfg_nak_rx': '0',
'term_req_rx': '0', 'padi_tx': '0', 'chap_auth_rsp_tx': '0', 'idle': '1',
'abort': '0', 'ipcp_cfg_req_rx': '0', 'padi_rx': '0', 'sessions_down': '0',
'ipcp_cfg_req_tx': '0', 'success_setup_rate': '0', 'lcp_cfg_nak_tx': '0'},
'handles': 'host4', 'procName': 'sth::pppox_stats'}

#### HLTAPI for Perl ####

Sample Input:

my %results_ret1 = sth::pppox_stats (
             handle              => "$device",
             mode                => 'aggregate');

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'sth::pppox_stats';
$VAR3 = 'handles';
$VAR4 = 'host4';
$VAR5 = 'status';
$VAR6 = '1';
$VAR7 = 'aggregate';
$VAR8 = {
          'echo_req_rx' => '0',
          'ipcp_cfg_ack_rx' => '0',
          'term_req_tx' => '0',
          'ipcp_cfg_ack_tx' => '0',
          'pap_auth_nak_rx' => '0',
          'lcp_cfg_req_rx' => '0',
          'sessions_up' => '0',
          'padi_tx' => '0',
          'term_ack_tx' => '0',
        ...
        };

End of Procedure Header