DHCP Server Functions

sth::emulation_dhcp_server_config

Purpose

Creates, modifies, or resets an emulated Dynamic Host Configuration Protocol (DHCP) server or Dynamic Host Configuration Protocol for IPv6 or Prefix delegation (DHCPv6/PD) server for the specified Spirent HLTAPI port or handle.

A DHCP or DHCPv6/PD server is an Internet host that returns configuration parameters to DHCP or DHCPv6/PD clients respectively. DHCP or DHCPv6/PD servers can dynamically assign an IP address and deliver configuration parameters to a DHCP or DHCPv6/PD client on a TCP/IP network. DHCP allows the reuse of an address that is no longer needed by the client to which it was assigned.

Synopsis

Note

  1. M indicates that the argument is Mandatory .
  2. S indicates the argument is for scaling scenarios.
sth::emulation_dhcp_server_config
     [-mode {create|enable|modify|activate|reset}  M]
     [-port_handle <port_handle>]
     [-handle <dhcp_server_handle>|<device_handle>]
     [-count <1-100000>]
     [-encapsulation {ETHERNET_II | ETHERNET_II_VLAN | ETHERNET_II_QINQ |
            ATM_LLC_SNAP_ETHERNET_II | ATM_VC_MUX_ETHERNET_II}
     [-ip_version {4|6}]
     [-mac_addr_step <aa:bb:cc:dd:ee:ff>]
     [-rebinding_time_percent <1-200>]
     [-renewal_time_percent <0-200>]
     [-vlan_id <0-4095>]
     [-vlan_cfi {0|1}>]
     [-vlan_id_count <1-4096>]
     [-vlan_id_mode {fixed|increment}]
     [-vlan_id_step <0-4095>]
     [-vlan_user_priority <0-7>]
     [-vlan_outer_id <0-4095>]
     [-vlan_outer_cfi {0|1}>]
     [-vlan_outer_id_count <1-4096>]
     [-vlan_outer_id_mode {fixed|increment}]
     [-vlan_outer_id_step <0-4095>]
     [-vlan_outer_user_priority <0-7>]
     [-vlan_id_outer <0-4095>]
     [-vlan_id_outer_step <1-4096>]
     [-vlan_id_outer_count {fixed|increment}]
     [-vlan_id_outer_mode <0-4095>]
     [-assign_strategy {gateway | circuit_id | remote_id | link_selection |
                        vpn_id | pool_by_pool | interface_id}]
     [-circuit_id <circuit_id_list>]
     [-circuit_id_count <1-4294967295>]
     [-decline_reserve_time <1-600>]
     [-dhcp_ack_options {0|1}]
     [-dhcp_ack_time_offset <8 HEX chars>]
     [-dhcp_ack_router_address <a.b.c.d>]
     [-dhcp_ack_time_server_address <a.b.c.d>]
     [-dhcp_ack_circuit_id <8 HEX chars>]
     [-dhcp_ack_remote_id <8 HEX chars>]
     [-dhcp_offer_options {0|1}]
     [-dhcp_offer_time_offset <integer>]
     [-dhcp_offer_router_address <a.b.c.d>]
     [-dhcp_offer_time_server_address <a.b.c.d>]
     [-dhcp_offer_circuit_id <8 HEX chars>]
     [-domain_name <ALPHANUM>]
     [-domain_name_server_list <server_name_list>]
     [-dhcp_offer_remote_id <8 HEX chars>]
     [-enable_custom_pool  {true|false}]
     [-enable_overlap_addr {true|false}]
     [-host_name <host_name>]
     [-host_addr_prefix_length  <0-32>]
     [-ip_address <a.b.c.d>]
     [-ip_step <a.b.c.d>]
     [-ip_prefix_step <integer>]
     [-ip_prefix_length <0-32>]
     [-ip_repeat <integer>]
     [-ip_gateway <a.b.c.d>]
     [-lease_time <10-4294967295>]
     [-ipaddress_pool <a.b.c.d>]
     [-ipaddress_count <integer>]
     [-ipaddress_increment <integer>]
     [-min_allowed_lease_time <1-4294967295>]
     [-offer_reserve_time <1-600>]
     [-local_mac <aa:bb:cc:dd:ee:ff>]
     [-remote_mac <aa.bb.cc.dd.ee.ff>]
     [-router_list <ip_list>]
     [-remote_id <remote_id_list>]
     [-remote_id_count <1-20>]
     [-vci <0-65535>]
     [-vci_count <1-65536>]
     [-vci_step <0-65535>]
     [-vpi <0-255>]
     [-vpi_count <1-256>]
     [-vpi_step <0-255>]
     [-vpn_id <circuit_id_list >]
     [-vpn_id_count <1-4294967295>]
     [-vpn_id_type {nvt_ascii|rfc_2685}]
     [-addr_pool_step_per_server <numeric>]
     [-addr_pool_host_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-addr_pool_addresses_per_server <numeric>]
     [-addr_pool_prefix_length <0-128>]
     [-addr_pool_start_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_addr_pool_preferred_lifetime <numeric>]
     [-add_addr_pool_valid_lifetime <numeric>]
     [-add_addr_pool_remote_id <ANY>]
     [-add_addr_pool_remote_id_count <1-20>]
     [-add_addr_pool_remote_id_enterprise <numeric>]
     [-add_addr_pool_min_iaid <numeric>]
     [-add_addr_pool_max_iaid <numeric>]
     [-add_addr_pool_interface_id <ANY>]
     [-add_addr_pool_interface_id_count <1-20>]
     [-addr_pool_custom_enable_wildcards {true|false}]
     [-addr_pool_custom_string_as_hex_value {true|false}]
     [-addr_pool_custom_include_in_message {ADVERTISE| REPLY|RECONFIGURE|RELAY_REPL}]
     [-addr_pool_custom_option_value <0-255>]
     [-addr_pool_custom_option_payload <ALPHANUMERIC>]
     [-add_addr_pool_step_per_server <numeric>]
     [-add_addr_pool_host_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_addr_pool_addresses_per_server <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_addr_pool_prefix_length <0-128>]
     [-add_addr_pool_start_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_prefix_pool_step_per_server <numeric>]
     [-add_prefix_pool_per_server <numeric>]
     [-add_prefix_pool_prefix_length <0-128>]
     [-add_prefix_pool_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_prefix_pool_start_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-add_prefix_pool_valid_lifetime <numeric>]
     [-add_prefix_pool_remote_id_enterprise <numeric>]
     [-add_prefix_pool_remote_id_count <1-20>]
     [-add_prefix_pool_remote_id <ANY>]
     [-add_prefix_pool_preferred_lifetime <numeric>]
     [-add_prefix_pool_interface_id <ANY>]
     [-add_prefix_pool_interface_id_count <1-20>]
     [-add_prefix_pool_min_iaid <numeric>]
     [-add_prefix_pool_max_iaid <numeric>]
     [-dhcp6_delayed_auth_key_id <0-4294967295>]
     [-dhcp6_delayed_auth_key_value <ALPHANUMERIC>]
     [-dhcp_realm <ANY>]
     [-gateway_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-gateway_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-local_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-local_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-local_ipv6_prefix_len <0-128>]
     [-server_emulation_mode {DHCPV6|DHCPV6_PD}]
     [-enable_delayed_auth {true|false}]
     [-enable_reconfigure_key {true|false}]
     [-preferred_lifetime <numeric>]
     [-reconfigure_key <ALPHANUMERIC>]
     [-reconfigure_key_value_type {ASCII| HEX}]
     [-valid_lifetime <numeric>]
     [-prefix_pool_step_per_server <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-prefix_pool_per_server <numeric>]
     [-prefix_pool_prefix_length <0-128>]
     [-prefix_pool_step <numeric>]
     [-prefix_pool_start_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
     [-prefix_pool_custom_enable_wildcards {true|false}]
     [-prefix_pool_custom_string_as_hex_value {true|false}]
     [-prefix_pool_custom_include_in_message {ADVERTISE| REPLY|RECONFIGURE|RELAY_REPL}]
     [-prefix_pool_custom_option_value <0-255>]
     [-prefix_pool_custom_option_payload <ALPHANUMERIC>]
     [-server_custom_enable_wildcards {true|false}]
     [-server_custom_string_as_hex_value {true|false}]
     [-server_custom_include_in_message {ADVERTISE| REPLY|RECONFIGURE|RELAY_REPL}]
     [-server_custom_option_value <0-255>]
     [-server_custom_option_payload <ALPHANUMERIC>]
     [-pvc_incr_mode {vci|vpi|both}]
     [-qinq_incr_mode {inner|outer|both}]
     [-tos_value <NUMERIC|HEX>]
     [-expand {true|false} S]
     [-prefix_pool_start <IPV6>]
     [-addr_pool_start <IPV6>]
     [-prefix_pool_length <1-128>]
     [-ipv6_addr_pool_host_step <IPV6>]
     [-addr_pool_count <1-32768>]
     [-prefix_pool_count <1-32768>]
     [-addr_pool_length <1-128>]
     [-ipv6_prefix_pool_step <IPV6>]
     [-addr_pool_step <IPV6>]

Arguments

Arguments Common for DHCPv4 and DHCPv6

-port_handle

Specifies the port on which to create the DHCP or DHCPv6/PD server when -mode is set to “create”. This argument is Mandatory only for “create” mode.

-mode

Specifies the action to perform on the specified port or DHCP or DHCPv6/PD server handle. The modes are described below:

create - Creates a DHCP or DHCPv6/PD server on the port
        specified with the -port_handle argument. You must
        specify the -port_handle argument.

enable- Creates a DHCP or DHCPv6/PD server on the device
        specified with the -handle argument. You must specify the
        -handle argument.

modify - Changes the configuration for the DHCP or DHCPv6/PD
         server identified by the -handle argument. You must specify
         the -handle argument.

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

              For DHCPv6/PD::

              ip_version
              remote_id
              interface_id
              prefix_pool_start
              remote_id_enterprise
              addr_pool_start
              valid_lifetime
              interface_id_count
              server_emulation_mode
              renewal_time_percent
              prefix_pool_length
              ipv6_addr_pool_host_step
              addr_pool_count
              remote_id_count
              rebinding_time_percent
              preferred_lifetime
              prefix_pool_count
              addr_pool_length
              ipv6_prefix_pool_step
              addr_pool_step

       2. Creates devices and enables DHCPv4/DHCPv6 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 DHCP or DHCPv6/PD server identified by the -handle
        argument. You must specify the -handle argument.

Note

For -mode enable, the following options will be obsoleted when ip_version is not 6:

-local_mac
-remote_mac
-vlan_id
-vlan_id_mode
-vlan_id_step
-vlan_id_count
-vlan_user_priority
-vlan_ethertype
-ip_address
-ip_step
-ip_prefix_step
-ip_prefix_length
-ip_repeat
-ip_gateway
-ipv6_gateway
-vlan_outer_id
-vlan_outer_id_mode
-vlan_outer_id_step
-vlan_outer_id_count
-vlan_outer_user_priority
-vlan_outer_ethertype
-qinq_incr_mode
-vci
-vci_step
-vci_count
-vpi
-vpi_step
-vpi_count
-pvc_incr_mode
-handle

Specifies the DHCP or DHCPv6/PD server handle when -mode is set to modify or reset, or specifies the device handle when -mode is set to enable. This argument is Mandatory for modes enable, modify and reset. See -mode.

-count

Specifies the number of emulated DHCP or DHCPv6/PD server devices. Possible values range from 1 to 100000. The default value is 1.

-encapsulation

Specifies the type of Layer 2 encapsulation. Possible values are:

ETHERNET_II - Specifies the Layer 2 encapsulation to be
               Ethernet II frame. This option is available for
               Ethernet cards.

               If you specify -vlan_* parameters, Ethernet II with
               a single VLAN tag will be enabled.

               If you specify both -vlan_* and -vlan_outer_*
               parameters, Ethernet II with two VLAN tags will
               be enabled.

ETHERNET_II_VLAN - Ethernet II with a single VLAN tag

ETHERNET_II_QINQ - Ethernet II with two VLAN tags.

ATM_LLC_SNAP_ETHERNET_II - Specifies the Layer 2
              encapsulation to Ethernet over VC Multiplexed ATM
              which will encapsulate the Ethernet packets inside
              AAL5 LLC_SNAP frames. This option is available
              for ATM cards.

ATM_VC_MUX_ETHERNET_II - Specifies the Layer 2
              encapsulation to Ethernet over LLC Encapsulated
              ATM which will encapsulate the Ethernet packets
              inside AAL5 VC_MUX frames. This option is
              available for ATM cards.

Note

1. ATM_LLC_SNAP_ETHERNET_II and ATM_VC_MUX_ETHERNET_II are not available for DHCPv6. 2. These values are not case sensitive. User can specify either upper or lower case. Example: ETHERNET_II or ethernet_ii

-mac_addr_step

Specifies the increment to generate additional MAC addresses for DHCP clients. The value must be in MAC format. The default value is 00:00:00:00:00:01.

-ip_version

Spirent Extension (for Spirent HLTAPI only).

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

-rebinding_time_percent

Spirent Extension (for Spirent HLTAPI only).

Specifies rebinding lease time (T2) as a percentage of Lease Time. Possible values range from 0.0 to 200.0. The default is 87.5 for DHCPv4, 80 for DHCPv6.

-renewal_time_percent

Spirent Extension (for Spirent HLTAPI only).

Specifies the percent of the lease time at which the client should begin the renewal process (T1). Possible values range from 0 to 200. The default value is 50.

-vlan_id

Specifies the VLAN ID of the VLAN interface. Possible values range from 0 to 4095. You can specify this argument when -encapsulation is set to ETHERNET_II, ETHERNET_II_VLAN, ATM_LLC_SNAP_ETHERNET_II or ATM_VC_MUX_ETHERNET_II.

-vlan_cfi

Spirent Extension (for Spirent HLTAPI only).

Sets the canonical format indicator (CFI) field in VLAN for the emulated router node. Possible values are 0 (Ethernet) and 1 (Token Ring). The default value is 1.

-vlan_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of VLAN IDs to use when generating multiple VLANs. Possible values range from 1 to 4096. The default value is 1.

-vlan_id_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies how Spirent TestCenter assigns VLAN tags when the router count is greater than 1. Possible values are:

fixed -  The same VLAN ID is the same for all packets.
         The fixed VLAN ID is the value of the -vlan_id
         argument.

increment - For all packets, the VLAN tag ID increments by the
           step size specified in the -vlan_id_step argument.

The default is increment.

-vlan_id_step

Spirent Extension (for Spirent HLTAPI only).

The step size by which the VLAN value is incremented when you set -vlan_id_mode to “increment”. Possible values range from 0 to 4095. You must specify the step size when -vlan_id_count is greater than 1. The default is 1.

-vlan_user_priority

Spirent Extension (for Spirent HLTAPI only).

Specifies the VLAN priority for the inner VLAN. Possible values range from 0 to 7. The default value 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. You can specify this argument when -encapsulation is set to ETHERNET_II, ETHERNET_II_QINQ, ATM_LLC_SNAP_ETHERNET_II or ATM_VC_MUX_ETHERNET_II. You can specify this argument only when -ip_version is set to 4.

-vlan_outer_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of outer VLAN IDs to use when generating multiple outer VLANs. Possible values range from 1 to 4096. The default is 1. You can specify this argument only when -ip_version is set to 4.

-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 the router count is greater than 1. You can specify this argument only when -ip_version is set to 4. 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_cfi

Spirent Extension (for Spirent HLTAPI only).

Sets the CFI field in the outer VLAN tag for the emulated device. Possible values are 0 (Ethernet) and 1 (Token Ring). The default value is 1.

-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. You can specify this argument only when -ip_version is set to 4.

-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.

-vlan_id_outer

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_id_outer, you must specify -vlan_id. You can specify this argument when -encapsulation is set to ETHERNET_II, ETHERNET_II_QINQ, ATM_LLC_SNAP_ETHERNET_II or ATM_VC_MUX_ETHERNET_II. You can specify this argument only when -ip_version is set to 6.

-vlan_id_outer_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of outer VLAN IDs to use when generating multiple outer VLANs. Possible values range from 1 to 4096. The default is 1. You can specify this argument only when -ip_version is set to 6.

-vlan_id_outer_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies how Spirent TestCenter assigns VLAN tags to packets in the specified outer header when the router count is greater than 1. You can specify this argument only when -ip_version is set to 6. 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_id_outer argument.

increment - For all packets, the outer VLAN tag ID
          increments by the step specified in the
          -vlan_id_outer_step argument.
-vlan_id_outer_step

Spirent Extension (for Spirent HLTAPI only).

The amount by which to increment the specified outer VLAN ID (-vlan_id_outer) for subsequent packets. Possible values range from 1 to 4094. You must specify this step when you specify increment for the -vlan_id_outer_mode argument. You can specify this argument only when -ip_version is set to 6.

DHCPv4 Specific Arguments

-assign_strategy

Spirent Extension (for Spirent HLTAPI only).

Specifies the strategy with which the server chooses address pools to assign addresses. Possible values are described below:

gateway        Assign addresses from those pools that
               have the same network as the IP address

circuit_id     Assign addresses from those pools that
               match the relay agent circuit ID option received

remote_id      Assign addresses from those pools that match the
               relay agent remote ID option received

link_selection  Assign addresses from those pools that match the
                relay agent link selection option received

vpn_id         Assign addresses from those pools that match the
               relay agent virtual subnet selection option received

pool_by_pool   Assign indiscriminate addresses from the default
               pool

interface_id   Assign address from those pools that match the relay
               agent interface ID option received. This option is
               available only for DHCPV6 devices.

Use | to combine multiple values if you want to specify more than one strategy. .. note:: Specifying pool_by_pool will disable all other options.

-circuit_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent circuit IDs to generate, so the pool can assign addresses for those DHCP clients that match any circuit ID in the list. This argument is available when -assign_strategy is set to circuit_id.

-circuit_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of circuit IDs to generate. This argument is available when -assign_strategy is set to circuit_id. Possible values range from 1 to 4294967295. The default value is 1.

-decline_reserve_time

Spirent Extension (for Spirent HLTAPI only).

Specifies the time to reserve a lease after a Decline message is received, in seconds. Possible values range from 1 to 600. The default value is 10.

-domain_name

Spirent Extension (for Spirent HLTAPI only).

Specifies the domain name for the server (option 15)

-domain_name_server_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of domain name servers (option 6)

-enable_custom_pool

Spirent Extension (for Spirent HLTAPI only).

Enables or disables DHCP server custom pool. Possible values are true (enable) and false (disable). If the value is true, -host_addr_prefix_length is available. The default value is false.

-enable_overlap_addr

Spirent Extension (for Spirent HLTAPI only).

Enables/disables address reuse. Possible values are true (enable) and false (disable). The default value is false.

-host_addr_prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the host address prefix length for the custom pool. Possible values range from 0 to 32. The default value is 24. You must set -enable_custom_pool to true.

-host_name

Spirent Extension (for Spirent HLTAPI only).

Specifies the server host name

-ip_address

Specifies the first IPv4 address of the emulated DHCP server. The default value is 192.85.1.3.

-ip_step

Specifies the step value for IPv4 addresses. The default increment is 0.0.0.1. You can use -ip_prefix_step and -ip_prefix_length to replace -ip_step argument. If the three arguments are specified, -ip_step must be equivalent with the step value figured out by -ip_prefix_step and -ip_prefix_length.

-ip_prefix_step

Specifies the size of the step applied to the prefix length bit position. You can use it with -ip_prefix_length to increase the IPv4 address when you are not also using -ip_step. You must set ip_prefix_length if you use -ip_prefix_step.

-ip_prefix_length

Specifies the IPv4 address prefix length. The prefix length is the bit position at which the -ip_prefix_step is applied. This argument is Mandatory when you use -ip_prefix_step. Possible values range from 0 to 32. The default value is 24.

-ip_repeat

Specifies the number of times to repeat the same IPv4 address before incrementing. The default value is 1.

-ip_gateway

Specifies the IPv4 gateway address of the emulated DHCP server. The default value is 192.85.1.1.

-lease_time

Specifies a finite time period, in seconds, to use the IP address offered by the DHCP server. The actual lease length that the DHCP sessions will receive depends on the lease time configured by the DHCP server. For example, if the DHCP server sends a lease time of one day (its default), then the IP address will only be good for one day, regardless of the value set by Spirent HLTAPI. Possible values range from 10 to 4294967295. The default value is 3600.

-ipaddress_pool

Specifies the first IPv4 address in the DHCP server address pool. An address pool is a set of addresses assigned by Internet Assigned Numbers Authority (IANA) or an associated organization.

-ipaddress_count

Specifies the number of IPv4 addresses in the DHCP server address pool. The default value is 65536.

-ipaddress_increment

Specifies the number by which to increase each IPv4 address in the DHCP server address pool. The default value is 1.

-dhcp_ack_options

Enable or disable the DHCP ACK (Acknowledge) options of the emulated DHCP server. DHCP Options are tagged data items that carry the configuration parameters and other control information. The data items are stored in the “options” field of the DHCP messages. DHCP ACK options are tagged data items stored in the “options” field of the DHCP ACK messages. DHCP ACK messages are sent by a selected DHCP server to acknowledge the client DHCP REQUEST messages. Possible values are 0 and 1. The default value is 0 (disabled). If enabled, you can specify DHCP ACK options which will be encapsulated in the DHCP ACK message sent to the client by the DHCP server.

-dhcp_ack_time_offset

Specifies DHCP ACK Option time offset (Option 2) in seconds. Its value can be positive or negative. The default value is 0. You can use dhcp_ack_time_offset when -dhcp_ack_options is enabled.

-dhcp_ack_router_address

Specifies the DHCP ACK option router option (Option 3) IPv4 address. You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You can use this argument when -dhcp_ack_options is enabled.

-dhcp_ack_time_server_address

Specifies the DHCP ACK option timer server address (Option 4). You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You can use this argument when -dhcp_ack_options is enabled.

-dhcp_ack_circuit_id

Specifies the circuit ID sub-option (sub-option 1) of the and is eight HEX characters. You can use this argument when -dhcp_ack_options is enabled.

-dhcp_ack_remote_id

Specifies the remote ID sub-option (sub-option 2) of the DHCP ACK Option relay agent (Option 82). The length is fixed and is eight HEX characters. You must set -dhcp_ack_options to 1 when using -dhcp_ack_remote_id.

-dhcp_offer_options

Enables or disables the DHCP OFFER Options of the emulated DHCP server. DHCP OFFER messages are sent by each DHCP server that receives the client DHCP DISCOVER packet to respond the DHCP DISCOVER packet. Possible values are 0 and 1. The default value is 0(disabled). If enabled, you can specify DHCP OFFER options which will be encapsulated in the DHCP OFFER message sent to the client by the DHCP server.

-dhcp_offer_time_offset

Specifies DHCP OFFER option time offset (Option 2) in seconds. Its value can be positive or negative. The default value is 0. You must set -dhcp_offer_options to 1 when using -dhcp_offer_time_offset.

-dhcp_offer_router_address

Specifies DHCP OFFER option router option (Option 3) IPv4 address. You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You must set -dhcp_offer_options to 1 when using -dhcp_offer_router_adddress.

-dhcp_offer_time_server_address

Specifies DHCP OFFER Option timer server address(Option 4). You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You must set -dhcp_offer_options to 1 when using -dhcp_offer_time_server_address.

-dhcp_offer_circuit_id

Specifies the circuit ID sub-option (sub-option 1) of DHCP OFFER option relay agent (Option 82). The length is fixed and is eight HEX characters. You must set -dhcp_offer_options to 1 when using -dhcp_offer_circuit_id.

-dhcp_offer_remote_id

Specifies the remote ID sub-option (sub-option 2) of DHCP OFFER option relay agent (Option 82). The length is fixed and is eight HEX characters. You must set -dhcp_offer_options to 1 when using -dhcp_offer_remote_id.

-pvc_incr_mode

Spirent Extension (for Spirent HLTAPI only).

Determines which ID to increment first. Possible values are:

vci - Increments the Virtual Circuit Identifier (VCI) before the
      Virtual Path Identifier (VPI).

vpi - Increments the VPI before the VCI.

both - Increments both the VPI and VCI at the same time.

You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-min_allowed_lease_time

Spirent Extension (for Spirent HLTAPI only).

Specifies the minimum lease time the server allows the client to request, in seconds. Possible values range from 1 to 4294967295. The default value is 10.

-offer_reserve_time

Spirent Extension (for Spirent HLTAPI only).

Specifies the time to reserve a lease after an Offer message is sent, in seconds. Possible values range from 1 to 600. The default value is 10.

-router_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of router IP addresses on the client subnet (option 3)

-remote_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent remote IDs to generate, so the pool can assign addresses for those DHCP clients that match any remote ID in the list. This argument is available when -assign_strategy is set to remote_id.

-remote_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of remote IDs to generate. This argument is available when -assign_strategy is set to remote_id. Possible values range from 1 to 20. The default value is 1.

-local_mac

Specifies the first MAC address of the emulated DHCP server

-remote_mac

Specifies the MAC address of the remote peer (DUT).

-tos_value

Spirent Extension (for Spirent HLTAPI only).

Specifies the IPv4 ToS value as an indication of the quality of service wanted. The value must be numerical or hexadecimal. The default value is 192.

-vci

Spirent Extension (for Spirent HLTAPI only).

Specifies the VCI of the first ATM PVC pool. Possible values range from 0 to 65535. The default is 100. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vci_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of VCIs used for the emulation of clients over ATM interfaces. Possible values range from 1 to 65536. The default is 1. The value of -vci_count must be divisible by the number of sessions. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vci_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the step size in which the VCI value is incremented. Possible values range from 0 to 65535. The default is 1. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vpi

Spirent Extension (for Spirent HLTAPI only).

Specifies the VPI of the first ATM PVC pool (for an ATM connection). Possible values range from 0 to 255. The default is 100. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vpi_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of VPIs used for the emulation of clients over ATM interfaces. Possible values range from 1 to 256. The default is 1. The VPI count number must be divisible by the number of sessions. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vpi_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the step size in which the VPI value is incremented. Possible values range from 0 to 255. The default is 1. You can specify this argument when -encapsulation is set to ATM_LLC_SNAP_ETHERNETII or ATM_VC_MUX_ETHERNETII.

-vpn_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent VPN IDs to generate, so the pool can assign addresses for those DHCP clients that match any VPN ID in the list. This argument is available when -assign_strategy is set to vpn_id.

-vpn_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of VPN IDs to generate. This argument is available when set -assign_strategy is set to vpn_id. Possible values range from 1 to 4294967295. The default value is 1.

-vpn_id_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the VPN ID type. This argument is available when -assign_strategy is set to vpn_id. Possible values are:: nvt_ascii Network Virtual Terminal (NVT) ASCII VPN Identifier rfc_2685 RFC 2685 VPN-ID

The default value is nvt_ascii.

DHCPv6/PD Specific Arguments (You must specify -ip_version to 6)

-gateway_ipv6_addr

Spirent Extension (for Spirent HLTAPI only).

Configures the first IPv6 gateway address for the emulated DHCPv6 devices. The value must be in IPv6 format. The default value is 2001::1. This argument is available when -dhcp_range_ip_type is set to ipv6.

-gateway_ipv6_addr_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate IPv6 gateway addresses for multiple devices. The value must be in IPv6 format. The default is ::. This argument is available when -dhcp_range_ip_type is set to ipv6.

-local_ipv6_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the starting IPv6 address of the emulated dhcpv6 devices. The default value is 2001::2. This argument is available when -dhcp_range_ip_type is set to ipv6.

-local_ipv6_addr_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate IPv6 gateway addresses for multiple devices. The value must be in IPv6 format. The default value is 0::1. This argument is available when -dhcp_range_ip_type is set to ipv6.

-local_ipv6_prefix_len

Spirent Extension (for Spirent HLTAPI only).

Specifies the IPv6 address prefix length. Possible values range from 0 to 128. The default value is 64. This argument is available when -dhcp_range_ip_type is set to ipv6.

-dhcp_realm

Spirent Extension (for Spirent HLTAPI only).

Specifies the DHCP realm that identifies the key used to generate the HMAC-MD5 value when using delayed authentication. The default is spirent.com. This argument is valid when -enable_delayed_auth is set to true.

-server_emulation_mode

Spirent Extension (for Spirent HLTAPI only).

Defines the server emulation mode. Possible values are DHCPV6 and DHCPV6_PD. The default is DHCPV6_PD.

-enable_delayed_auth

Spirent Extension (for Spirent HLTAPI only).

Enables or disables delayed authentication for the Authentication option in the IPv6 message. Possible values are true (enable) and false (disable). The default is false.

-enable_reconfigure_key

Spirent Extension (for Spirent HLTAPI only).

Enables or disables Reconfigure key authentication. Possible values are true (enable) and false (disable). The default is false.

-preferred_lifetime

Spirent Extension (for Spirent HLTAPI only).

Preferred lifetime in seconds for the IPv6 addresses. The default value is 604800.

-reconfigure_key

Spirent Extension (for Spirent HLTAPI only).

Specifies the key used for Reconfigure key authentication. The value is alphanumeric. The default value is spirentcom123456.

-reconfigure_key_value_type

Spirent Extension (for Spirent HLTAPI only).

Defines the Reconfigure key value type. Possible values are ASCII and HEX. The default is ASCII.

-valid_lifetime

Spirent Extension (for Spirent HLTAPI only).

Specifies the lease time for the IPv6 addresses, in seconds. The default value is 2592000.

-addr_pool_step_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the step value for the IPv6 addresse pool per server. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6.

-addr_pool_host_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the host addresses’ step in the IPv6 address pool. The value must be in IPv6 format. The default is ::1. This argument is available when -emulation_mode is set to DHCPV6.

-addr_pool_addresses_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of addresses in the pool. The default value is 1. This argument is available when -emulation_mode is set to DHCPv6.

-addr_pool_prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the IPv6 address prefix length. Possible values range from 0 to 128. The default value is 64. This argument is available when -emulation_mode is set to DHCPV6.

-addr_pool_start_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the starting address in the pool. The value must be in IPv6 format. The default value is 2000::1. This argument is available when -emulation_mode is set to DHCPV6.

-addr_pool_custom_enable_wildcards

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable wildcard expansion in the Option Payload field in address pool custom options. The length of the list must be same as the other address pool custom option attributes. Possible values are true (enable) and false (disable). The default is false.

-addr_pool_custom_string_as_hex_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable value as hexadecimal in the address pool custom option. The length of the list must be same as that of lists -addr_pool_custom_enable_wildcards, -addr_pool_custom_include_in_message, -addr_pool_custom_option_value and -addr_pool_custom_option_payload. Possible values are true (enable) and false (disable). The default is false.

-addr_pool_custom_include_in_message

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of types of DHCPv6 messages that will include the address pool custom option. The length of the list must be same as that of lists -addr_pool_custom_enable_wildcards, -addr_pool_custom_string_as_hex_value, -addr_pool_custom_option_value and -addr_pool_custom_option_payload. Possible values are ADVERTISE, REPLY, RECONFIGURE and RELAY_REPL. The default is the combined values of ADVERTISE and Reply.

-addr_pool_custom_option_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Option identifiers in the address pool custom option. The length of the list must be same as that of lists -addr_pool_custom_option_enable_wildcards, -addr_pool_custom_include_in_message, -addr_pool_custom_option_option_payload, and -addr_pool_custom_option_string_as_hex_value. Possible values range from 0 to 255. The default value is 0.

-addr_pool_custom_option_payload

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of the Option payload strings in the address pool custom option. The length of the list must be same as that of lists -addr_pool_custom_option_enable_wildcards, -addr_pool_custom_option_msg_type, -addr_pool_custom_include_in_message and -addr_pool_custom_option_string_as_hex_value. The value is alphanumeric.

-add_addr_pool_step_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional step value for the IPv6 addresse pool per server. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_host_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional host addresses’ step in the IPv6 address pool. The value must be in IPv6 format. The default is ::1. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_addresses_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional number of addresses in the pool. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional IPv6 address prefix length. Possible values range from 0 to 128. The default value is 64. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_start_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional starting address in the pool. The value must be in IPv6 format. The default value is 2000::1. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_preferred_lifetime

Spirent Extension (for Spirent HLTAPI only).

Specifies the preferred lifetime in seconds for the addresses. The default value is 604800. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_valid_lifetime

Spirent Extension (for Spirent HLTAPI only).

Specifies the valid lifetime in seconds for the addresses. The default value is 2592000. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_remote_id

Spirent Extension (for Spirent HLTAPI only).

Specifies the remote id for the address pool. The default value is remoteId_@p-@b-@s. This argument is available when -emulation_mode is set to DHCPV6 and -assign_strategy is set to REMOTE_ID.

-add_addr_pool_remote_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum remote id count that can be generated. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6 and -assign_strategy is set to REMOTE_ID.

-add_addr_pool_remote_id_enterprise

Spirent Extension (for Spirent HLTAPI only).

Specifies the vendor’s registered enterprise number in remote id option. The default value is 3456. This argument is available when -emulation_mode is set to DHCPV6 and -assign_strategy is set to REMOTE_ID.

-add_addr_pool_interface_id

Spirent Extension (for Spirent HLTAPI only).

Generate a list of interface ID so that this pool can assign addresses for those DHCPv6 clients that match any of the interface ID in the list. The default value is interfaceId_@p. This argument is available when -emulation_mode is set to DHCPV6 and -assign_strategy is set to INTERFACE_ID.

-add_addr_pool_interface_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum interface id count that can be generated. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6 and -assign_strategy is set to INTERFACE_ID.

-add_addr_pool_min_iaid

Spirent Extension (for Spirent HLTAPI only).

Specifies the minimum identifier for an Identity Association (IA) to accept in the pool. The default value is 0. This argument is available when -emulation_mode is set to DHCPV6.

-add_addr_pool_max_iaid

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum identifier for an IA to accept in the pool. The default value is 4294967295. This argument is available when -emulation_mode is set to DHCPV6.

-prefix_pool_step_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the increment value for the next client IPv6 address in the pool. The value must be in IPv6 format. The default value is 0:0:0:1::.

-prefix_pool_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of prefix pools per server. The default value is 1.

-prefix_pool_prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the prefix length for the IPv6 clients. Possible values range from 0 to 128. The default value is 64.

-prefix_pool_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the increment value for the next client address in the server. The default value is 1.

-prefix_pool_start_addr

Spirent Extension (for Spirent HLTAPI only).

Starting network address assigned to clients. The default value is 2000::1.

-prefix_pool_custom_enable_wildcards

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable wildcard expansion in the prefix custom option. The length of the list must be same as that of -prefix_pool_custom_option_string_as_hex_value, -prefix_pool_custom_include_in_messag, -prefix_pool_custom_option_value, and -prefix_pool_custom_option_payload Possible values are true (enable) and false (disable). The default is false.

-prefix_pool_custom_string_as_hex_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable value as hexadecimal in the prefix custom option. The length of the list must be same as that of -prefix_pool_custom_option_enable_wildcards, -prefix_pool_custom_include_in_messag, -prefix_pool__custom_option_value, and -prefix_pool_custom_option_payload. Possible values are true (enable) and false (disable). The default is false.

-prefix_pool_custom_include_in_message

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of types of DHCPv6 messages that will include the prefix pool custom option. The length of the list must be same as that of -prefix_pool_custom_option_enable_wildcards -prefix_pool_custom_option_string_as_hex_value, -prefix_pool__custom_option_value, and -prefix_pool_custom_option_payload. Possible values are ADVERTISE, REPLY, RECONFIGURE and RELAY_REPL. The default is a combined value of ADVERTISE and REPLY.

-prefix_pool_custom_option_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of option identifiers in the prefix custom option. The length of the list must be same as that of lists -prefix_pool_custom_option_enable_wildcards, -prefix_pool_custom_option_msg_type, -prefix_pool_custom_option_option_payload, and -prefix_pool_custom_option_string_as_hex_value. Possible values range from 0 to 255. The default value is 0.

-prefix_pool_custom_option_payload

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Option Payload strings in the prefix pool custom option. The length of the list must be same as that of lists -prefix_pool_custom_option_enable_wildcards, -prefix_pool_custom_option_msg_type, -prefix_pool_custom_include_in_message, and -prefix_pool_custom_option_string_as_hex_value.

-add_prefix_pool_step_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional increment value for the next client IPv6 address in the server. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6.

-add_prefix_pool_per_server

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional number of prefix pools per server. The default value is 1. This argument is available when -emulation_mode is set to DHCPV6.

-add_prefix_pool_prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional prefix length for the IPv6 clients. Possible values range from 0 to 128. The default value is 64. This argument is available when -emulation_mode is set to DHCPV6.

-add_prefix_pool_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the additional increment value for the next client address in the pool. The default value is 0:0:0:1::. This argument is available when -emulation_mode is set to DHCPV6.

-add_prefix_pool_start_addr

Spirent Extension (for Spirent HLTAPI only).

Starting network address assigned to clients. The default value is 2000::1. This argument is available when -emulation_mode is set to DHCPV6.

-add_prefix_pool_valid_lifetime

Specifies the length of time that an address remains in the valid state, during which the address can be used for new or existing communications. The valid-lifetime must be greater than the preferred-lifetime. This argument is available when -emulation_mode is set to DHCPv6/PD. Possible values range from 0 to 4294967295. The default value is 2592000.

-add_prefix_pool_remote_id_enterprise

Specifies the value of the enterprise number for the relay remote ID. Possible values range from 1 to 4294967295. The default value is 3456. This argument is available when -emulation_mode is set to DHCPv6/PD and -assign_strategy is set to REMOTE_ID.

-add_prefix_pool_remote_id_count

Specifies the maximum remote ID count that can be generated. Possible values range from 1 to 20. The default value is 1. This argument is available when -emulation_mode is set to DHCPv6/PD and -assign_strategy is set to REMOTE_ID.

-add_prefix_pool_remote_id

Specifies the remote ID for the prefix pool. The default value is remoteId_@p-@b-@s. This argument is available when -emulation_mode is set to DHCPv6/PD and -assign_strategy is set to REMOTE_ID.

-add_prefix_pool_preferred_lifetime

Specifies the length of time that a valid address is in the preferred state and can be used without any restrictions. The valid-lifetime must be greater than the preferred-lifetime. This argument is available when -emulation_mode is set to DHCPv6/PD. Possible values range from 0 to 4294967295. The default value is 604800.

-add_prefix_pool_interface_id

Generate a list of interface ID so that this pool can assign addresses for those DHCPv6 clients that match any of the interface ID in the list. The default value is interfaceId_@p. This argument is available when -emulation_mode is set to DHCPv6/PD and -assign_strategy is set to INTERFACE_ID.

-add_prefix_pool_interface_id_count

Specifies the maximum interface ID count that can be generated. Possible values range from 1 to 20. The default value is 1. This argument is available when -emulation_mode is set to DHCPv6/PD and -assign_strategy is set to INTERFACE_ID.

-add_prefix_pool_min_iaid

Specifies the minimum identifier for an Identity Association (IA) to accept in the pool. This argument is available when -emulation_mode is set to DHCPv6/PD. Possible values range from 0 to 4294967295. The default value is 0.

-add_prefix_pool_max_iaid

Starting network address assigned to clients. The default value is 2000::1. This argument is available when -emulation_mode is set to DHCPv6/PD. Possible values range from 0 to 4294967295. The default value is 0.

-dhcp6_delayed_auth_key_id

Spirent Extension (for Spirent HLTAPI only).

Specifies the list of Key identifiers used to generate the HMAC-MD5 values. The length of the list must be same as the dhcp6_delayed_auth_key_value. Possible values range from 0 to 4294967295. The default is 1. This argument is available when -enable_auth is set to true and -auth_protocol is set to DELAYED_AUTH.

-dhcp6_delayed_auth_key_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of keys used to generate the HMAC-MD5 value. The length of the list must be same as the -dhcp6_delayed_auth_key_id. This value is alphanumeric. The default value is spirent123. This argument is available when -enable_auth is set to true and -auth_protocol is set to DELAYED_AUTH.

-qinq_incr_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies the increment mode for ethernet_ii_qinq encapsulation. This parameter only applies to Q-in-Q Ethernet interfaces. Possible values are inner, outer, and both. The default is inner. The value of -count must be divisible by the values of -vlan_id_count and -vlan_outer_id_count. The modes are described below:

inner - When the number of sessions is greater than
       the inner VLAN count times the outer VLAN count, the
       inner VLAN ID is incremented first until the specified
       number of inner VLANs is exhausted, then the outer
       VLAN ID is incremented. This continues in a
       round-robin fashion until the number of
       sessions is exhausted.

outer - When the number of sessions is greater than the
       inner VLAN count times the outer VLAN count, the outer
       VLAN ID is incremented first until the specified number
       of outer VLANs is exhausted, and then the inner VLAN ID is
       incremented. This continues in a round-robin fashion
       until the number of sessions is exhausted.

both - When the number of sessions is greater than the
       inner VLAN count times the outer VLAN count, the
       inner VLAN ID and outer VLAN ID increment at the
       same time. This continues in a round-robin fashion
       until the number of sessions is exhausted.
-server_custom_enable_wildcards

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable wildcard expansion for the DHCPv6 server custom option. The length of the list must be same as that of -server_custom_string_as_hex_value, -server_custom_include_in_message, server_custom_option_value. -server custom option attributes and -server_custom_option_value. Possible values are (enable) true and false (disable). The default is false.

-server_custom_string_as_hex_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable value as hexadecimal in the DHCPv6 server custom option. The length of the list must be same as that of -server_custom_enable_wildcards, -server_custom_include_in_message, -server_custom_option_value, and -server_custom_option_payload. Possible values are true (enable) and false (disable). The default is false.

-server_custom_include_in_message

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of types of DHCPv6 messages that will include DHCPv6 server custom option. The length of the list must be same as that of lists -server_custom_enable_wildcards, -server_custom_string_as_hex_value, -server_custom_option_value and -server_custom_option_payload. Possible values are ADVERTISE, REPLY, RECONFIGURE, and RELAY_REPL. The default is the combined values of ADVERTISE and REPLY.

-server_custom_option_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Option identifiers for the DHCPv6 server custom option. The length of the list must be same as that of lists -server_custom_option_enable_wildcards, -server_pool_custom_option_msg_type, -serverl_custom_option_option_payload, and -server_custom_option_string_as_hex_value. Possible values range from 0 to 255. The default is 0.

-server_custom_option_payload

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Option payload strings for the DHCPv6 server custom option. The length of the list must be same as that of lists -server_custom_option_enable_wildcards, -server_pool_custom_option_msg_type, -server_custom_include_in_message, and -server_custom_option_string_as_hex_value.

-expand

Spirent Extension (for Spirent HLTAPI only).

Determines whether to expand the specified DHCPv4/DHCPv6 server device parameters into emulated DHCPv4/DHCPv6 device objects. It is used in Scaling test scenarios.

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

When set to false, only DHCPv4/DHCPv6 parameters are configured with no handle returned.

-prefix_pool_start

Specifies thepPrefix pool starting address. The default is 2000::: Applicable only in -mode activate when -block_mode or -expand is specified.

-addr_pool_start

Specifies the address pool starting address. The default is 2000::1 Applicable only in -mode activate when -block_mode or -expand is specified.

-prefix_pool_length

Specifies the prefix pool length. The default is 64 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_addr_pool_host_step

Specifies the address pool host step. The default is ::1 Applicable only in -mode activate when -block_mode or -expand is specified.

-addr_pool_count

Specifies the number of addresses in the address pool. The default is 200 Applicable only in -mode activate when -block_mode or -expand is specified.

-prefix_pool_count

Specifies the number of prefixes in the prefix pool. The default is 200 Applicable only in -mode activate when -block_mode or -expand is specified.

-addr_pool_length

Specifies the address pool prefix length. The default is 64 Applicable only in -mode activate when -block_mode or -expand is specified.

-ipv6_prefix_pool_step

Specifies the prefix pool step. The default is ::: Applicable only in -mode activate when -block_mode or -expand is specified.

-addr_pool_step

Specifies the address pool step per server. The default is ::: 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:

-dhcp_ack_options
-dhcp_ack_time_offset
-dhcp_ack_router_address
-dhcp_ack_time_server_address
-dhcp_ack_circuit_id
-dhcp_ack_remote_id
-dhcp_offer_options
-dhcp_offer_time_offset
-dhcp_offer_router_address
-dhcp_offer_time_server_address
-dhcp_offer_circuit_id
-dhcp_offer_remote_id
-handle
-pvc_incr_mode
-qinq_incr_mode
-vlan_id_mode
-vlan_outer_id_mode

Cisco-specific Arguments

The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:

-dhcp_ack_link_selection
-dhcp_ack_cisco_server_id_override
-dhcp_ack_server_id_override
-dhcp_ignore_mac
-dhcp_ignore_mac_mask
-dhcp_mac_nak
-dhcp_mac_nak_mask
-dhcp_ack_subnet_mask
-dhcp_offer_subnet_mask
-dhcp_offer_link_selection
-dhcp_offer_cisco_server_id_override
-dhcp_offer_server_id_override
-ipv6_gateway
-ip_count
-spfc_mac_mask_pool
-spfc_mac_pattern_pool
-spfc_mac_ipaddress_pool
-spfc_mac_ipaddress_count
-spfc_mac_ipaddress_increment

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.port_handle
       The port handle on which DHCP or DHCPv6/PD server emulation was
       configured

handle.dhcp_handle
       The handle that identifies the DDHCP or DHCPv6/PD server emulation
       created by the ``sth::emulation_dhcp_server_config`` function

handles
       The emulated device handles list with enabled DHCPv4/DHCPv6 server
                      configurations is created when expand is set true.

handle_list
       The emulated device handles list with enabled DHCPv4/DHCPv6 server
       configurations is created 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_dhcp_server_config function creates, modifies, or resets an emulated DHCP or DHCPv6/PD server. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

Use create mode to create the DHCP or DHCPv6/PD server on the specified port. The handle of the DHCP or DHCPv6/PD server host you created is returned. You can modify the DHCP or DHCPv6/PD server host using modify and reset modes.

When you create an emulated DHCP or DHCPv6/PD server, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated DHCP or DHCPv6/PD server will use respectively. (The port handle value is contained in the keyed list returned by the connect function.)

In addition to specifying the port, you must also provide one or more of the following pieces of information when you create a DHCP server:

DHCP for IPv4:

  • The IPv4 address for the emulated DHCP server (the -ip_address argument)
  • The IPv4 address for the DHCP server (DUT) to communicate with (the -ip_gateway argument)
  • The first IPv4 address in the DHCP server address pool (the -ipaddress_pool argument)

DHCPv6/PD:

  • The IPv6 address for the emulated DHCPv6/PD server (the -local_ipv6_addr
    argument)
  • The IPv6 address for the DHCPv6/PD server (DUT) to communicate with (the -gateway_ipv6_addr argument)
  • The first IPv6 address in the DHCPv6/PD server address pool (the -addr_pool_start_addr argument or the -prefix_pool_start_addr argument respectively)

After you create a DHCP or DHCPv6/PD server, use the sth::emulation_dhcp_server_control -mode connect command for Spirent HLTAPI to connect the server. To reset all of the DHCP or DHCPv6/PD servers associated with a particular port, use the reset mode with the sth::emulation_dhcp_server_control function.

Examples

#### HLTAPI for Tcl ####

The following example creates a DHCP server on the specified port:

sth::emulation_dhcp_server_config \
       -count 1 \
       -port_handle port1 \
       -local_mac 00:10:94:00:00:03 \
       -ip_address 192.0.1.4 \
       -ip_step 0.0.1.0 \
       -ip_prefix_length 24 \
       -ip_prefix_step 1 \
       -ip_repeat 1 \
       -ip_gateway 192.0.1.1 \
       -ipaddress_pool 192.0.1.5 \
       -ipaddress_increment 2 \
       -ipaddress_count 30 \
       -enable_custom_pool  true \
       -host_addr_prefix_length  18 \
       -vlan_id 200 \
       -vlan_ethertype 0x8100 \
       -lease_time 20 \
       -dhcp_ack_options 1 \
       -dhcp_ack_time_offset 12 \
       -dhcp_ack_router_adddress 10.0.0.1 \
       -dhcp_ack_time_server_address 20.0.0.1 \
       -dhcp_ack_circuit_id 12345678 \
       -dhcp_ack_remote_id 87654321 \
       -dhcp_offer_options 1 \
       -dhcp_offer_time_offset 25 \
       -dhcp_offer_router_address 10.0.0.2 \
       -dhcp_offer_time_server_address 20.0.0.2 \
       -dhcp_offer_circuit_id 22221111 \
       -dhcp_offer_remote_id 11112222

Sample output for example shown above:

{handle {{port_handle port1} {dhcp_handle host1}}} {status 1}

The following example configures a DHCP server over Ethernet over ATM on a port:

sth::emulation_dhcp_server_config \
        -mode create \
        -count 10 \
        -encapsulation ATM_LLC_SNAP_ETHERNET_II \
        -port_handle $hltSourcePort \
        -local_mac 00:10:94:00:00:03 \
        -ip_address 192.0.1.4 \
        -ip_gateway 192.0.1.1 \
        -ipaddress_pool 192.0.1.5 \
        -ipaddress_increment 2 \
        -ipaddress_count 30 \
        -lease_time 20 \
        -vci 100 \
        -vci_step 2 \
        -vpi 200 \
        -vpi_step 3 \
        -vci_count 3 \
        -vpi_count 4 \

Sample output for example shown above:

{handle {{port_handle port1} {dhcp_handle host1}}} {status 1}

The following example modifies the created DHCP server:

sth::emulation_dhcp_server_config \
        -mode modify \
        -handle dhcpserverHandle1 \
        -ip_address 192.0.1.6 \
        -dhcp_ack_options 1 \
        -dhcp_ack_time_offset 10 \
        -dhcp_ack_circuit_id 87654321

Sample output for example shown above:

{handle {dhcp_handle host1}}} {status 1}

The following example resets the specified DHCP server:

sth::emulation_dhcp_server_config \
      -mode reset \
      -handle dhcpserverHandle1

The following example creates a new DHCPv6 server:

sth::emulation_dhcp_config  \
       -mode                             create \
       -port_handle                      $hltHostPort \
       -ip_version                          6\
       -server_emulation_mode            DHCPV6_PD\
       -enable_delayed_auth              false\
       -enable_reconfigure_key           false\
       -preferred_lifetime               604800\
       -rebinding_time_percent           80.0\
       -reconfigure_key                  spirentcom123456\
       -reconfigure_key_value_type       ASCII\
       -renewal_time_percent             50.0\
       -valid_lifetime                   592000\
       -addr_pool_step_per_server        1\
       -addr_pool_host_step              ::1\
       -addr_pool_addresses_per_server   1\
       -addr_pool_prefix_length          64\
       -addr_pool_start_addr             2000::1\
       -addr_pool_custom_enable_wildcards      {false false}\
       -addr_pool_custom_string_as_hex_value  {false false}\
       -addr_pool_custom_include_in_message   {ADVERTISE REPLY}\
       -addr_pool_custom_option_value                 {1 2}\
       -addr_pool_custom_option_payload            {none none}

The following example modifies the created DHCPv6 server:

sth::emulation_dhcp_group_config  \
        -mode                        modify \
        -handle                      $hltHostPort \
        -rebinding_time_percent           70.0\
        -reneval_time_percent             50.0\
        -valid_lifetime                   2992000 \
        -enable_delayed_auth              true\
        -dhcp6_delayed_auth_key_id         {1 2}\
        -dhcp6_delayed_auth_key_value  {spirent1  spirent2} ]

Sample output for example shown above:

{status 1}

The following example is for -qinq_incr_mode inner:

sth::emulation_dhcp_server_config \
           -mode create \
           -count 10 \
           -qinq_incr_mode inner\
           -port_handle port1 \
           -vlan_user_priority 7 \
           -vlan_outer_id_count 2 \
           -vlan_outer_id 101 \
           -ip_address 192.168.1.4 \
           -vlan_id_count 5 \
           -vlan_id 201\
           -ipaddress_pool 192.168.1.5 \
           -ip_version 4 \
           -encapsulation ETHERNET_II_QINQ \
           -vlan_outer_user_priority 0 \
           -local_mac 00:00:00:62:0A:01

Sample output for example shown above:

# Generated values for outer VLAN ID
 101 101 101 101 101 102 102 102 102 102

# Generated values for inner VLAN ID
 201 202 203 204 205 201 202 203 204 205

The following example is for -qinq_incr_mode outer:

sth::emulation_dhcp_server_config \
              -mode create \
              -count 10 \
              -qinq_incr_mode outer\
              -port_handle port1 \
              -vlan_user_priority 7 \
              -vlan_outer_id_count 2 \
              -vlan_outer_id 101 \
              -ip_address 192.168.1.4 \
              -vlan_id_count 5 \
              -vlan_id 201\
              -ipaddress_pool 192.168.1.5 \
              -ip_version 4 \
              -encapsulation ETHERNET_II_QINQ \
              -vlan_outer_user_priority 0 \
              -local_mac 00:00:00:62:0B:01

Sample output for example shown above:

# Generated values for outer VLAN ID
101 102 101 102 101 102 101 102 101 102
# Generated values for inner VLAN ID
201 201 202 202 203 203 204 204 205 205

The following example is for -qinq_incr_mode both:

sth::emulation_dhcp_server_config \
              -mode create \
              -count 20 \
              -qinq_incr_mode both\
              -port_handle port1 \
              -vlan_user_priority 7 \
              -vlan_outer_id_count 10 \
              -vlan_outer_id 101 \
              -ip_address 192.168.1.4 \
              -vlan_id_count 5 \
              -vlan_id 201\
              -ipaddress_pool 192.168.1.5 \
              -ip_version 4 \
              -encapsulation ETHERNET_II_QINQ \
              -vlan_outer_user_priority 0 \
              -local_mac 00:00:00:62:0c:01

Sample output for example shown above:

# Generated values for outer VLAN ID
101 102 103 104 105 106 107 108 109 110
# Generated values for inner VLAN ID
201 202 203 204 205 201 202 203 204 205

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

set Dhcpv4server_ret [sth::emulation_dhcp_server_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:01 \
            -mac_addr_step_per_port                          00:00:00:01:00:01 \
            -mac_addr_step_per_vlan                          {"" 00:00:00:00:10:01} \
            -ip_step_per_port                                0.0.0.5 \
            -ip_step_per_vlan                                {"" 0.0.1.1} \
            -intf_prefix_len                                 22 \
            -name                                            DEVICE_BLOCK_DHCPV4SERVER \
            -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\
            -intf_ip_addr                                    11.111.11.11 \
            -gateway_ip_addr                                 11.111.11.1 \
            -expand                                          true \

]

Sample output for example shown above:

{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}}

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

set Dhcpv6server_ret [sth::emulation_dhcp_server_config\
            -mode                                            activate \
            -port_handle                                     $port1\
            -count                                           2 \
            -block_mode                                      ONE_DEVICE_PER_BLOCK\
            -block_name_index                                1\
            -ip_version                                      6\
            -vlan_id                                         444 \
            -vlan_outer_id                                   333 \
            -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:01:00:01 00:00:00:00:00:01} \
            -intf_ipv6_prefix_len                            65 \
            -ipv6_step_per_vlan                              {"" ::2} \
            -ipv6_step_per_port                              ::1 \
            -link_local_ipv6_step_per_port                   ::4 \
            -link_local_ipv6_step_per_vlan                   {::4 ::5} \
            -name                                            DEVICE_BLOCK_DHCPV6SERVER \
            -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 \
            -gateway_ip_addr                                 11.111.11.1 \
            -link_local_ipv6_addr                            2000::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 \
            -prefix_pool_start                               2001::\
            -addr_pool_start                                 2001::1\
            -valid_lifetime                                  2592001\
            -server_emulation_mode                           DHCPV6_PD\
            -renewal_time_percent                            50\
            -prefix_pool_length                              64\
            -ipv6_addr_pool_host_step                        ::1\
            -addr_pool_count                                 200\
            -rebinding_time_percent                          80\
            -preferred_lifetime                              604800\
            -prefix_pool_count                               200\
            -addr_pool_length                                64\
            -ipv6_prefix_pool_step                                ::\
            -addr_pool_step                                  ::\

]

Sample output for example shown above:

{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}}

#### HLTAPI for Python ####

The following example creates a DHCP server on the specified port:

device_ret0 = sth.emulation_dhcp_server_config (
             mode                = 'create',
             ip_version          = '4',
             encapsulation       = 'ETHERNET_II',
             ipaddress_count     = '251',
             ipaddress_pool      = '192.85.1.4',
             ipaddress_increment = '1',
             port_handle         = port_handle[0],
             count               = '1',
             lease_time          = '3600',
             local_mac           = '00:10:94:00:00:01',
             ip_repeat           = '0',
             remote_mac          = '00:00:01:00:00:01',
             ip_address          = '192.85.1.3',
             ip_prefix_length    = '24',
             ip_gateway          = '192.85.1.1',
             ip_step             = '0.0.0.1');

Sample Output:

{'status': '1', 'handle': {'port_': 'port1', 'dhcp_': 'host2'}}

The following example creates a DHCPv6 server on the specified port:

device_ret0 = sth.emulation_dhcp_server_config (
             mode                = 'create',
             ip_version          = '6',
             encapsulation       = 'ethernet_ii',
             prefix_pool_step    = '1',
             prefix_pool_per_server= '400',
             prefix_pool_start_addr= '2000::2',
             prefix_pool_step_per_server= '::',
             prefix_pool_prefix_length= '64',
             addr_pool_host_step = '::1',
             addr_pool_addresses_per_server= '200',
             addr_pool_start_addr= '2000::1',
             addr_pool_prefix_length= '64',
             addr_pool_step_per_server= '1',
             port_handle         = port_handle[0],
             preferred_lifetime  = '604800',
             enable_delayed_auth = 'false',
             valid_lifetime      = '2592000',
             dhcp_realm          = 'spirent.com',
             enable_reconfigure_key= 'false',
             reneval_time_percent= '50',
             rebinding_time_percent= '80',
             server_emulation_mode= 'DHCPV6',
             local_ipv6_prefix_len= '64',
             local_ipv6_addr     = '2001::2',
             gateway_ipv6_addr_step= '::',
             local_ipv6_addr_step= '::1',
             gateway_ipv6_addr   = '2001::1',
             count               = '1',
             mac_addr            = '00:10:94:00:00:02',
             mac_addr_step       = '00:00:00:00:00:01');

Sample Output:

{'status': '1', 'handle': {'port_': 'port1', 'dhcpv6_': 'host2'}}

#### HLTAPI for Perl ####

#The following example creates a DHCP server on the specified port:

my %device_ret0 = sth::emulation_dhcp_server_config (
             mode                => 'create',
             ip_version          => '4',
             encapsulation       => 'ETHERNET_II',
             ipaddress_count     => '251',
             ipaddress_pool      => '192.85.1.4',
             ipaddress_increment => '1',
             port_handle         => "$hport[1]",
             count               => '1',
             lease_time          => '3600',
             local_mac           => '00:10:94:00:00:01',
             ip_repeat           => '0',
             remote_mac          => '00:00:01:00:00:01',
             ip_address          => '192.85.1.3',
             ip_prefix_length    => '24',
             ip_gateway          => '192.85.1.1',
             ip_step             => '0.0.0.1');

Sample Output:

$VAR1 = 'handle';
$VAR2 = {
          'dhcp_handle' => 'host2',
          'port_handle' => 'port1'
        };
$VAR3 = 'status';
$VAR4 = '1';

The following example creates a DHCPv6 server on the specified port:

my %device_ret0 = sth::emulation_dhcp_server_config (
             mode                => 'create',
             ip_version          => '6',
             encapsulation       => 'ethernet_ii',
             prefix_pool_step    => '1',
             prefix_pool_per_server=> '400',
             prefix_pool_start_addr=> '2000::2',
             prefix_pool_step_per_server=> '::',
             prefix_pool_prefix_length=> '64',
             addr_pool_host_step => '::1',
             addr_pool_addresses_per_server=> '200',
             addr_pool_start_addr=> '2000::1',
             addr_pool_prefix_length=> '64',
             addr_pool_step_per_server=> '1',
             port_handle         => "$hport[1]",
             preferred_lifetime  => '604800',
             enable_delayed_auth => 'false',
             valid_lifetime      => '2592000',
             dhcp_realm          => 'spirent.com',
             enable_reconfigure_key=> 'false',
             reneval_time_percent=> '50',
             rebinding_time_percent=> '80',
             server_emulation_mode=> 'DHCPV6',
             local_ipv6_prefix_len=> '64',
             local_ipv6_addr     => '2001::2',
             gateway_ipv6_addr_step=> '::',
             local_ipv6_addr_step=> '::1',
             gateway_ipv6_addr   => '2001::1',
             count               => '1',
             mac_addr            => '00:10:94:00:00:02',
             mac_addr_step       => '00:00:00:00:00:01');

Sample Output:

$VAR1 = 'handle';
$VAR2 = {
          'dhcpv6_handle' => 'host2',
          'port_handle' => 'port1'
        };
$VAR3 = 'status';
$VAR4 = '1';

Note

Custom option with the same prefix are inter-dependent. If you specify one of them, you must also specify other options. The length of each option should be the same. For example:

-addr_pool_custom_enable_wildcards      {false false}\
-addr_pool_custom_string_as_hex_value   {false false}\
-addr_pool_custom_include_in_message    {ADVERTISE REPLY}\
-addr_pool_custom_option_value          {1 2}\
-addr_pool_custom_option_payload         {none none}

End of Procedure Header

sth::emulation_dhcp_server_relay_agent_config

Purpose

Spirent Extension (for Spirent HLTAPI only).

Configures IPv4 address pools in which the IPv4 addresses are assigned to DHCP clients through a Relay Agent by the DHCP server.

DHCP relay agents are used to forward DHCP packets between DHCP clients and DHCP servers when the clients and servers are not on the same physical subnet. The relay agent sets the gateway address (giaddr field of the DHCP packet) and, if configured, adds the relay agent information option (Option 82) in the packet and forwards it to the DHCP server. The reply sent from the server is forwarded back to the client after Option 82 is removed.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_server_relay_agent_config
       [-handle <server_handle>  M]
       [-mode {create | modify | delete}  M]
       [-circuit_id < circuit_id list>]
       [-circuit_id_count <1-4294967295>]
       [-domain_name <ALPHANUM>]
       [-domain_name_server_list <server_list>]
       [-dhcp_ack_options {0 | 1}]
       [-dhcp_ack_time_offset <integer>]
       [-dhcp_ack_router_address <a.b.c.d>]
       [-dhcp_ack_time_server_address <a.b.c.d>]
       [-dhcp_ack_circuit_id <hexadecimal>]
       [-dhcp_ack_remote_id <hexadecimal>]
       [-dhcp_offer_options {0 | 1}]
       [-dhcp_offer_time_offset <integer>]
       [-dhcp_offer_router_address <a.b.c.d>]
       [-dhcp_offer_time_server_address <a.b.c.d>]
       [-dhcp_offer_circuit_id <hexadecimal>]
       [-dhcp_offer_remote_id <hexadecimal
       [-prefix_length <0-32>]
       [-relay_agent_pool_count <integer>]
       [-relay_agent_pool_step <a.b.c.d>]
       [-relay_agent_ipaddress_pool <a.b.c.d>]
       [-relay_agent_ipaddress_count <integer>]
       [-relay_agent_ipaddress_step <a.b.c.d>]
       [-router_list < ip_list >]
       [-remote_id <remote_id_list>]
       [-remote_id_count <1-20>]
       [-vpn_id < vpn_id_list>]
       [-vpn_id_count <1-4294967295>]
       [-vpn_id_type {nvt_ascii|rfc_2685}]

Arguments

-handle

Specifies the host handle for the DHCP server. When you set the -mode argument to create, the value of this argument is returned from sth::emulation_dhcp_server_config. When you set the -mode argument to modify or delete, the value of this argument indicates the handle(s) of the created DHCP server relay agent pool(s) returned from sth::emulation_dhcp_server_relay_agent_config. For the modify or delete mode, the value of this argument can be a list of handles. This argument is Mandatory .

-mode

Specifies the action to be performed. This argument is mandatory. Possible values are listed below:

create - Creates IPv4 address pools for DHCP server to be
         assigned to clients through the relay agent.

modify - Modifies the created IPv4 address pools.

delete - Deletes the created IPv4 address pools.
-circuit_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent circuit IDs to generate, so the pool can assign addresses for those DHCP clients that match any circuit ID in the list. This argument is available when -assign_strategy is set to circuit_id in the sth::emulation_dhcp_server_config function.

-circuit_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of circuit IDs to generate. This argument is available when -assign_strategy is set to circuit_id in the sth::emulation_dhcp_server_config function. Possible values range from 1 to 4294967295. The default value is 1.

-dhcp_ack_options

Enables or disables the DHCP ACK Options. Possible values of this argument are 1 (enable) and 0 (disable). When this argument is set to 1, you can configure the DHCP ACK Options by specifying the arguments below:

-dhcp_ack_time_offset
-dhcp_ack_router_address
-dhcp_ack_time_server_address
-dhcp_ack_circuit_id
-dhcp_ack_remote_id

The default value is 0.

-dhcp_ack_time_offset

Specifies the DHCP ACK Option time offset (Option 2) in seconds. Its value can be positive or negative. The default value is 0. You can specify this argument when the -dhcp_ack_options argument is set to 1.

-dhcp_ack_router_address

Specifies the DHCP ACK option router option (Option 3) IPv4 address. You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You can specify this argument when the -dhcp_ack_options argument is set to 1.

-dhcp_ack_time_server_address

Specifies the DHCP ACK option timer server address (Option 4). You can specify multiple IPv4 addresses. The default value is 0.0.0.0. You can specify this argument when the -dhcp_ack_options argument is set to 1.

-dhcp_ack_circuit_id

Specifies the circuit ID sub-option (sub-option 1) of the DHCP ACK option relay agent information option (Option 82). The intended use for the circuit ID sub-option is to relay DHCP responses back to the proper circuit. The value of this argument must be eight hexadecimal characters. You can specify this argument when the -dhcp_ack_options argument is set to 1.

-dhcp_ack_remote_id

Specifies the Remote ID sub-option (sub-option 2) of the DHCP ACK Option relay agent information option (Option 82). The Remote ID sub-option may be added by DHCP relay agents which terminate switched or permanent circuits and have mechanisms to identify the remote host end of the circuit. The value of this argument must be eight hexadecimal characters. You can specify this argument when the -dhcp_ack_options argument is set to 1.

-dhcp_offer_options

Enables or disables DHCP OFFER Options of the emulated DHCP server. Possible values are 0 and 1. The default value is 0 (disabled). When this argument is enabled, you can specify the DHCP OFFER options below:

-dhcp_offer_time_offset
-dhcp_offer_router_address
-dhcp_offer_time_server_address
-dhcp_offer_circuit_id
-dhcp_offer_remote_id
-dhcp_offer_time_offset

Specifies the DHCP OFFER option time offset (Option 2) in seconds. Its value can be positive or negative. The default value is 0. You can specify this argument when the -dhcp_offer_options argument is enabled.

-dhcp_offer_router_address

Specifies the router option (Option 3) of the DHCP OFFER options. The router option defines a list of IPv4 addresses for routers on the client’s subnet. You can specify a list of IPv4 addresses. The default value is 0.0.0.0. You can specify this argument when -dhcp_offer_options is enabled.

-dhcp_offer_time_server_address

Specifies the time server option (Option 4) of the DHCP OFFER Options. The time server option defines a list of IPv4 addresses for the time servers available to the client. You can specify this argument when -dhcp_offer_options is enabled.

-dhcp_offer_circuit_id

Configures the circuit ID sub-option of the relay agent option (82). The value of this argument must be eight hexadecimal characters. This argument is available when -dhcp_offer_options is enabled.

-dhcp_offer_remote_id

Configures the remote ID sub-option of relay agent option (Option 82). The value of this argument must be eight hexadecimal characters. This argument is available when -dhcp_offer_options is enabled.

-domain_name

Spirent Extension (for Spirent HLTAPI only).

Specifies the domain name for the server (option 15)

-domain_name_server_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of domain name servers (option 6)

-relay_agent_pool_count

Specifies the number of address pools to be created. The default value is 1.

-relay_agent_pool_step

Specifies the increment used to generate the IPv4 addresses of IPv4 address pools when the count (-relay_agent_pool_count) is larger than 1. The values of this argument must be in IPv4 format. The default value is 1.0.0.0.

-relay_agent_ipaddress_pool

Specifies the starting IP address for address pools. The default value is 192.0.1.0.

-prefix_length

Specifies the IPv4 address prefix length of the address in the pool. Possible values range from 0 to 32. The default value is 24.

-relay_agent_ipaddress_count

Defines the number of IPv4 addresses that can be assigned to clients in a pool. The largest value of this argument equals the number of remaining IPv4 addresses after the addresses that have been assigned are taken from the total number of IPv4 addresses in a pool. The total number of IPv4 addresses in a pool depends on the value of the -prefix_length argument. Possible values range from 0 to the number of remaining IPv4 addresses in a pool. The default value is 24.

-relay_agent_ipaddress_step

Defines the increment used to generate IPv4 addresses in an address pool. The default value is 0.0.0.1.

-router_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of router IP addresses on the client subnet (option 3)

-remote_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent remote IDs to generate so the pool can assign addresses for those DHCP clients that match any remote ID in the list. This argument is available when -assign_strategy is set to remote_id in the sth::emulation_dhcp_server_config function.

-remote_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of remote IDs to generate. This argument is available when -assign_strategy is set to remote_id in the sth::emulation_dhcp_server_config function. Possible values range from 1 to 20. The default value is 1.

-vpn_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of relay agent VPN IDs to generate, so the pool can assign addresses for those DHCP clients that match any VPN ID in the list. This argument is available when -assign_strategy is set to vpn_id in the sth::emulation_dhcp_server_config function.

-vpn_id_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum number of VPN IDs to generate. This argument is available when -assign_strategy is set to vpn_id in the sth::emulation_dhcp_server_config function. Possible values range from 1 to 4294967295. The default value is 1.

-vpn_id_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the VPN ID type. This argument is available when -assign_strategy is set to vpn_id in the sth::emulation_dhcp_server_config function. Possible values are:

nvt_ascii  Network Virtual Terminal (NVT) ASCII VPN Identifier
rfc_2685   RFC 2685 VPN-ID

The default value is nvt_ascii.

Arguments Unsupported by Save as HLTAPI

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

-dhcp_ack_options
-dhcp_ack_time_offset
-dhcp_ack_router_add dress
-dhcp_ack_time_server_address
-dhcp_ack_circuit_id
-dhcp_ack_remote_id
-dhcp_offer_options
-dhcp_offer_time_offset
-dhcp_offer_router_address
-dhcp_offer_time_server_address
-dhcp_offer_circuit_id
-dhcp_offer_remote_id
-relay_agent_pool_count
-relay_agent_pool_step
-vlan_id_count
-vlan_outer_id_count

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).
pool_handles       Handle(s) of the created DHCP server address
                   pool(s).

Description

The sth::emulation_dhcp_server_relay_agent_config creates, modifies, or deletes IPv4 address pools where the IPv4 addresses are assigned to DHCP clients through a Relay Agent. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

Use -mode create to create address pools on the specified DHCP server. The handle of the DHCP server host is returned from sth::emulation_dhcp_server_config. You can modify or delete the address pools you created with the modify or delete mode.

When you create multiple emulated address pools where addresses are assigned to DHCP clients through a relay agent, use the -relay_agent_pool_step argument and -relay_agent_ipaddress_pool argument to specify the starting address and the increment step.

You can use the -dhcp_ack_options argument and the -dhcp_offer_options argument to insert specific options in ACK or OFFER messages sent to the DHCP relay agent by the DHCP server.

Examples

#### HLTAPI for Tcl ####

To create a DHCP server relay agent address pool:

# step1: Config DHCP server host
 set returnedString [ sth::emulation_dhcp_server_config  \
                     -mode                       create \
                     -port_handle                port1 \
                     -count                      1 \
                     -local_mac                  00:10:94:00:00:03 \
                     -ip_address                 100.1.0.8\
                     -ip_gateway                 100.1.0.1 \
                     -ipaddress_pool             100.1.0.9 \
                     -lease_time                 60]

 keylget returnedString handle.dhcp_handle dhcpServer

# step2: create two relay agent address pools
 set returnedString [ sth::emulation_dhcp_server_relay_agent_config  \
                    -handle                     $dhcpServer \
                    -mode                       create \
                    -relay_agent_pool_count     2 \
                    -relay_agent_pool_step      1.0.0.0 \
                    -relay_agent_ipaddress_pool 110.0.0.5 \
                    -relay_agent_ipaddress_count    50 \
                    -relay_agent_ipaddress_step 0.0.0.1 \
                    -dhcp_ack_options           1 \
                    -dhcp_ack_time_offset       8000]

The example above creates two address pools on the DHCP server named $dhcpServer. The number of IPv4 addresses in each address pool is 50. The IP address of the first address pool is 110.0.0.5. The IP address of the second address pool is 111.0.0.5. The IPv4 addresses in the first address pool are listed below:

110.0.0.5
110.0.0.6
110.0.0.7
...
110.0.0.55

The IPv4 addresses in the second address pool are listed below:

111.0.0.5
111.0.0.6
111.0.0.7
 ...
111.0.0.55

Sample Output:

{pool_handles {dhcpv4serverpoolconfig1 dhcpv4serverpoolconfig2}}
{status 1}

#### HLTAPI for Python ####

To create a DHCP server relay agent address pool:

# step1: Config DHCP server host

device_ret0 = sth.emulation_dhcp_server_config (
                 mode                = 'create',
                 ip_version          = '4',
                 encapsulation       = 'ETHERNET_II',
                 ipaddress_count     = '251',
                 ipaddress_pool      = '192.85.1.4',
                 ipaddress_increment = '1',
                 port_handle         = port_handle[0],
                 count               = '1',
                 lease_time          = '3600',
                 local_mac           = '00:10:94:00:00:01',
                 ip_repeat           = '0',
                 remote_mac          = '00:00:01:00:00:01',
                 ip_address          = '192.85.1.3',
                 ip_prefix_length    = '24',
                 ip_gateway          = '192.85.1.1',
                 ip_step             = '0.0.0.1');

    dhcpserver_handle = device_ret0['handle.dhcp_handle']

# step2: create a relay agent address pool

    device_ret0_agent0 = sth.emulation_dhcp_server_relay_agent_config (
                 mode                = 'create',
                 handle              = dhcpserver_handle,
                 relay_agent_ipaddress_count= '255',
                 relay_agent_ipaddress_pool= '192.0.1.0',
                 relay_agent_ipaddress_step= '0.0.0.1',
                 prefix_length       = '24');

Sample Output:

{'status': '1', 'pool_handles': 'dhcpv4serverpoolconfig1'}

#### HLTAPI for Perl ####

To create a DHCP server relay agent address pool:

# step1: Config DHCP server host

my %device_ret0 = sth::emulation_dhcp_server_config (
            mode                => 'create',
            ip_version          => '4',
            encapsulation       => 'ETHERNET_II',
            ipaddress_count     => '251',
            ipaddress_pool      => '192.85.1.4',
            ipaddress_increment => '1',
            port_handle         => "$hport[1]",
            count               => '1',
            lease_time          => '3600',
            local_mac           => '00:10:94:00:00:01',
            ip_repeat           => '0',
            remote_mac          => '00:00:01:00:00:01',
            ip_address          => '192.85.1.3',
            ip_prefix_length    => '24',
            ip_gateway          => '192.85.1.1',
            ip_step             => '0.0.0.1');

  my $dhcpserver_handle = join( " ", $device_ret0{handle}{dhcp_handle});

# step2: create a relay agent address pool

 my %device_ret0_agent0 = sth::emulation_dhcp_server_relay_agent_config (
                 mode                => 'create',
                 handle              => "$dhcpserver_handle",
                 relay_agent_ipaddress_count=> '255',
                 relay_agent_ipaddress_pool=> '192.0.1.0',
                 relay_agent_ipaddress_step=> '0.0.0.1',
                 prefix_length       => '24');

Sample Output:

$VAR1 = 'pool_handles';
$VAR2 = 'dhcpv4serverpoolconfig1';
$VAR3 = 'status';
$VAR4 = '1';

End of Procedure Header

sth::emulation_dhcp_server_control

Purpose

Connects, renews, or resets DHCP or DHCPv6/PD server(s) on the specified ports or the DHCP or DHCPv6/PD handles/servers respectively.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_server_control
     [-action {connect|renew|reset}  M]
     [-port_handle {<port_handle_list>|all}]
     [-dhcp_handle {<server_handle_list>|all}]
     [-ip_version {4|6}]

Arguments

-dhcp_handle

Identifies a list of DHCP or DHCPv6/PD server handles on which to connect, renew, or reset the server. The selected -action value applies only to the specified DHCP or DHCPv6/PD handles respectively. Use “all” to specify all devices under all ports. You can specify either -dhcp_handle or -port_handle, but not both. If neither of the two is specified, all devices under all ports will be called.

-action

Specifies the action to be taken on the specified DHCP or DHCPv6/PD handles specified by the -dhcp_handle argument, or on the port handle specified by the -port_handle argument. This argument is Mandatory . Possible values are:

connect
Connects the DHCP or DHCPv6/PD servers on the specified ports or DHCP or DHCPv6/PD handles.
renew
Reconnects the DHCP or DHCPv6/PD servers on the specified ports or DHCP or DHCPv6/PD handles respectively.
reset
Resets the DHCP or DHCPv6/PD servers on the specified ports or DHCP or DHCPv6/PD handles respectively.
-port_handle

Specifies a list of ports on which the DHCP or DHCPv6/PD server will connect, renew, and reset. Use “all” to specify all ports. You can specify either -dhcp_handle or -port_handle, but not both. If neither of the two is specified, all devices under all ports will be called.

-ip_version

Spirent Extension (for Spirent HLTAPI only).

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

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 sth::emulation_dhcp_server_control function controls the DHCP or DHCPv6/PD server on the specified ports. You can use this function to perform several actions:

  • Connecting a DHCP or DHCPv6/PD server
  • Renewing a DHCP or DHCPv6/PD server
  • Resetting a DHCP or DHCPv6/PD server

When you call the sth::emulation_dhcp_server_control function, you specify either a DHCP or DHCPv6/PD server handle or a port handle. Spirent HLTAPI applies the specified action to the specified DHCP or DHCPv6/PD server or to all of the emulated DHCP or DHCPv6/PD servers associated with the specified port.

Examples

#### HLTAPI for Tcl ####

To connect the specified DHCP server:

sth::emulation_dhcp_server_control \
         -action connect \
         -dhcp_handle dhcpserverHandle

To connect all DHCP servers on the specified port:

sth::emulation_dhcp_server_control \
         -action connect \
         -port_handle port1

To renew the specified DHCP server:

sth::emulation_dhcp_server_control \
         -action renew \
         -dhcp_handle dhcpserverHandle

To renew all DHCP servers on the specified port:

sth::emulation_dhcp_server_control \
         -action renew \
         -port_handle port1

To reset the specified DHCP server:

sth::emulation_dhcp_server_control \
          -action reset \
          -dhcp_handle dhcpserverHandle

To reset all DHCP servers on the specified port:

sth::emulation_dhcp_server_control \
         -action renew \
         -port_handle port1
             DHCPv6/PD:

To connect the specified DHCPv6/PD server:

sth::emulation_dhcp_server_control \
         -action connect \
         -dhcp_handle dhcpserverHandle \
         -ip_version     6

To connect all DHCPv6/PD servers on the specified port:

sth::emulation_dhcp_server_control \
         -action connect \
         -port_handle port1 \
         -ip_version     6

To renew the specified DHCPv6/PD server:

sth::emulation_dhcp_server_control \
         -action renew \
         -dhcp_handle dhcpserverHandle \
         -ip_version     6

To renew all DHCPv6/PD servers on the specified port:

sth::emulation_dhcp_server_control \
         -action renew \
         -port_handle port1 \
         -ip_version     6

To reset the specified DHCPv6/PD server:

sth::emulation_dhcp_server_control \
          -action reset \
          -dhcp_handle dhcpserverHandle \
          -ip_version     6

To reset all DHCPv6/PD servers on the specified port:

sth::emulation_dhcp_server_control \
         -action renew \
         -port_handle port1 \
         -ip_version     6

Sample Output:

{status 1}

#### HLTAPI for Python ####

To connect all DHCP servers on the specified port:

results_ret1 = sth.emulation_dhcp_server_stats (
               port_handle         = port_handle[0],
               action              = 'COLLECT',
               ip_version          = '4');

To connect all DHCPv6 servers on the specified port:

ctrl_ret1 = sth.emulation_dhcp_server_control (
             port_handle         = port_handle[0],
             action              = 'connect',
             ip_version          = '6');

Sample Output:

{'status': '1'}

#### HLTAPI for Perl ####

To connect all DHCP servers on the specified port:

my %ctrl_ret1 = sth::emulation_dhcp_server_control (
             port_handle         => "$hport[1]",
             action              => 'connect',
             ip_version          => '4');

To connect all DHCPv6 servers on the specified port:

my %ctrl_ret1 = sth::emulation_dhcp_server_control (
           port_handle         => "$hport[1]",
           action              => 'connect',
           ip_version          => '6');

Sample Output:

$VAR1 = 'status';
$VAR2 = '1';

End of Procedure Header

sth::emulation_dhcp_server_stats

Purpose

Returns statistics of the DHCPv6/PD server.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_server_stats
      [-action  {collect|clear}  M]
      [-dhcp_handle {<dhcp_server_handle_list>|all}]
      [-port_handle {<port_handle_list>|all}]
      [-ip_version {4|6}]

Arguments

-dhcp_handle

Specifies a list of DHCP or DHCPv6/PD server handles from which to extract the server statistics data. Use “all” to return results from all devices. You can specify -dhcp_handle or -port_handle, but not both. If neither of the two is specified, statistics from all devices under all ports will be returned.

-action

Specifies the action of the statistics for the specified port or DHCP or DHCPv6/PD server. This argument is mandaotry. Possible values are:

collect
Retrieves the statistics from the specified ports or DHCP or DHCPv6/PD servers
clear
Removes all statistics
-port_handle

Specifies a list of ports from which to extract DHCP or DHCPv6/PD server statistics data. Use “all” to return results from all ports. You can specify either -dhcp_handle or -port_handle, but not both. If neither of the two is specified, statistics from all devices under all ports will be returned.

-ip_version

Spirent Extension (for Spirent HLTAPI only).

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

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.

aggregate statistics
               Provided when -port_handle is used. Contains the
               aggregate statistics from all the DHCP or DHCPv6/PD
               handles/servers on the specified port_handle.

server specific statistics
               Provided when -dhcp_server is used. Contains the
               statistics from the specified DHCP or DHCPv6/PD handle/server.

The following keys are returned when you specify -port_handle:

DHCP for IPv4
aggregate.<port_handle>.rx.discover
aggregate.<port_handle>.rx.offer     (not supported)
aggregate.<port_handle>.rx.request
aggregate.<port_handle>.rx.decline
aggregate.<port_handle>.rx.ack            (not supported)
aggregate.<port_handle>.rx.nak            (not supported)
aggregate.<port_handle>.rx.release
aggregate.<port_handle>.rx.inform
aggregate.<port_handle>.rx.force_renew    (not supported)
aggregate.<port_handle>.rx.relay_agent    (not supported)
aggregate.<port_handle>.tx.discover       (not supported)
aggregate.<port_handle>.tx.offer
aggregate.<port_handle>.tx.request        (not supported)
aggregate.<port_handle>.tx.decline        (not supported)
aggregate.<port_handle>.tx.ack
aggregate.<port_handle>.tx.nak
aggregate.<port_handle>.tx.release        (not supported)
aggregate.<port_handle>.tx.inform         (not supported)
aggregate.<port_handle>.tx.force_renew    (not supported)
aggregate.<port_handle>.allocated.ip      (not supported)

DHCP for IPv6: (Spirent Extension keys)
ipv6.aggregate.<port_handle>.current_bound_count
ipv6.aggregate.<port_handle>.rx_confirm_count
ipv6.aggregate.<port_handle>.rx_decline_count
ipv6.aggregate.<port_handle>.rx_info_request_count
ipv6.aggregate.<port_handle>.rx_rebind_count
ipv6.aggregate.<port_handle>.rx_release_count
ipv6.aggregate.<port_handle>.rx_renew_count
ipv6.aggregate.<port_handle>.rx_request_count
ipv6.aggregate.<port_handle>.rx_soilicit_count
ipv6.aggregate.<port_handle>.total_bound_count
ipv6.aggregate.<port_handle>.total_expired_count
ipv6.aggregate.<port_handle>.total_release_count
ipv6.aggregate.<port_handle>.total_renewed_count
ipv6.aggregate.<port_handle>.tx_advertise_count
ipv6.aggregate.<port_handle>.tx_reconfigure_count
ipv6.aggregate.<port_handle>.tx_reconfigure_rebind_count
ipv6.aggregate.<port_handle>.tx_reconfigure_renew_count
ipv6.aggregate.<port_handle>.tx_reply_count

The following keys are returned when you specify -dhcp_handle:

DHCP for IPv4
dhcp_handle.<dhcp_handle>.rx.discover
dhcp_handle.<dhcp_handle>.rx.offer        (not supported)
dhcp_handle.<dhcp_handle>.rx.request
dhcp_handle.<dhcp_handle>.rx.decline
dhcp_handle.<dhcp_handle>.rx.ack          (not supported)
dhcp_handle.<dhcp_handle>.rx.nak          (not supported)
dhcp_handle.<dhcp_handle>.rx.release
dhcp_handle.<dhcp_handle>.rx.inform
dhcp_handle.<dhcp_handle>.rx.force_renew  (not supported)
dhcp_handle.<dhcp_handle>.rx.relay_agent  (not supported)
dhcp_handle.<dhcp_handle>.tx.discover     (not supported)
dhcp_handle.<dhcp_handle>.tx.offer
dhcp_handle.<dhcp_handle>.tx.request      (not supported)
dhcp_handle.<dhcp_handle>.tx.decline      (not supported)
dhcp_handle.<dhcp_handle>.tx.ack
dhcp_handle.<dhcp_handle>.tx.nak
dhcp_handle.<dhcp_handle>.tx.release      (not supported)
dhcp_handle.<dhcp_handle>.tx.inform       (not supported)
dhcp_handle.<dhcp_handle>.tx.force_renew  (not supported)
dhcp_handle.<dhcp_handle>.allocated.ip    (not supported)

DHCP for IPv6:  (Spirent Extension keys)
ipv6.dhcp_handle.<dhcp_handle>.current_bound_count
ipv6.dhcp_handle.<dhcp_handle>.rx_confirm_count
ipv6.dhcp_handle.<dhcp_handle>.rx_decline_count
ipv6.dhcp_handle.<dhcp_handle>.rx_info_request_count
ipv6.dhcp_handle.<dhcp_handle>.rx_rebind_count
ipv6.dhcp_handle.<dhcp_handle>.rx_release_count
ipv6.dhcp_handle.<dhcp_handle>.rx_renew_count
ipv6.dhcp_handle.<dhcp_handle>.rx_request_count
ipv6.dhcp_handle.<dhcp_handle>.rx_soilicit_count
ipv6.dhcp_handle.<dhcp_handle>.total_bound_count
ipv6.dhcp_handle.<dhcp_handle>.total_expired_count
ipv6.dhcp_handle.<dhcp_handle>.total_release_count
ipv6.dhcp_handle.<dhcp_handle>.total_renewed_count
ipv6.dhcp_handle.<dhcp_handle>.tx_advertise_count
ipv6.dhcp_handle.<dhcp_handle>.tx_reconfigure_count
ipv6.dhcp_handle.<dhcp_handle>.tx_reconfigure_rebind_count
ipv6.dhcp_handle.<dhcp_handle>.tx_reconfigure_renew_count
ipv6.dhcp_handle.<dhcp_handle>.tx_reply_count

Description

The sth::emulation_dhcp_server_info function provides statistics about either the specified DHCP or DHCPv6/PD server handles or ports.

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 ####

##DHCP for IPv4 ##

The following example collects statistics on the specified port:

::sth::emulation_dhcp_server_stats
              -action collect \
              -port_handle port1

Sample output for example shown above:

{dhcp_server_state UP} {aggregate {{port1 {{tx {{nak 0}
{offer 0} {ack 0}}} {rx {{decline 0} {release 0}
{request 0} {inform 0} {discover 0}}}}}}} {status 1}

The following example collects statistics on the specified DHCP server:

::sth::emulation_dhcp_server_stats
             -action collect \
             -dhcp_handle host1

Sample output for example shown above:

{dhcp_server_state UP} {dhcp_handle {{host1 {{tx {{nak 0}
{offer 0} {ack 0}}} {rx {{decline 0} {release 0}
{request 0} {inform 0} {discover 0}}}}}}} {status 1}

The following example clears statistics on the specified port:

::sth::emulation_dhcp_server_stats
             -action clear \
             -port_handle host1
Sample output for example shown above::
{status 1}

The following example clears statistics on the specified DHCP server:

::sth::emulation_dhcp_server_stats
             -action clear \
             -dhcp_handle host1

Sample output for example shown above:

{status 1}

##DHCP for IPv6##

The following example collects statistics on the specified port:

::sth::emulation_dhcp_server_stats
              -action collect \
              -port_handle port1 \
              -ip_version   6

Sample output for example shown above:

{ipv6 {{aggregate {{port1 {{rx_soilicit_count 1} {tx_advertise_count 1}
{rx_release_count 0} {total_bound_count 1} {tx_reconfigure_renew_count 0}
{total_expired_count 0} {total_renewed_count 0} {rx_decline_count 0}
{rx_rebind_count 0} {current_bound_count 1} {rx_renew_count 0} {rx_request_count 1}
{tx_reconfigure_count 0} {total_release_count 0} {rx_info_request_count 0}
{tx_reply_count 1} {tx_reconfigure_rebind_count 0} {rx_confirm_count 0}}}}}}}

The following example clears statistics on the specified port:

::sth::emulation_dhcp_server_stats
             -action clear \
             -port_handle host1 \
             -ip_version   6

Sample output for example shown above:

{status 1}

The following example clears statistics on the specified DHCPv6/PD server:

::sth::emulation_dhcp_server_stats
             -action clear \
             -dhcp_handle host1 \
             -ip_version   6

Sample output for example shown above:

{status 1}

#### HLTAPI for Python ####

Sample Input for DHCP for IPv4:

results_ret1 = sth.emulation_dhcp_server_stats (
             port_handle         = port_handle[0],
             action              = 'COLLECT',
             ip_version          = '4');

Sample Output:

{'aggregate': {'port1': {'rx': {'release': '0', 'decline': '0', 'request': '0',
'discover': '0', 'inform': '0'}, 'tx': {'ack': '0', 'nak': '0', 'offer': '0'}}},
'status': '1', 'dhcp_server_state': 'NONE'}

Sample Input for DHCP for IPv6:

results_ret1 = sth.emulation_dhcp_server_stats (
                    port_handle         = port_handle[0],
                    action              = 'COLLECT',
                    ip_version          = '6');

Sample Output:

{'status': '1', 'dhcp_server_state': 'NONE', 'ipv6': {'aggregate': {'port1'::
{'rx_request_count': '0', 'rx_decline_count': '0', 'tx_advertise_count': '0',
'rx_renew_count': '0', 'tx_reconfigure_count': '0', 'rx_soilicit_count': '0',
'total_bound_count': '0', 'rx_release_count': '0', 'total_expired_count': '0',
'tx_reply_count': '0', 'rx_info_request_count': '0', 'total_release_count': '0',
'tx_reconfigure_renew_count': '0', 'current_bound_count': '0',
'rx_rebind_count': '0', 'rx_confirm_count': '0', 'tx_reconfigure_rebind_count': '0',
'total_renewed_count': '0'}}}}

#### HLTAPI for Perl ####

Sample Input for DHCP for IPv4:

my %results_ret1 = sth::emulation_dhcp_server_stats (
               port_handle         => "$hport[1]",
               action              => 'COLLECT',
               ip_version          => '4');

Sample output:

$VAR1 = 'status';
$VAR2 = '1';
$VAR3 = 'aggregate';
$VAR4 = {
          'port1' => {
                       'tx' => {
                                 'nak' => '0',
                                 'ack' => '0',
                                 'offer' => '0'
                               },
                       'rx' => {
                                 'request' => '0',
                                 'discover' => '0',
                                 'release' => '0',
                                 'inform' => '0',
                                 'decline' => '0'
                               }
                     }
        };
$VAR5 = 'dhcp_server_state';
$VAR6 = 'NONE';

Sample Input for DHCP for IPv6:

my %results_ret1 = sth::emulation_dhcp_server_stats (
              port_handle         => "$hport[1]",
              action              => 'COLLECT',
              ip_version          => '6');

Sample output:

$VAR1 = 'ipv6';
$VAR2 = {
    'aggregate' => {
                     'port1' => {
                                  'tx_reconfigure_rebind_count' => '0',
                                  'rx_decline_count' => '0',
                                  'rx_request_count' => '0',
                                  'current_bound_count' => '0',
                                  'total_expired_count' => '0',
                                  'tx_reconfigure_renew_count' => '0',
                                  'total_renewed_count' => '0',
                                  'tx_reconfigure_count' => '0',
                                  'rx_soilicit_count' => '0',
                                  'total_release_count' => '0',
                                  'rx_info_request_count' => '0',
                                  'rx_confirm_count' => '0',
                                  'rx_release_count' => '0',
                                  'total_bound_count' => '0',
                                  'tx_reply_count' => '0',
                                  'rx_renew_count' => '0',
                                  'rx_rebind_count' => '0',
                                  'tx_advertise_count' => '0'
                                }
                   }
        };
$VAR3 = 'status';
$VAR4 = '1';
$VAR5 = 'dhcp_server_state';
$VAR6 = 'NONE';

End of Procedure Header