FCoE Functions

sth::fcoe_config

Purpose

Configures FCoE device for the specified Spirent HLTAPI port.

Fibre Channel over Ethernet (FCoE) is a method of carrying Fibre Channel (FC) frames over lossless Ethernet. It uses Jumbo Ethernet frames to avoid fragmenting FC frames.

The FCoE Initialization Protocol (FIP) is used to perform the functions of FC-BB_E (FC over Ethernet) device discovery, initialization, and maintenance.

Synopsis

Note

M sign indates that the argument is mandatory.

sth::fcoe_config
    [-mode {create|modify|reset}  M]
    [-port_handle <port_handle>]
    [-handle <FCoE device handle>]
    [-vnport_count <1-65535>]
    [-encap {ethernet_ii|ethernet_ii_vlan|ethernet_ii_qinq}]
    [-mac_addr <aa:bb:cc:dd:ee:ff>]
    [-mac_addr_step <aa:bb:cc:dd:ee:ff>]
    [-vlan_id <0-4095>]
    [-vlan_pri <0-7>]
    [-vlan_cfi {0|1} ]
    [-vlan_id_outer  <0-4095>]
    [-vlan_pri_outer  <0-7>]
    [-vlan_cfi_outer   {0|1} ]
    [-wwpn <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-wwpn_step <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-login_delay]
    [-logout_delay]
    [-enable_vlan_discovery {0|1}]
    [-addressing_mode {fpma|spma|both}]
    [-bb_credit]
    [-fcf_mac_addr <aa:bb:cc:dd:ee:ff>]
    [-fc_map <abcdefg>]
    [-fip_priority <1-128>]
    [-host_type {initiator|target|both}]
    [-max_rx_size <64 - 2112>]
    [-use_wwpn {0|1}]
    [-wwnn <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-wwnn_step <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-enode_count <1-65535>]

Arguments

-port_handle

Specifies the handle of the port on which to configure FCoE emulation. This argument is mandatory for the create mode. Please refer to the description of the -mode argument.

-handle

Specifies the handle of the FCoE device(s). The handle is returned by the sth::fcoe_config function. This argument is mandatory only for the modify and the reset modes.

-mode

Specifies the action to be taken. This argument is mandatory. Possible values are described below:

create   Starts emulating FCoE device(s) on the port
         specified by the -port_handle argument.

modify   Changes the configuration parameters for the
         FCoE device(s) identified by the -handle
         argument.

reset    Deletes the FCoE device(s) identified by the
         -handle argument.
-vnport_count

Specifies the number of the FCoE devices to be created. The default value is 1.

-encap

Specifies the type of Layer 2 encapsulation to use, which defines the source and the destination MAC addresses for a stream. The default is ethernet_ii. Possible values are:

ethernet_ii - Ethernet II
ethernet_ii_vlan - Ethernet II with a single VLAN tag
ethernet_ii_qinq - Ethernet II with two VLAN tags

ethernet_ii_vlan supports VLAN tagging on Ethernet networks, while ethernet_ii does not. If you use the -vlan_* arguments to define a VLAN interface, you must set the Layer 2 encapsulation type to ethernet_ii_vlan.

-mac_addr

Specifies the starting value for the MAC addresses. The default is 00:10:94:00:00:02.

-mac_addr_step

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

-vlan_id

Defines the starting VLAN ID to use when generating FCoE devices for ethernet_ii_vlan. Possible values range from 1 to 4095. The default value is 100.

-vlan_pri

Specifies the VLAN priority. Possible values range from 0 (highest) to 7 (lowest). The default is 7.

-vlan_cfi

Sets the Canonical Format Indicator(CFI) field in VLAN for the emulated FCoE device. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 0. If it is set to 0, it indicates the network is Ethernet. If it is set to 1, it indicates that the network is Token Ring and packets are dropped by Ethernet ports.

-vlan_id_outer

Defines the starting outer VLAN ID to use when generating FCoE device(s) for ethernet_ii_qinq. Possible values range from 1 to 4095. The default is 100. This argument is available only when the -encap argument is set to ethernet_ii_qinq.

-vlan_pri_outer

Specifies the outer VLAN priority. Possible values range from 0 (highest)to 7 (lowest). The default value is 7. This argument is available only when the -encap argument is set to ethernet_ii_qinq.

-vlan_cfi_outer

Sets the CFI field in outer VLAN for the emulated FCoE device. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 0. If it is set to 0, it indicates the network is Ethernet. If it is set to 1, it indicates that the network is Token Ring and packets are dropped by Ethernet ports. This argument is available only when the -encap argument is set to ethernet_ii_qinq.

-wwpn

Starting the World Wide Port Name (WWPN) of the FCoE devices. A WWPN is a World Wide Name assigned to a port in a Fibre Channel fabric. Used on storage area networks, it performs a function equivalent to the MAC address in the Ethernet protocol; it is intended to be a unique identifier in the network. The value of this argument must be a 64-bit value. The default is “20:00:10:94:00:00:00:01”.

-wwpn_step

Specifies the WWPN step for the FCoE hosts. The step must be 64-bit. The default is “00:00:00:00:00:00:00:01”.

-logout_delay

Specifies the logout delay timer that defines the interval between logout actions when two or more logout functions are performed. The value of this argument will be applied when several logout messages are sent. The default is 10(ms).

-login_delay

Specifies the login delay timer that defines the interval between login actions when two or more login functions are performed. The value of this argument will be applied when several login messages are sent. The default is 10(ms).

-addressing_mode

Specifies the addressing mode of the FCoE devices. Possible values are FPMA, SPMA and BOTH. The default value is FPMA. Possible values are described below:

FPMA - Sets the mode to Fabric Provided MAC Addresses.
SPMA - Sets the mode to Server Provided MAC Addresses.
BOTH - Sets the mode to Fabric and Server Provided
      MAC Addresses.
-bb_credit

Indicates the Buffer to Buffer Credit of the FCoE devices. This argument is used to define the number of frames the port can receive. Possible values range from 0 to 65535. The default is 3.

Note

If -bb_credit and -max_rx_size do not match the values for the DUT, the login attempts may be rejected.

-fcf_mac_addr

Specifies the MAC address of the Fibre Channel forwarder. The value must be a valid MAC address. The default is 01:10:18:01:00:02.

-fc_map

Specifies the FC map of the FCoE. The Fibre channel organizationally unique ID (FC-OUI) is used to map a MAC address to a FC address. This value has the I/G bit set to zero to indicate it is not a group address, and the U/L bit is set to one to indicate it is a locally administered address and is not globally unique. Possible values range from EFC00 to EFCFF. The default is EFC00.

-fip_priority

Specifies the FIP priority of the FCoE. Possible values range from 1 (highest) to 128 (lowest). The default is 100.

-host_type

Specifies whether hosts will register with the name server as a target, initiator, or both. The default value is initiator. Possible value is described below:

initiator - Indicates the Small Computer System
          Interface (SCSI) Initiator. The SCSI is a
          set of standards for physically connecting and
          transferring data between computers and
          peripheral devices.

target  - Indicates the SCSI Target.

both    - Indicates both the SCSI Initiator and the
          SCSI Target.
-max_rx_size

Maximum frame size. Possible values range from 64 to 2112. The default is 2112.

-use_wwpn

Use WWPN as the World Wide Node Name (WWNN). A WWNN is a World Wide Name assigned to a node (an endpoint, a device) in a Fibre Channel fabric. It is valid for the same WWNN to be seen on many different addresses on the network, identifying the ports as multiple network interfaces of a single network node. Possible values are 0 and 1. The default is 1. If it is set to 1, the WWNN will use the value set by -wwpn instead of -wwnn.

-vnport_name

Defines the VN_Port name of the FCoE devices. The VN_Port is an instance of the FC-2V sublevel of Fibre Channel that operates as an N_Port. You can refer to FC-FS-3 for more details.

The value is formed by characters. The length of the value is from 1 to 32. The default value is VNport_@p-@b-@s.

-wwnn

Indicates the starting WWNN of the FCoE hosts. The default is 10:00:10:94:00:00:00:01.

-wwnn_step

Specifies the step size applied to the WWNN of the FCoE devices. The default is 10:00:10:94:00:00:00:01.

-enode_count

Specifies the number of ENodes to be created. The default is 1. This value should be equal or less than the value specified by -vnport_count. This argument is available when -use_wwpn is set to 0.

-enable_vlan_discovery

Disables or enables the VLAN discovery process. VLAN discovery can be invoked by an ENode or a FCoE Forwarder (FCF) that is a Fibre Channel Switching Element to discover the VLANs in the Lossless Ethernet network. Possible values are 0 and 1. If it is set to 1, the VLAN discovery process will be enabled. The default is 0.

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   The FCoE device handle

status    Success (1) or failure (0) of the operation.

procName    The function name

log       An error message (if the operation failed).

Description

The sth::fcoe_config function creates or modifies an emulated FCoE device block. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

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

Example:

#### HLTAPI for Tcl ####

The following segment is an example for sth::fcoe_config:

set returnedString [sth::fcoe_config \
             -port_handle     port1   \
             -mode            create  \
             -encap           ethernet_ii_vlan \
             -mac_addr        00:10:94:00:00:66  \
             -vlan_id         900 \
             -vlan_pri        3 \
             -vnport_count    8   \
             -wwpn            20:00:10:94:00:00:00:55  \
             -wwnn_step       00:00:00:00:00:00:00:01  \
             -host_type       both  \
             -fc_map          EFC00    \
                ]

keylget returnedString handle fcoeDevice
puts "Create FCoE device\n$returnedString"

set returnedString [sth::fcoe_config \
                                -handle    $fcoeDevice   \
                                -mode      modify  \
                                -vlan_pri  1 \
                                            ]
puts "Modify FCoE device\n$returnedString"

set returnedString [sth::fcoe_config    -handle  $fcoeDevice  -mode  reset]
puts "Reset  FCoE device\n$returnedString"

Sample Output:

Create FCoE device
{status 1} {procName fcoe_config} {handle host1}
Modify FCoE device
{status 1} {procName fcoe_config} {handle host1}
Reset FCoE device
{status 1} {procName fcoe_config}

#### HLTAPI for Python ####

The following example creates and configures an FCoE emulated device:

device_ret0 = sth.fcoe_config (
         mode                = 'create',
         encap               = 'ethernet_ii_vlan',
         logout_delay        = '10',
         login_delay         = '10',
         port_handle         = port_handle[0],
         vlan_cfi            = '0',
         vlan_id             = '906',
         vlan_pri            = '7',
         wwpn                = '20:00:00:10:94:00:00:01',
         wwpn_step           = '00:00:00:00:00:00:00:01',
         use_wwpn            = '0',
         max_rx_size         = '128',
         wwnn                = '10:00:00:10:94:00:00:01',
         enode_count         = '1',
         enable_vlan_discovery= '0',
         fc_map              = 'efc00',
         bb_credit           = '3',
         host_type           = 'initiator',
         fip_priority        = '100',
         addressing_mode     = 'fpma',
         wwnn_step           = '00:00:00:00:00:00:00:01',
         mac_addr            = '00:10:94:00:00:03',
         mac_addr_step       = '00:00:00:00:00:01',
         vnport_count        = '2');

Sample Output:

{'status': '1', 'procName': 'fcoe_config', 'handle': 'host3'}

#### HLTAPI for Perl ####

The following example creates and configures an FCoE emulated device:

my %device_ret0 = sth::fcoe_config (
         mode                => 'create',
         encap               => 'ethernet_ii_vlan',
         logout_delay        => '10',
         login_delay         => '10',
         port_handle         => "$hport[1]",
         vlan_cfi            => '0',
         vlan_id             => '906',
         vlan_pri            => '7',
         wwpn                => '20:00:00:10:94:00:00:01',
         wwpn_step           => '00:00:00:00:00:00:00:01',
         use_wwpn            => '0',
         max_rx_size         => '128',
         wwnn                => '10:00:00:10:94:00:00:01',
         enode_count         => '1',
         enable_vlan_discovery=> '0',
         fc_map              => 'efc00',
         bb_credit           => '3',
         host_type           => 'initiator',
         fip_priority        => '100',
         addressing_mode     => 'fpma',
         wwnn_step           => '00:00:00:00:00:00:00:01',
         mac_addr            => '00:10:94:00:00:03',
         mac_addr_step       => '00:00:00:00:00:01',
         vnport_count        => '2');

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'fcoe_config';
$VAR3 = 'handle';
$VAR4 = 'host3';
$VAR5 = 'status';
$VAR6 = '1';

End of Procedure Header

sth::fcoe_control

Purpose

Discovers, logins, logouts, starts, and stops the specified FCoE devices.

Synopsis

Note

M sign indates that the argument is mandatory.

sth::fcoe_control
    [-handle   {FCoE_device_handle_list}  M]
    [-action   {discovery |login|logout|start|stop}  M]

Arguments

-handle

Identifies a list of FCoE devices executing the action. This argument is mandatory. It is returned from the sth::fcoe_config function.

-action

Specifies the action to perform on the device specified by the -handle argument. This argument is mandatory. Possible values are discovery, login, logout, start and stop; they are described below:

discovery   Starts the FCoE Discovery process. The process
            is invoked by ENodes for discovering the VLANs. FCF
            is a Fibre Channel Switching Element (see FC-SW-5)
            that is able to forward FCoE frames across one or
            more FCF-MACs, It optionally includes one or more
            Lossless Ethernet bridging elements and/or a Fibre
            Channel Fabric interface.

login       Starts the FCoE Login process that ENodes initiates
             VNports and registers it to the FCF.

logout      Starts the FCoE Logout process that ENodes logout its
            VNports to the FCF.

start       Starts the FCoE device from the discovery step, and
            then goes to the login process after discovery is done.

stop        Stops the FCoE device after the start action.

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.

handle     The FCoE device handle.

procName   Name of the function.

log        An error message (if the operation failed).

Description

The sth::fcoe_control function performs the following actions:: discovery, login, logout, start and stop. When you call the fcoe_control function, you must specify a handle.

Example:

#### HLTAPI for Tcl ####

The following segment is an example for sth::fcoe_config:

set returnedString [sth::fcoe_stats    -handle  $fcoeDevice ]
puts "$returnedString"

Sample Output:

{status 1} {handle host1} {procName fcoe_control}

#### HLTAPI for Python ####

The following segment starts the FCoE discovery process on the specific FCoE device:

ctrl_ret1 = sth.fcoe_control (
             handle              = device_list,
             action              = 'discovery');

Sample Output:

{'status': '1', 'procName': 'fcoe_control', 'handle': 'host3 host4'}

#### HLTAPI for Perl ####

The following segment starts the FCoE discovery process on the specific FCoE device:

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

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'fcoe_control';
$VAR3 = 'handle';
$VAR4 = 'host3 host4';
$VAR5 = 'status';
$VAR6 = '1';

End of Procedure Header

sth::fcoe_stats

Purpose

Returns the specified FCoE device statistics. The statistics include the device status and number and type of messages sent and received.

Synopsis

Note

M sign indates that the argument is mandatory.

sth::fcoe_stats
  -handle   {FCoE device handle}
  [-mode  {summary| vnport| all}]

Arguments

-handle

Identifies the FCoE devices whose statistics are to be returned. This argument is mandatory. It is returned from the sth::fcoe_config function.

-mode

Specifies the kind of returned information. Possible values are summary, vnport and all. The default is summary. Possible values are described below:

summary   Returns FCoE summary results

vnport    Returns FCoE VN_Port results

all      Returns both FCoE summary and VN_Port results

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     The FCoE device handle

status     Success (1) or failure (0) of the operation.

procName   The function name

log        An error message (if the operation failed).

The following statistics are returned when the -mode argument is set to all or vnport:

<vnportID>.state     State of the FCoE device
                     Possible values are:
                          Up: VN_Port is up.
                          Down: VN_Port is down.
<vnportID>.substate  Sub-state of the FCoE device
                     Possible values are:
                          NONE: No state.
                          LOGGED_OUT: Logged out.
                          SOLICITATION_SENT: Solicitation sent.
                          SOLICITATION_TIMED_OUT: Solicitation timed
                               out.
                          DISCOVERY_FAILED: Discovery failed.
                          ADVERTISEMENT_RECEIVED: Advertisement
                               received.
                          FLOGI_SENT: FLOGI sent.
                          FLOGI_TIMED_OUT: FLOGI timed out.
                          FLOGI_REJECTED: FLOGI rejected.
                          FLOGI_ACCEPTED: FLOGI accepted.
                          FDISC_SENT: FDISC sent.
                          FDISC_TIMED_OUT: FDISC timed out.
                          FDISC_REJECTED: FDISC rejected.
                          FDISC_ACCEPTED: FDISC accepted.
                          PLOGI_SENT PLOGI sent.
                          PLOGI_TIMED_OUT: PLOGI timed out.
                          PLOGI_REJECTED: PLOGI rejected.
                          PLOGI_ACCEPTED: PLOGI accepted.
                          SCR_SENT: SCR sent.
                          SCR_TIMED_OUT: SCR timed out.
                          SCR_REJECTED: SCR rejected.
                          SCR_ACCEPTED: SCR accepted.
<vnportID>.rx_vlan_notification
           Number of VLAN notification message received
<vnportID>.tx_vlan_req
           Number of VLAN request message transmitted
<vnportID>.granted_macaddr
           Granted MAC Address of the FCoE device
<vnportID>.fcid
           FC ID of the FCoE device
<vnportID>.dst_mac_adddr
           Destination MAC Address of the FCoE device
<vnportID>.wwpn
           World Wide Port Name of the FCoE device
<vnportID>.wwnn
           World Wide Node Name of the FCoE device
<vnportID>.granted_vlanid
           Granted Vlan ID of the FCoE device

The following statistics are returned when the -mode argument is set to all or summary:

vnport_down               Number of VN_Port in DOWN state
vnport_up                 Number of VN_Port in UP state
ka_period                 Keep Alive Period measured in milliseconds.
rx_rjt                    Number of rejected messages received
rx_acc                    Number of accepted messages received
rx_multi_adv              Number of multicast advertisement messages received
rx_cvl                    Number of clear virtual link messages received
rx_uni_advertisement      Number of unicast advertisement messages
                                                 received
rx_multi_adv              Number of multicast advertisement messages received
tx_ka                     Number of keep_alive messages transmitted
tx_flogi                  Number of FLOGI messages transmitted
tx_fdisc                  Number of FDISC messages transmitted
tx_plogi                  Number of PLOGI messages transmitted
tx_logo                   Number of LOGO messages transmitted
tx_uni_solicitation       Number of state change registers transmitted
tx_scr                    Number of unicast solicitation messages transmitted

Description

The sth::fcoe_stats function retrieves a list of aggregate statistics for the FCoE device configured on the specified port.

Example:

#### HLTAPI for Tcl ####

The following example retrieves statistics of the FCoE device configured on the specified port:

set returnedString [sth::fcoe_stats    -handle $fcoeDevice -mode summary]
puts "$returnedString"

set returnedString [sth::fcoe_stats    -handle $fcoeDevice -mode vnport]
puts "$returnedString"

Sample Output:

#Summary Results
{status 1} {vnport_down 0} {rx_acc 4} {rx_rjt 0} {tx_logo 0} {tx_fdisc 0}
{tx_state_change_register 0} {tx_plogi 3} {rx_multi_adv 60}
{rx_uni_advertisement 3}{tx_uni_solicitation 3} {tx_flogi 3} {vnport_up 3}
{ka_period 8000} {rx_clear_virlink 0}{tx_ka 12} {handle host1}
{procName sth::fcoe_stats}

#VN_Port Results
{status 1} {vnport0 {{wwpn 20:00:10:94:00:00:00:01}
{granted_macaddr 0e:fc:10:62:00:02}{rx_vlan_notification 1}
{dst_mac_adddr 00:0d:ec:6d:a0:00} {state UP} {granted_vlanid 900}
{wwnn 20:00:10:94:00:00:00:01} {fcid 620002} {tx_vlan_req 1}
{substate PLOGI_SENT}}}{vnport1 {{wwpn 20:00:10:94:00:00:00:02}
{granted_macaddr 0e:fc:10:62:00:03} {rx_vlan_notification 1}
{dst_mac_adddr 00:0d:ec:6d:a0:00}{state UP} {granted_vlanid 900}
{wwnn 20:00:10:94:00:00:00:02} {fcid 620003} {tx_vlan_req 1}
{substate PLOGI_SENT}}}{vnport2 {{wwpn 20:00:10:94:00:00:00:03}
{granted_macaddr 0e:fc:10:62:00:06}{rx_vlan_notification 1}
{dst_mac_adddr 00:0d:ec:6d:a0:00} {state UP} {granted_vlanid 900}
{wwnn 20:00:10:94:00:00:00:03} {fcid 620006} {tx_vlan_req 1}
{substate PLOGI_ACCEPTED}}}{handle host1} {procName sth::fcoe_stats}

#### HLTAPI for Python ####

The following example retrieves statistics of the FCoE device configured on the specified port:

results_ret1 = sth.fcoe_stats (
                    handle              = device,
                    mode                = 'summary');

Sample Output:

{'status': '1', 'rx_multi_adv': '0', 'handle': 'host3', 'rx_uni_adv': '0',
'vnport_up': '0', 'rx_cvl': '0', 'tx_logo': '0', 'rx_acc': '0',
'procName': 'sth::fcoe_stats', 'rx_rjt': '0', 'tx_fdisc': '0', 'tx_uni_soli': '0',
'tx_plogi': '0', 'tx_ka': '0', 'tx_flogi': '0', 'ka_period': '0', 'vnport_down': '0'}

#### HLTAPI for Perl ####

The following example retrieves statistics of the FCoE device configured on the specified port:

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

Sample Output:

$VAR1 = 'vnport_up';
$VAR2 = '0';
$VAR3 = 'ka_period';
$VAR4 = '0';
$VAR5 = 'status';
$VAR6 = '1';
$VAR7 = 'procName';
$VAR8 = 'sth::fcoe_stats';
        ...

Note

The ID in <vnportID> is zero-based.

End of Procedure Header

sth::fip_traffic_config

Purpose

Creates, modifies, or deletes FIP raw stream blocks, which are stream blocks without endpoints such as hosts and routers.

Please refer to FC-BB-5, FC-FS-2, and FC-FS-3 for more information.

Synopsis

Note

M sign indates that the argument is mandatory.

sth::fip_traffic_config
    [-handle   {streamblock_handle}  M]
    [-mode   {create | modify | reset}  M]
    [-version <bit>]
    [-reserved1 <bits>]
    [-operationcode <hexadecimal>]
    [-reserved2 <hexadecimal>]
    [-subcode <hexadecimal>]
    [-fp <bit>]
    [-sp <bit>]
    [-reserved3 <bit>]
    [-a <bit>]
    [-s <bit>]
    [-f <bit>]
    [-padding {ANY}]
    [-dl_id  {vlan|priority|macaddr|fcmap|nameid|fabricname|maxrcvsize|
             flogireq|flogiacc|flogirjt|fdiscreq|fdiscacc|fdiscrjt|logoreq|
             logoacc|logorjt|elpreq|elpacc|elprjt|vendorid}]
    [-vlanid <1-4094>]
    [-priority_reserved <hexadecimal>]
    [-priority <0-255>]
    [-macaddr <aa:bb:cc:dd:ee:ff>]
    [-fcmap_reserved <hexadecimal>]
    [-fcmap <hexadecimal>]
    [-nameid_reserved <hexadecimal>]
    [-nameid <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-fabricname_reserved <hexadecimal>]
    [-fabricname <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-maxrcvsize <bits>
    [-vendorid_reserved <hexadecimal>]
    [-vendorid <hexadecimal>]
    [-fka_reserved <hexadecimal>]
    [-fkaadvperiod <hexadecimal>]
    [-vxport_portname <hexadecimal>]
    [-vxport_addrid <hexadecimal>]
    [-vxport_reserved <hexadecimal>]
    [-vxport_macaddr <aa:bb:cc:dd:ee:ff>]
    [-flogi_reserved <hexadecimal>]
    [-flogiacc_reserved <hexadecimal>]
    [-flogirjt_reserved <hexadecimal>]
    [-fdisc_reserved <hexadecimal>]
    [-fdiscacc_reserved <hexadecimal>]
    [-fdiscrjt_reserved <hexadecimal>]
    [-logo_reserved <hexadecimal>]
    [-logoacc_reserved <hexadecimal>]
    [-logorjt_reserved <hexadecimal>]
    [-elpreq_reserved <hexadecimal>]
    [-elpacc_reserved <hexadecimal>]
    [-elprjt_reserved <hexadecimal>]
    [-h_rctl <hexadecimal>]
    [-h_did <hexadecimal>]
    [-h_csctl <hexadecimal>]
    [-h_sid <hexadecimal>]
    [-h_type <hexadecimal>]
    [-h_framecontrol <hexadecimal>]
    [-h_seqid <hexadecimal>]
    [-h_dfctl  <hexadecimal>]
    [-h_seqcnt <hexadecimal>]
    [-h_origexchangeid <hexadecimal>]
    [-h_responseexchangeid <hexadecimal>]
    [-h_parameter <hexadecimal>]
    [-pl_reserved1  <hexadecimal>]
    [-pl_nportname <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-pl_nodename  <aa:bb:cc:dd:ee:ff:gg:hh>]
    [-pl_vendorversionlevel <hexadecimal>]
    [-pl_commonsvcparams <hexadecimal>]
    [-pl_class1svcparams <hexadecimal>]
    [-pl_class2svcparams <keyed list>]
    [-pl_class3svcparams <keyed list>]
    [-pl_class4svcparams <keyed list>]
    [-pl_reasoncode <hexadecimal>]
    [-pl_reasonexplanation <hexadecimal>]
    [-pl_vendorunique <hexadecimal>]
    [-pl_nportid <hexadecimal>]
    [-pl_portname <hexadecimal>]
    [-pl_code <hexadecimal>]
    [-pl_revision <integer>]
    [-pl_flags <integer>]
    [-pl_bbscn <hexadecimal>]
    [-pl_ratov <hexadecimal>]
    [-pl_edtov <hexadecimal>]
    [-pl_reqinterconnportname <hexadecimal>]
    [-pl_reqswitchname <hexadecimal>]
    [-pl_reserved <hexadecimal>]
    [-pl_classfsvcparams  <keyed list>]
    [-pl_class1interconnectportparams  <keyed list>]
    [-pl_class2interconnectportparams  <keyed list>]
    [-pl_class3interconnectportparams  <keyed list>]
    [-pl_islflowcontrol <keyed list>]

Arguments

-handle

Defines the FIP traffic handle that is to be configured. This argument is mandatory. When the -mode argument is set to create, the handle must be the returned value of sth::traffic_config; when -mode is set to modify or reset, the value of -handle must be the returned value of sth::fip_traffic_config.

-mode

Specifies the action to be taken. This argument is mandatory. The possible values are create, modify and reset.

When -mode is set to create, the fip traffic will be created on the specified streamblock defined by -handle. Spirent HLTAPI will create several descriptor lists according to the value sequence defined by -dl_id.

When -mode is set to modify, the fip traffic will be modified, and the modification will be applied to the specified descriptor lists.

When -mode is set to reset and -dl_id is provided, deletion will be applied to the specified descriptor lists, otherwise the whole fip traffic will be removed from the specified streamblock.

The FIP_Header is subdivided into fields as shown below:

-version

The default value is 0000.

-reserved1

The default value is 000000000000.

-operationcode

The default value is 0001.

-reserved2

The default value is 00.

-subcode

The default value is 00.

-fp

The default value is 1.

-sp

The default value is 0.

-reserved3

The default value is 0.

-a

The default value is 0.

-s

The default value is 0.

-f

The default value is 0.

-padding

The padding value.

-dl_id

Indicates the type of the descriptor list. Possible values are listed below. You can specify one or more choices from the list below:

vlan
priority
macaddr
fcmap
nameid
fabricname
maxrcvsize
vxport
fka_adv_period
vendorid
flogireq
flogiacc
flogirjt
fdiscreq
fdiscacc
fdiscrjt
logoreq
logoacc
logorjt
elpreq
elpacc
elprjt

The argument is mandatory when -mode is set to create or reset.

When the -mode argument is set to create, several descriptor lists will be created according to the value sequence defined by the -dl_id option.

When the -mode argument is modify, the modification will be applied to the specified descriptor lists. If the descriptor lists does not exist, it will be created accordingly.

When the -mode argument is set to reset, the deletion will be applied to the specified descriptor lists.

-vlanid

Specifies the VLAN ID of a VLAN where FCoE services can be available. The default value is 0. Possible values range from 1 to 4094.

-priority_reserved

The default value is 00.

-priority

Defines the priority value associated with the sending FCF-MAC. The FCF-MAC is a Lossless Ethernet MAC coupled with an FCoE Controller in an FCoE Forwarder (FCF). The default value is 64; the range is from 0 (highest) to 255 (lowest).

-macaddr

Defines the MAC address contained in the descriptor. The default value is 00:10:94:00:00:01.

-fcmap_reserved

The default value is 000000.

-fcmap

Defines the value to be used as the most significant 24 bits in Fabric Provided MAC Addresses (FPMAs). FPMA is a MAC address that is assigned by an FCF to a single ENode MAC, and is not assigned to any other MAC within the same Ethernet VLAN. A FPMA is associated with a single VN_Port at that ENode MAC. The default value is 0EFC00.

-nameid_reserved

The default value is 0000.

-nameid

The Name_Identifier (see FC-FS-3) contained in the descriptor. The Name_Identifier is a 64-bit identifier, with a 60-bit value preceded with a 4-bit Network_Address_Authority Identifier, used to identify entities in Fibre Channel (e.g., N_Port, node, F_Port, or Fabric). The default value is 10:00:10:94:00:00:00:01.

-fabricname_reserved

The default value is 0000.

-fabricname

Specifies the Fabric_Name (see FC-FS-3) identifying the Fabric. The default value is 20:00:10:94:00:00:00:01.

-maxrcvsize

The size in bytes that the FIP PDU in a solicited unicast Discovery Advertisement is requested to be extended to. The default value is 2112.

-vxport_macaddr

The MAC address associated with the referred VN_Port. The default value is 00:10:94:00:00:01.

-vxport_reserved

The default value is 0000.

-vxport_addrid

Defines the address identifier associated with the referred VN_Port. The default value is 00000A.

-vxport_portname

Specifies the N_Port_Name of the referred VN_Port. The default value is 20:00:10:94:00:00:00:01.

-fkaadvperiod

Specifies the value of the advertised FKA_ADV_PERIOD. The default value is 00000000.

-fka_reserved

The default value is 0000.

-vendorid

Specifies the Vendor_ID value that defines the vendor(s). The default value is 00000000.

-vendorid_reserved

The default value is 0000.

-flogireq_reserved

The default value is 0000.

-flogiacc_reserved

The default value is 0000.

-flogirjt_reserved

The default value is 0000.

-fdiscreq_reserved

The default value is 0000.

-fdiscacc_reserved

The default value is 0000.

-fdiscrjt_reserved

The default value is 0000.

-logoreq_reserved

The default value is 0000.

-logoacc_reserved

The default value is 0000.

-logorjt_reserved

The default value is 0000.

-elpreq_reserved

The default value is 0000.

-elpacc_reserved

The default value is 0000.

-elprjt_reserved

The default value is 0000.

The Frame_Header is subdivided into fields as shown below:

_images/FCoE_Frame_Header.png
-h_rctl

The default value is 22.

-h_did

The default value is 000000.

-h_csctl

The default value is 00.

-h_sid

The default value is 000000.

-h_type

The default value is 00.

-h_framecontrol

The default value is 000000.

-h_seqid

The default value is 00.

-h_dfctl

The default value is 00.

-h_seqcnt

The default value is 0000.

-h_origexchangeid

The default value is 0000.

-h_responseexchangeid

The default value is ffff.

-h_parameter

The default value is 00000000.

-pl_reserved1

The default value is 000000.

-pl_reserved2

The default value is 00.

-pl_nportname

The default value is 20:00:10:94:00:00:00:01. -pl_nodename The default value is10:00:10:94:00:00:00:01. -pl_vendorversionlevel The default value is 00000000000000000000000000000000.

-pl_commonsvcparams

The Common Service Parameters Payload is subdivided into fields as shown below:

_images/FCoE_Common_Service_Para_Payload.png

This argument represents a list of keyed values. The keys and their default values are listed below:

{
   -fcphversionhigh
           The default value is 00
   -fcphversionlow
           The default value is 20
   -buffertobuffercredit
           The default value is 0010
   -commfeatures
           The default value is 8000
   -rcvdatasize
           The default value is 0840
   -totalconcurrentsequence
           The default value is 0002
   -reloffsetbyinfocategory
           The default value is 0000
   -edtov
           The default value is 000007d0
}
-pl_class1svcparams

The Payload Class Service Parameters are subdivided into fields as shown below:

_images/FCoE_Payload_Class_Service_Para.png

This argument represents a list of keyed values. The keys and their default values are listed below:

{
    -serviceoptions
         The default value is 0000.
    -ictl
         The default value is 0000.
    -rctl
         The default value is 0000.
    -recdatafieldsize
         The default value is 0840.
    -currentsequences
         The default value is 01.
    -endtoendcredit
         The default value is 0000.
    -openseqperexchange
         The default value is 0001.
    -reserved1
         The default value is 00.
    -reserved2
         The default value is 0000.

}

-pl_class2svcparams

Please refer to -pl_class1svcparams.

-pl_class3svcparams

Please refer to -pl_class1svcparams.

-pl_class4svcparams

Please refer to pl_class1svcparams.

-pl_reasoncode

The default value is 3.

-pl_reasonexplanation

The default value is 0F.

-pl_vendorunique

The default value is 0.

-pl_nportid

The default value is 000000.

-pl_portname

The default value is 20:00:10:94:00:00:00:01.

-elpreq_reserved

The default value is 0000.

-elpacc_reserved

The default value is 0000.

-elprjt_reserved

The default value is 0000.

Exchange Link Parameters (ELP) Request or ELP SW_ACC is subdivided into fields below:

_images/FCoE_ELP.png
-pl_code

The default value is 10000000.

-pl_revision

The default value is 4.

-pl_flags

The default value is 0.

-pl_bbscn

The default value is 0.

-pl_ratov

The default value is 10000.

-pl_edtov

The default value is 2000.

-pl_reqinterconnportname

The default value is 20:00:10:94:00:00:00:01.

-pl_reqswitchname

The default value is 20:00:10:94:00:00:00:01.

-pl_reserved

The default value is 0000000000000000000000000000000000000000.

-pl_classfsvcparams

This argument represents a list of keyed values, the keys and their default values are listed below:

{
     -val
         The default value is 1.
    -reserved1
         The default value is 0000
    -reserved2
         The default value is 0000
     -r
         The default value is 00
    -xii
         The default value is 0
    -reserved3
         The default value is 0000000000000
    -recvdatafieldsize
         The default value is 1000
    -concseq
         The default value is 1
    -endtoendcredit
         The default value is 1
    -openseqperexchange
         The default value is 1
    -reserved4
         The default value is 0000
}
-pl_class1interconnectportparams

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-val
    The default value is 0
-imx
        The default value is 0
-xps
        The default value is 0
-lks
        The default value is 0
-reserved
        The default value is 000000000000
-recvdatafieldsize
        The default value is 1000
}
-pl_class2interconnectportparams

This argument will represent a list of keyed values. The keys and their default values are listed below:

{
    -val
            The default value is 0
    -rrr
            The default value is 00
    -seq
            The default value is 0
    -reserved
            The default value is 000000000000
    -recvdatafieldsize
            The default value is 1000
}
-pl_class3interconnectportparams

This argument will represent a list of keyed values. The keys and their default values are listed below:

{
    -val
            The default value is 1
    -rrr
            The default value is 00
    -seq
            The default value is 1
    -reserved
            The default value is 000000000000
    -recvdatafieldsize
            The default value is 1000
}
-pl_islflowcontrol

This argument represents a list of keyed values. The keys and their default values are listed below:

{
    -islflowcontrolmode
            The default value is 0002
    -islflowcontrollength
            The default value is 20
    -bbcredit
            The default value is 00000000
    -compatibilityparameters
       The default value is
       00000000000000000000000000000000
}

This argument is available when elpreq or elpacc is indicated in -dl_id.

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

stream_id   The FCoE traffic handle

status    Success (1) or failure (0) of the operation.

procName    The function name

log       An error message (if the operation failed).

Description

Creates, modifies, or deletes FIP raw stream blocks, which are stream blocks without endpoints such as hosts and routers.

The following paragraphs describe when the arguments for this command are available.

The following arguments are available without any limitation:

-version, -reserved1, -operationcode, -reserved2, -subcode, -fp,
-sp, -reserved3, -a, -s, -f, -padding

You can specify the options below when the corresponding descriptor type is enabled in -dl_id. The relationships are described below:

When vlan is indicated in -dl_id, these arguments are available:

-vlanid

When priority is indicated in -dl_id, these arguments are available:

-priority_reserved, -priority

When macaddr is indicated in -dl_id, these arguments are available:

-macaddr

When fcmap is indicated in -dl_id, these arguments are available:

-fcmap_reserved, -fcmap

When nameid is indicated in -dl_id, these arguments are available:

-nameid_reserved, -nameid

When fabricname is indicated in -dl_id, these arguments are available:

-fabricname_reserved, -fabricname

When maxrcvsize is indicated in -dl_id, these arguments are available:

-maxrcvsize

When vendorid is indicated in -dl_id, these arguments are available:

-vendorid, -vendorid_reserved

When vxport is indicated in -dl_id, these arguments are available:

-vxport_macaddr, -vxport_reserved, -vxport_addrid,
-vxport_portname

When fka_adv_period is indicated in -dl_id these arguments are available:

-fkaadvperiod, -fka_reserved

When flogireq is indicated in -dl_id, these arguments are available:

-flogireq_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_nportname,
-pl_nodename, -pl_vendorversionlevel, -pl_commonsvcparams,
-pl_class1svcparams, -pl_class2svcparams, -pl_class3svcparams,
-pl_class4svcparams

When flogiacc is indicated in -dl_id, these arguments are available:

-flogiacc_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_nportname,
-pl_nodename, -pl_vendorversionlevel, -pl_commonsvcparams,
-pl_class1svcparams, -pl_class2svcparams, -pl_class3svcparams,
-pl_class4svcparams

When flogirjt is indicated in -dl_id, these arguments are available:

-flogirjt_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid h_parameter,
-pl_reserved1, -pl_reserved2, -pl_reasoncode, -pl_explanationcode
-pl_vendorunique

When fdiscreq is indicated in -dl_id, these arguments are available:

-fdiscreq_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_nportname,
-pl_nodename, -pl_vendorversionlevel, -pl_commonsvcparams,
-pl_class1svcparams, -pl_class2svcparams, -pl_class3svcparams,
-pl_class4svcparams

When fdiscacc is indicated in -dl_id, these arguments are available:

-fdiscacc_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_nportname,
-pl_nodename, -pl_vendorversionlevel, -pl_commonsvcparams,
-pl_class1svcparams, -pl_class2svcparams, -pl_class3svcparams,
-pl_class4svcparams

When fdiscrjt is indicated in -dl_id, these arguments are available:

-fdiscrjt_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter,
-pl_reserved1, -pl_reserved2, -pl_reasoncode, -pl_explanationcode,
-pl_vendorunique

When logoreq is indicated in -dl_id, these arguments are available:

-logoreq_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid -h_parameter
-pl_reserved1, -pl_nportid, -pl_portname

When logoacc is indicated in -dl_id, these arguments are available:

-logoacc_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1

When logorjt is indicated in -dl_id, these arguments are available:

-logorjt_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_reserved2,
-pl_reasoncode, -pl_explanationcode, -pl_vendorunique

When elpreq is indicated in -dl_id, these arguments are available:

-elpreq_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_code, -pl_revision,
-pl_flags, -pl_bbscn, -pl_ratov, -pl_edtov,
-pl_reqinterconnportname, -pl_reqswitchname, -pl_reserved,
-pl_classfsvcparams, -pl_class1interconnectportparams,
-pl_class2interconnectportparams,
-pl_class3interconnectportparams, -pl_islflowcontrol,

When elpacc is indicated in -dl_id, these arguments are available:

-elpacc_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_code, -pl_revision,
-pl_flags, -pl_bbscn, -pl_ratov, -pl_edtov,
-pl_reqinterconnportname, -pl_reqswitchname, -pl_reserved,
-pl_classfsvcparams, -pl_class1interconnectportparams,
-pl_class2interconnectportparams,
-pl_class3interconnectportparams, -pl_islflowcontrol

When elprjt is indicated in -dl_id, these arguments are available:

-elprjt_reserved, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter, -pl_reserved1, -pl_reserved2,
-pl_reasoncode, -pl_explanationcode, -pl_vendorunique

Examples

#### HLTAPI for Tcl ####

To create a Layer 2 frame by sth::traffic_config:

set returnedString [sth::traffic_config\
                                   -mode create\
                                   -port_handle $port1\
                                   -l2_encap ethernet_ii\
                                   -transmit_mode continuous\
                                   -rate_pps 1000\
                    ]
puts "l2_traffic\n$returnedString"
keylget returnedString stream_id sb

To create the FIP traffic based on the Layer 2 frame. The type of the descriptor lists is flogireq for the Flogi Reject Frame:

set fip_traffic_config  "sth::fip_traffic_config -mode create -handle $sb\
                     -version 0 -reserved1 0 -operationcode 1 -reserved2 0
                     -subcode 0 -fp 1 -sp 0 -reserved3 0 -a 0 -s 0 -f 0
                     -dl_id flogireq \
                     -flogireq_reserved 0 \
                     -h_rctl 22 -h_did 0 -h_csctl 0 -h_sid 0 -h_type 0
                     -h_framecontrol 0 -h_seqid 0 -h_dfctl 0 -h_seqcnt 0
                     -h_origexchangeid 0 \
                     -pl_reserved1 0 -pl_nportname 20:00:10:94:00:00:00:01
                     -pl_nodename 10:00:10:94:00:00:00:01 \
                     -pl_commonsvcparams {
                               -fcphversionhigh 0 \
                               -fcphversionlow 20 \
                               -buffertobuffercredit 10 \
                                    } \
                     -pl_class1svcparams {
                               -serviceoptions 0 \
                               -ictl 0 \
                               -rctl 0 \
                               -endtoendcredit 0 \
                                    } \
                              "
set returnedString [eval $fip_traffic_config]
puts "Create Flogi Reject Frame\n$returnedString"

To add macaddr to descriptor list in order to generate Flogi Accept Frame:

set fip_traffic_config  "sth::fip_traffic_config -mode modify -handle $sb\
                             -dl_id macaddr \
                             -macaddr 00:10:94:00:00:01 \
                            "
set returnedString [eval $fip_traffic_config]
puts "Change to Flogi Accept Frame by modify\n$returnedString"

To delete the macaddr from descriptor list:

set returnedString  [sth::fip_traffic_config -mode reset -handle $sb
                        -dl_id macaddr]
puts "Delete the macaddr\n$returnedString"

To delete the whole FIP frame:

set returnedString  [sth::fip_traffic_config -mode reset -handle $sb ]
puts "Delete FIP by reset\n$returnedString"

Sample Output:

l2_traffic
{stream_id streamblock1} {status 1}
Create Flogi Reject Frame
{status 1} {procName sth::fip_traffic_config} {streamid streamblock1}
Change to Flogi Accept Frame by modify
{status 1} {procName sth::fip_traffic_config} {streamid streamblock1}
Delete the macaddr
{status 1} {procName sth::fip_traffic_config} {streamid streamblock1}
Delete FIP by reset
{status 1} {procName sth::fip_traffic_config} {streamid streamblock1}

#### HLTAPI for Python ####

To create a Layer 2 frame by sth::traffic_config:

streamblock_ret1 = sth.traffic_config (
        mode                   ='create',
        port_handle            =port_handle[0],
        l2_encap               ='ethernet_ii',
        mac_src                ='00:10:94:00:00:01',
        ether_type             ='88B5',
        mac_dst                ='00:10:94:00:00:02',
        enable_control_plane   ='0',
        l3_length              ='1006',
        name                   ='StreamBlock_8-3',
        fill_type              ='constant',
        fcs_error              ='0',
        fill_value             ='0',
        traffic_state          ='1',
        high_speed_result_analysis    = '1',
        length_mode            ='fixed',
        disable_signature      ='0',
        enable_stream_only_gen ='1',
        pkts_per_burst         ='1',
        inter_stream_gap_unit  ='bytes',
        burst_loop_count       ='30',
        transmit_mode          ='continuous',
        inter_stream_gap       ='12',
        rate_percent           ='10');

To create the FIP traffic with multiple types of descriptor lists based on the Layer 2 frame:

stream_id = streamblock_ret1['stream_id']

streamblock_fip_ret = sth.fip_traffic_config (
        mode                   ='create',
        handle                 =stream_id,
        reserved1              ='000000000011',
        reserved2              ='01',
        reserved3              ='00000000011',
        fp                     ='1',
        subcode                ='11',
        padding                ='1111',
        a                      ='1',
        f                      ='1',
        operationcode          ='0001',
        s                      ='1',
        sp                     ='1',
        version                ='0001',
        flogireq_reserved      ='1111',
        macaddr                ='00:10:94:00:00:11',
        priority_reserved      ='11',
        priority               ='11',
        fcmap_reserved         ='111111',
        fcmap                  ='0EFC11',
        nameid_reserved        ='1111',
        nameid                 ='10:00:10:94:00:00:00:11',
        fabricname             ='20:00:10:94:00:00:00:11',
        fabricname_reserved    ='11',
        maxrcvsize             ='1111',
        flogiacc_reserved      ='1111',
        flogirjt_reserved      ='0000',
        fdiscreq_reserved      ='1111',
        dl_id                  =['flogireq','macaddr','priority','fcmap',
                                'nameid','fabricname','maxrcvsize','flogiacc',
                                'flogirjt','fdiscreq'],
        h_csctl                ='11',
        h_dfctl                ='11',
        h_did                  ='111111',
        h_framecontrol         ='291111',
        h_origexchangeid       ='1111',
        h_parameter            ='11111111',
        h_rctl                 ='22',
        h_responseexchangeid   ='1111',
        h_seqcnt               ='1111',
        h_seqid                ='11',
        h_sid                  ='111111',
        h_type                 ='01',
        pl_class1svcparams     =['-ictl','1111','-endtoendcredit','1111',
                                '-rctl','1111','-currentsequences','11',
                                '-reserved1','11','-reserved2','1111',
                                '-recdatafieldsize','0841',
                                '-serviceoptions','1111',
                                '-openseqperexchange','1111'],
        pl_class2svcparams     =['-ictl','1111','-endtoendcredit','1111',
                                '-rctl','1111','-currentsequences','11',
                                '-reserved1','11','-reserved2','1111',
                                '-recdatafieldsize','0841',
                                '-serviceoptions','1111',
                                '-openseqperexchange','1111'],
        pl_class3svcparams     =['-ictl','1111','-endtoendcredit','1111',
                                '-rctl','1111','-currentsequences','11',
                                '-reserved1','11','-reserved2','1111',
                                '-recdatafieldsize','0841',
                                '-serviceoptions','8811',
                                '-openseqperexchange','1111'],
        pl_class4svcparams     =['-ictl','1111','-endtoendcredit','1111',
                                '-rctl','1111','-currentsequences','11',
                                '-reserved1','11','-reserved2','1111',
                                '-recdatafieldsize','0841','
                                -serviceoptions','1111','-openseqperexchange','1111'],
        pl_commonsvcparams     =['-reloffsetbyinfocategory','1111',
                                '-commfeatures','8111','-fcphversionhigh','11',
                                '-totalconcurrentsequence','1111',
                                '-rcvdatasize','0841','-fcphversionlow','11',
                                '-edtov','000007D1',
                                '-buffertobuffercredit','1111'],
        pl_explanationcode     ='0F',
        pl_nodename            ='10:00:10:94:00:00:00:11',
        pl_nportname           ='20:00:10:94:00:00:00:11',
        pl_reasoncode          ='03',
        pl_reserved1           ='111111',
        pl_vendorunique        ='00',
        pl_vendorversionlevel  ='00000000000000000000000000001111');

Sample Output:

L2 Traffic::
    {'status': '1', 'stream_id': 'streamblock1'}
FIP Traffic::
    {'status': '1', 'procName': 'sth::fip_traffic_config', 'streamid': 'streamblock1'}

#### HLTAPI for Perl ####

To create a Layer 2 frame by sth::traffic_config:

my %streamblock_ret1 = sth::traffic_config (
        mode                   => 'create',
        port_handle            => "$hport[1]",
        l2_encap               => 'ethernet_ii',
        mac_src                => '00:10:94:00:00:01',
        ether_type             => '88B5',
        mac_dst                => '00:10:94:00:00:02',
        enable_control_plane   => '0',
        l3_length              => '1006',
        name                   => 'StreamBlock_8-3',
        fill_type              => 'constant',
        fcs_error              => '0',
        fill_value             => '0',
        traffic_state          => '1',
        high_speed_result_analysis     => '1',
        length_mode            => 'fixed',
        disable_signature      => '0',
        enable_stream_only_gen => '1',
        pkts_per_burst         => '1',
        inter_stream_gap_unit  => 'bytes',
        burst_loop_count       => '30',
        transmit_mode          => 'continuous',
        inter_stream_gap       => '12',
        rate_percent           => '10');

To create the FIP traffic with multiple types of descriptor lists based on the Layer 2 frame:

my $stream_id = join( " ", @{$streamblock_ret1{stream_id}});

my %streamblock_fip_ret = sth::fip_traffic_config (
     mode                 => 'create',
     handle               => "$stream_id",
     reserved1            => '000000000011',
     reserved2            => '01',
     reserved3            => '00000000011',
     fp                   => '1',
     subcode              => '11',
     padding              => '1111',
     a                    => '1',
     f                    => '1',
     operationcode        => '0001',
     s                    => '1',
     sp                   => '1',
     version              => '0001',
     flogireq_reserved    => '1111',
     macaddr              => '00:10:94:00:00:11',
     priority_reserved    => '11',
     priority             => '11',
     fcmap_reserved       => '111111',
     fcmap                => '0EFC11',
     nameid_reserved      => '1111',
     nameid               => '10:00:10:94:00:00:00:11',
     fabricname           => '20:00:10:94:00:00:00:11',
     fabricname_reserved  => '11',
     maxrcvsize           => '1111',
     flogiacc_reserved    => '1111',
     flogirjt_reserved    => '0000',
     fdiscreq_reserved    => '1111',
     dl_id => 'flogireq macaddr priority fcmap nameid fabricname maxrcvsize
                     flogiacc flogirjt fdiscreq',
     h_csctl              => '11',
     h_dfctl              => '11',
     h_did                => '111111',
     h_framecontrol       => '291111',
     h_origexchangeid     => '1111',
     h_parameter          => '11111111',
     h_rctl               => '22',
     h_responseexchangeid => '1111',
     h_seqcnt             => '1111',
     h_seqid              => '11',
     h_sid                => '111111',
     h_type               => '01',
     pl_class1svcparams => '-ictl 1111 -endtoendcredit 1111 -rctl 1111
                        -currentsequences 11 -reserved1 11 -reserved2 1111
                        -recdatafieldsize 0841 -serviceoptions 1111
                        -openseqperexchange 1111',
     pl_class2svcparams => '-ictl 1111 -endtoendcredit 1111 -rctl 1111
                        -currentsequences 11 -reserved1 11 -reserved2 1111
                        -recdatafieldsize 0841 -serviceoptions 1111
                        -openseqperexchange 1111',
     pl_class3svcparams => '-ictl 1111 -endtoendcredit 1111 -rctl 1111
                        -currentsequences 11 -reserved1 11 -reserved2 1111
                        -recdatafieldsize 0841 -serviceoptions 8811
                        -openseqperexchange 1111',
     pl_class4svcparams => '-ictl 1111 -endtoendcredit 1111 -rctl 1111
                        -currentsequences 11 -reserved1 11 -reserved2 1111
                        -recdatafieldsize 0841 -serviceoptions 1111
                        -openseqperexchange 1111',
     pl_commonsvcparams => '-reloffsetbyinfocategory 1111 -commfeatures 8111
                        -fcphversionhigh 11 -totalconcurrentsequence 1111
                        -rcvdatasize 0841 -fcphversionlow 11 -edtov 000007D1
                        -buffertobuffercredit 1111',
     pl_explanationcode   => '0F',
     pl_nodename          => '10:00:10:94:00:00:00:11',
     pl_nportname         => '20:00:10:94:00:00:00:11',
     pl_reasoncode        => '03',
     pl_reserved1         => '111111',
     pl_vendorunique      => '00',
     pl_vendorversionlevel   => '00000000000000000000000000001111');

Sample Output:

L2 Traffic::
        $VAR1 = 'status';
        $VAR2 = '1';
        $VAR3 = 'stream_id';
        $VAR4 = 'streamblock3';
FIP traffic:
        $VAR1 = 'procName';
        $VAR2 = 'sth::fip_traffic_config';
        $VAR3 = 'status';
        $VAR4 = '1';
        $VAR5 = 'streamid';
        $VAR6 = 'streamblock3';

End of Procedure Header

sth::fcoe_traffic_config

Purpose

Creates, modifies, or deletes FCoE to modify the frames of raw stream blocks. The raw stream blocks are stream blocks without endpoints such as hosts and routers.

Synopsis

Note

M sign indates that the argument is mandatory.

sth::fcoe_traffic_config
    [-mode   {create | modify | reset}  M]
    [-handle   {streamblock_handle}  M]
    [-sof {soff|sofi2|sofn2|sofi3|sofn3|sofi4|sofn4|sofc4}]
    [-eof {eofn|eoft|eofni|eofa|eofdt|eofdti|eofrt|eofrti}]
    [-reserved1 <bits>]
    [-reserved2 <bits>]
    [-reserved3 <bits>]
    [-reserved4 <bits>]
    [-reserved5 <bits>]
    [-version <bits>]
    [-h_rctl <hexadecimal>]
    [-h_did <hexadecimal>]
    [-h_csctl <hexadecimal>]
    [-h_sid <hexadecimal>]
    [-h_type <bits>]
    [-h_framecontrol <bits>]
    [-h_seqid <bits>]
    [-h_dfctl  <bits>]
    [-h_seqcnt <bits>]
    [-h_origexchangeid <bits>]
    [-h_responseexchangeid <bits>]
    [-h_parameter <hexadecimal>]
    [-pl_id { custom|plogireq|plogiacc|plogirjt|flogireq|flogiacc|flogirjt|
          fdiscreq|fdiscacc|fdiscrjt||logoreq||logoacc|logorjt|fcpcmnd|
          efpreq|efpacc|diareq|diaacc|escreq|escacc|hloreq|lsureq|lsareq|
          ganxtacc|gpnidacc|gnnidacc|gcsidacc|gftidacc|gptidacc|
          gfpnidacc|gspnidacc|gffidacc|gidpnacc|gidnnacc|gsnnnnacc|
          gidftacc|gpnftacc|gnnftacc|rsnnnn|rffid|rspnid|rptid|rftid|
          rcsid|rnnid|rpnid|daid|mergereq|mergereqacc }
    [-pl_reserved1 <hexadecimal>]
    [-pl_nportname <hexadecimal>]
    [-pl_nodename <hexadecimal>]
    [-pl_vendorversionlevel <hexadecimal>]
    [-pl_commonsvcparams <keyed list>]
    [-pl_class1svcparams <keyed list>]
    [-pl_class2svcparams {$pl_classsvcparams}]
    [-pl_class3svcparams {$pl_classsvcparams}]
    [-pl_class4svcparams {$pl_classsvcparams}]
    [-pl_reasoncode <hexadecimal>]
    [-pl_reasonexplanation <hexadecimal>]
    [-pl_vendorunique <hexadecimal>]
    [-pl_nportid <hexadecimal>]
    [-pl_portname <hexadecimal>]
    [-pl_cdbtype { cdb6|cdb10|r_6|r_10|r_buff|r_l10|r_capacity10|w_6|w_10|
          w_buff|w_l10|w_verify10|xd_r10|xd_w10|ssu|ms_6|ms_10|r_lun }
    [-pl_fcplun <hexadecimal>]
    [-pl_cmndrefnum <hexadecimal>]
    [-pl_reserved <hexadecimal>]
    [-pl_priority <hexadecimal>]
    [-pl_taskattrib <hexadecimal>]
    [-pl_taskmgmtflags <hexadecimal>]
    [-pl_addifcpcdblen <hexadecimal>]
    [-pl_rdata <hexadecimal>]
    [-pl_wdata <hexadecimal>]
    [-pl_fcpdl <hexadecimal>]
    [-pl_fcpbirddl <hexadecimal>]
    [-pl_cdb_miscinfo <hexadecimal>]
    [-pl_cdb_miscinfo1 <hexadecimal>]
    [-pl_cdb_lba <hexadecimal>]
    [-pl_cdb_len <hexadecimal>]
    [-pl_cdb_control <hexadecimal>]
    [-pl_cdb_service <hexadecimal>]
    [-pl_cdb_miscinfo2 <hexadecimal>]
    [-pl_cdb_reserved <hexadecimal>]
    [-pl_cdb_transferlen <hexadecimal>]
    [-pl_cdb_rdprotect <hexadecimal>]
    [-pl_cdb_dpo <hexadecimal>]
    [-pl_cdb_fua <hexadecimal>]
    [-pl_cdb_fua_nv <hexadecimal>]
    [-pl_cdb_obsolete <hexadecimal>]
    [-pl_cdb_reserved2 <hexadecimal>]
    [-pl_cdb_groupnum <hexadecimal>]
    [-pl_cdb_mode <hexadecimal>]
    [-pl_cdb_bufferid <hexadecimal>]
    [-pl_cdb_bufferoffset <hexadecimal>]
    [-pl_cdb_allolen <hexadecimal>]
    [-pl_cdb_pblock <hexadecimal>]
    [-pl_cdb_corrct <hexadecimal>]
    [-pl_cdb_reserved3 <hexadecimal>]
    [-pl_cdb_pmi <hexadecimal>]
    [-pl_cdb_wrprotect <hexadecimal>]
    [-pl_cdb_paramlistlen <hexadecimal>]
    [-pl_cdb_wr_uncor <hexadecimal>]
    [-pl_cdb_core_dis <hexadecimal>]
    [-pl_cdb_xorpinfo <hexadecimal>]
    [-pl_cdb_disablewr <hexadecimal>]
    [-pl_cdb_immed <hexadecimal>]
    [-pl_cdb_reserved1 <hexadecimal>]
    [-pl_cdb_pwrcondmod <hexadecimal>]
    [-pl_cdb_pwrcond <hexadecimal>]
    [-pl_cdb_noflush <hexadecimal>]
    [-pl_cdb_loej <hexadecimal>]
    [-pl_cdb_start <hexadecimal>]
    [-pl_cdb_dbd <hexadecimal>]
    [-pl_cdb_pc <hexadecimal>]
    [-pl_cdb_pagecode <hexadecimal>]
    [-pl_cdb_subpagecode <hexadecimal>]
    [-pl_cdb_llbaa <hexadecimal>]
    [-pl_cdb_selectreport <hexadecimal>]
    [-pl_recordlen <hexadecimal>]
    [-pl_principalswitchpriority <hexadecimal>]
    [-pl_principalswitchname <hexadecimal>]
    [-pl_domainid_lists <keyed list>]
    [-pl_multiid_lists <keyed list>]
    [-pl_pagelen <hexadecimal>]
    [-pl_originswitchname <hexadecimal>]
    [-pl_notmeaningful <hexadecimal>]
    [-pl_respondswitchname <hexadecimal>]
    [-pl_flags <hexadecimal>]
    [-pl_vendorescid <keyed list>]
    [-pl_lsr_lists <keyed list>]
    [-pl_fspfheader <keyed list>]
    [-pl_lsh_lists <keyed list>]
    [-pl_reserved2 <hexadecimal>]
    [-pl_hellointerval <hexadecimal>]
    [-pl_deadinterval <hexadecimal>]
    [-pl_rxdomainid <hexadecimal>]
    [-pl_origiportindex <hexadecimal>]
    [-pl_ctiu <hexadecimal>]
    [-pl_porttype <hexadecimal>]
    [-pl_portid <hexadecimal>]
    [-pl_portname <hexadecimal>]
    [-pl_nodename <hexadecimal>]
    [-pl_initprocessassociator <hexadecimal>]
    [-pl_ipaddrnode <hexadecimal>]
    [-pl_classofservice <hexadecimal>]
    [-pl_fc4types <hexadecimal>]
    [-pl_ipaddrport <hexadecimal>]
    [-pl_fabricportname <hexadecimal>]
    [-pl_reserved3 <hexadecimal>]
    [-pl_hardaddr <hexadecimal>]
    [-pl_symbolicportname <hexadecimal>]
    [-pl_fc4features <hexadecimal>]
    [-pl_symbolicnodename <hexadecimal>]
    [-pl_portidentifier_list <hexadecimal>]
    [-pl_portname_list <hexadecimal>]
    [-pl_nodename_list <hexadecimal>]
    [-pl_fc4featurebits <hexadecimal>]
    [-pl_typecode <hexadecimal>]
    [-pl_protocolver <hexadecimal>]
    [-pl_basiczoning_list <hexadecimal>]
    [-pl_enhancezoning_list <hexadecimal>]
    [-pl_obsolete1 <hexadecimal>]
    [-pl_obsolete2 <hexadecimal>]
    [-pl_obsolete3 <hexadecimal>]

Arguments

-handle

Specifies the handle of the FCoE stream block to be configured. This argument is mandatory. When the -mode argument is set to create, the handle must be the returned value of the sth::traffic_config command. When the -mode is set to modify or reset, the handle must be the returned value of the sth::fcoe_traffic_config command.

-mode

Specifies the action to be taken. This argument is mandatory. Possible values are create, modify and reset.

create
Creates FCoE traffic to be applied to the stream block specified by the -handle argument.
modify
Modifies the FCoE traffic.
reset
Removes the FCoE traffic from the specified stream block.

The FCoE PDU is contained by the FCoE frame that is added to the stream by sth::fcoe_traffic_config. The fields are described by -version and the arguments below. You can refer to FIBRE CHANNEL BACKBONE - 5 (FC-BB-5) for more information. The figure below shows the FCoE PDU format:

_images/unamed.png
-version

Specifies the FCoE version. It is a 4-bit value. The default value is 0000.

-sof

Specifies the Start of Frame (SOF) delimiter for the encapsulated FC frame. Possible values are soff, sofi2, sofn2, sofi3, sofn3, sofi4, sofn4, and sofc4. The default value is sofi3.

-eof

Specifies the End of Frame (EOF) delimiter for the encapsulated FC frame. Possible values are eofn, eoft, eofni, eofa, eofdt, eofdti, eofrt, and eofrti. The default value is eoft.

-reserved1

It is a 12-bit value. The default value is 000000000000.

-reserved2

It is a 32-bit hex value. The default value is 00000000.

-reserved3

It is a 32-bit hex value. The default value is 00000000.

-reserved4

It is a 24-bit hex value. The default value is 000000.

-reserved5

It is a 24-bit hex value. The default value is 000000.

_images/FCoE_Common_Service_Para_Payload.png
-h_rctl

Contains routing bits and information bits to categorize the frame function. The default value is 22.

-h_did

Contains the address identifier of the destination Nx_Port. The default value is 000000.

-h_csctl

Contains the Class Specific Control/Priority information. The default value is 00.

-h_sid

Contains the address identifier of the source Nx_Port. The default value is 000000.

-h_type

The data structure type (TYPE) is a one-byte field (Word 2, Bits 31-24) that identifies the protocol of the frame content for data frames. The default value is 00

-h_framecontrol

The Frame Control (F_CTL) field (Word 2, Bits 23-0) is a three-byte field that contains the control information relating to the frame content. The default value is 000000.

-h_seqid

The SEQ_ID is a one-byte field (Word 3, Bits 31-24) assigned by the Sequence Initiator that is unique for a specific D_ID and S_ID pair while the Sequence is open. The default value is 00.

-h_dfctl

Data Field Control (DF_CTL) is a one-byte field (Word 3, Bits 23-16) that specifies the presence of optional headers at the beginning of the Data_Field for Device_Data or Video_Data frames. The default value is 00.

-h_seqcnt

The sequence count (SEQ_CNT) is a two-byte field (Word 3, Bits 15-0) that indicates the sequential order of data frame transmission within a single Sequence or multiple consecutive Sequences for the same Exchange. The default value is 0000.

-h_origexchangeid

Indicates the Originator Exchange_ID. The Originator Exchange_ID is a two-byte field (Word 4, Bits 31-16) that identifies the Exchange_ID assigned by the Originator of the Exchange. The default value is 0000.

-h_responseexchangeid

Indicates the Responder Exchange_ID. The Responder Exchange_ID is a two-byte field (Word 4, Bits 15-0) assigned by the Responder that provides a unique, locally meaningful identifier at the Responder for an Exchange established by an Originator and identified by -h_origexchangeid. The default value is ffff.

-h_parameter

The Parameter field (Word 5, Bits 31-0) has different meanings when the frame type (-h_type) is different. e.g. For Link_Control frames, this parameter field is used to carry information specific to the individual Link_Control frame. The default value is 00000000.

-pl_id

Specifies the payload type for the fc frame. The possible values are custom, plogireq, plogiacc, plogirjt, flogireq, flogiacc, flogirjt, fdiscreq, fdiscacc, fdiscrjt, logoreq, logoacc, logorjt, fcpcmnd, efpreq, efpacc, diareq, diaacc, escreq, escacc, hloreq, lsureq, lsareq, ganxtacc, gpnidacc, gnnidacc, gcsidacc, gftidacc, gptidacc, gfpnidacc, gspnidacc, gffidacc, gidpnacc, gidnnacc, gsnnnnacc, gidftacc, gpnftacc, gnnftacc, rsnnnn, rffid, rspnid, rptid, rftid, rcsid, rnnid, rpnid, daid, mergereq, and mergereqacc. This argument is mandatory when -mode is set to create or modify.

-pl_reserved1

The default value is 000000.

-pl_nportname

The default value is 20:00:10:94:00:00:00:01.

-pl_nodename

The default value is10:00:10:94:00:00:00:01.

-pl_vendorversionlevel

The default value is 00000000000000000000000000000000.

-pl_commonsvcparams

This argument will represent a list of keyed values. The keys and their default values are listed below:

{
-fcphverhigh 00 -fcphverlow 20 -b2bcredit 0010
-commfeatures 8000 -rcvdatasize 0840
-totalconcurrentseq 0002 -reloffsetbyinfocategory 0000
-edtov 000007d0
}
-pl_class1svcparams

This argument will represent a list of keyed values. The keys and their default values are listed below:

{
-serviceoptions 0000  -ictl 0000 -rctl 0000
-recdatafieldsize 0840 -currentseq 01
-endtoendcredit 0000 -openseqperexchange 0001 -reserved1 00
-reserved2 0000
}
-pl_class2svcparams

Please refer to the -pl_class1svcparams argument.

-pl_class3svcparams

Please refer to the -pl_class1svcparams argument.

-pl_class4svcparams

Please refer to the -pl_class1svcparams argument.

-pl_reasoncode

The default value is 3.

-pl_reasonexplanation

The default value is 0F.

-pl_vendorunique

The default value is 0.

-pl_nportid

The default value is 000000.

-pl_portname

The default value is 20:00:10:94:00:00:00:01.

-pl_cdbtype

Specifies the cdb type for payload when the payload type is fcpcmnd. Possible values are cdb6, cdb10, r_6, r_10, r_buff, r_l10, r_capacity10, w_6, w_10, w_buff, w_l10, w_verify10, xd_r10, xd_w10, ssu, ms_6, ms_10, and r_lun. This argument is mandatory when -mode is set to create or modify.

-pl_fcplun

The default value is 000000000000000.

-pl_cmndrefnum

The default value is 0.

-pl_reserved

The default value is 0.

-pl_priority

The default value is 0.

-pl_taskattrib

The default value is 000.

-pl_taskmgmtflags

The default value is 00.

-pl_addifcpcdblen

The default value is 0.

-pl_rdata

The default value is 0.

-pl_wdata

The default value is 0.

-pl_fcpdi

The default value is 00000000.

-pl_fcpbirddi

The default value is 00000000.

-pl_cdb_miscinfo

The default value is 000.

-pl_cdb_miscinfo1

The default value is 000.

-pl_cdb_lba

The default value is 0.

-pl_cdb_len

The default value is 0.

-pl_cdb_control

The default value is 00.

-pl_cdb_service

The default value is 00000.

-pl_cdb_miscinfo2

The default value is 00000000.

-pl_cdb_reserved

The default value is 000.

-pl_cdb_transferlen

The default value is 0.

-pl_cdb_rdprotect

The default value is 000.

-pl_cdb_dpo

The default value is 0.

-pl_cdb_fua

The default value is 0.

-pl_cdb_fua_nv

The default value is 0.

-pl_cdb_obsolete

The default value is 0.

-pl_cdb_reserved2

The default value is 000.

-pl_cdb_groupnum

The default value is 0.

-pl_cdb_mode

The default value is 0.

-pl_cdb_bufferid

The default value is 0.

-pl_cdb_bufferoffset

The default value is 0.

-pl_cdb_allolen

The default value is 0.

-pl_cdb_pblock

The default value is 0.

-pl_cdb_corrct

The default value is 0.

-pl_cdb_reserved3

The default value is 0000000.

-pl_cdb_pmi

The default value is 0.

-pl_cdb_wrprotect

The default value is 000.

-pl_cdb_paramlistlen

The default value is 0.

-pl_cdb_wr_uncor

The default value is 0.

-pl_cdb_core_dis

The default value is 0.

-pl_cdb_xorpinfo

The default value is 0.

-pl_cdb_disablewr

The default value is 0.

-pl_cdb_immed

The default value is 0.

-pl_cdb_reserved1

The default value is 00.

-pl_cdb_pwrcondmod

The default value is 000.

-pl_cdb_pwrcond

The default value is 000.

-pl_cdb_noflush

The default value is 0.

-pl_cdb_loej

The default value is 0.

-pl_cdb_start

The default value is 0.

-pl_cdb_dbd

The default value is 0.

-pl_cdb_pc

The default value is 00.

-pl_cdb_pagecode

The default value is 0.

-pl_cdb_subpagecode

The default value is 00.

-pl_cdb_llbaa

The default value is 0.

-pl_cdb_selectreport

The default value is 00.

-pl_recordlen

The default value is 10.

-pl_reserved

The default value is 000000.

-pl_principalswitchpriority

The default value is ff.

-pl_pagelen

The default value is 10.

-pl_principalswitchname

The default value is 20:00:10:94:00:00:00:01.

-pl_domainid_lists

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-domainid 00 -reserved1 0000 -reserved2 00000000
-switchname 20:00:10:94:00:00:00:01
}
-pl_multiid_lists

This argument represents a list of keyed values, The keys and their default values are listed below:

{
-multicastgroupnumber 0 -reserved1 0000
-reserved2 000000000000000000000000
}
-pl_notmeaningful

The default value is 00000000.

-pl_originswitchname

The default value is 20:00:10:94:00:00:00:01.

-pl_respondswitchname

The default value is 20:00:10:94:00:00:00:01.

-pl_flags

The default value is 00000000.

-pl_vendorescid

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-type 13 -length 3 -reserved 0000 -vendorid 00000000
}
-pl_fspfheader

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-fspfversion 02 -obsoletedfcsw4 00 -authenticationtype 00
-reserved 00 -originatingdomainid 00000001
-authentication 000000000000000
}
-pl_lsr_lists

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-lsrtype 01 -reserved1 00 -lsrage 2 -reserved2 00000000
-linkstateid 00000001 -advdomainid 00000000
-lsincarnationnumber 0 -reserved 0000
}
-pl_lsh_lists

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-lsrtype 01 -reserved1 00 -lsrage 1 -reserved2 00000000
-linkstateid 00000001 -advdomainid 00000000
-lsincarnationnumber 0
}
-pl_hellointerval

The default value is 20.

-pl_deadinterval

The default value is 80.

-pl_rxdomainid

The default value is 00000001.

-pl_reserved2

The default value is 00.

-pl_origiportindex

The default value is 0.

-pl_porttype

The possible values are unidentified, nxport, nlport, nport, flport, fport, fnlport, eport and bport.

-pl_portid

The default value is 000000.

-pl_portname

The default value is 20:00:10:94:00:00:00:00.

-pl_nodename

The default value is 10:00:10:94:00:00:00:00.

-pl_symbolicportname

The default value is {}.

-pl_symbolicnodename

The default value is {}.

-pl_initprocessassociator

The default value is 00:00:00:00:00:00:00:00.

-pl_ipaddrnode

The default value is 00000000000000000000000000000000.

-pl_classofservice

The default value is 00000000.

-pl_fc4types
The default value is 0000010000000000000000000000000000
000000000000000000000000000000
-pl_ipaddrport

The default value is 00000000000000000000000000000000.

-pl_fabricportname

The default value is 20:00:10:94:00:00:00:00.

-pl_reserved3

The default value is 00.

-pl_hardaddr

The default value is 000000.

-pl_ctiu

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-revision 01 -inid 000000 -gstype fc -gssubtype 02
-options 00 -reserved 00 -commandrespondcode 0000
-maximumresidualsize 0000 -fragmentid 00 -reserved 00
}
-pl_portidentifier_list

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-control 00000000 -portidentifier 000000
}
-pl_portname_list

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-control 00000000 -portidentifier 000000 -reserved 00000000
-portname 20:00:10:94:00:00:00:00
}
-pl_nodename_list

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-control 00000000 -portidentifier 000000 -reserved 00000000
-nodename 10:00:10:94:00:00:00:00
}
-pl_basiczoning_list

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-activezonesetlength 0 -zonesetdatabaseobjectlength 0
}
-pl_enhancezoning_list

This argument represents a list of keyed values. The keys and their default values are listed below:

{
-reserved 0000
-enhancedzoningflags 00000000000000000000000000000000
-activezonesetlength 0 -zonesetdatabaseobjectlength 0
}
-pl_protocolver

The default value is 00.

-pl_obsolete1

The default value is 00.

-pl_obsolete2

The default value is 00.

-pl_obsolete3

The default value is 00.

Cisco-specific Arguments

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

-pl_command
-pl_payload

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

stream_id   The FCoE traffic handle

status      Success (1) or failure (0) of the operation.

procName    The function name

log         An error message (if the operation failed).

Description

The sth::fcoe_traffic_config configures FCoE to modify stream blocks set up by the sth::traffic_config function. Use the sth::fcoe_traffic_config function to create new FCoE frames, modify existing FCoE frames, or reset FCoE frames. (Use the -mode argument to specify the type of operation, and see the Notes for this section for more information.)

When you create a FCoE frame, the Spirent HLTAPI adds FCoE to the Ethernet Layer 2 frame to modify the stream block specified by the -handle argument. To configure traffic, use the arguments of the sth::fcoe_traffic_config function to specify values for fields of an FCoE datagram. When you start traffic during the test, Spirent HLTAPI generates frames containing protocol headers based on the argument values. The arguments provide information such as version, SOF, EOF, and other datagram values.

However, the availability of the arguments is determined by the -pl_id and other arguments. The information below explains when you can select the specific arguments.

The following arguments are available whatever -pl_id is set to:

-sof, -eof, -reserved1, -reserved2, -reserved3, -reserved4,
-reserved5, -version, -h_did, -h_sid, -h_type, -h_framecontrol,
-h_seqid, -h_dfctl, -h_seqcnt, -h_origexchangeid,
-h_responseexchangeid, -h_parameter.

Except those arguments, other arguments are also available when the corresponding payload type is enabled in -pl_id. The arguments are described below: :

When custom is indicated in -pl_id, you can specify -pl_payload.

When plogiacc, plogireq, flogireq, flogiacc, fdiscreq, or fdiscacc is indicated in -pl_id, the following arguments are available:

-pl_reserved1, -pl_nportname, -pl_nodename, -pl_vendorversionlevel,
-pl_commonsvcparams, -pl_class1svcparams, -pl_class2svcparams,
-pl_class3svcparams, -pl_class4svcparams

When plogirjt, flogirjt, fdiscrjt, or logorjt is indicated in -pl_id, the following arguments are available:

-pl_reserved1, -pl_reserved2, -pl_reasoncode, -pl_explanationcode,
-pl_vendorunique

When logoreq is indicated in -pl_id, the following arguments are available:

-pl_reserved1, -pl_portname, -pl_nportid

When you specify logoacc for the -pl_id argument, these arguments are available:

-pl_reserved1

When fcpcmnd is indicated in -pl_id, you can specify these arguments:

-pl_cdbtype, -pl_fcplun, -pl_cmndrefnum, -pl_reserved, -pl_priority,
-pl_taskattrib, -pl_taskmgmtflags, -pl_addifcpcdblen, -pl_rdata,
-pl_wdata, -pl_fcpdl, -pl_fcpbirddl

When you indicate fcpcmnd in the -pl_id argument and set one or more of the arguments above to the specific values, you can specify the corresponding arguments. The information below provides the arguments that must be set and the corresponding arguments that you can specify.

When you set -pl_cdbtype to cdb6, these arguments are available:

-pl_cdb_miscinfo, -pl_cdb_lba, -pl_cdb_len, -pl_cdb_control

When -pl_cdbtype is set to cdb10, you can specify these options:

-pl_cdb_miscinfo1, -pl_cdb_service, -pl_cdb_lba,
-pl_cdb_miscinfo2, -pl_cdb_len, -pl_cdb_control

When -pl_cdbtype is set to r_6, these arguments are available:

-pl_cdb_reserved, -pl_cdb_lba, -pl_cdb_transferlen,
-pl_cdb_control

When -pl_cdbtype is set to r_10, these arguments are also available:

-pl_cdb_rdprotect, -pl_cdb_dpo, -pl_cdb_fua, -pl_cdb_reserved1,
-pl_cdb_fua_nv, -pl_cdb_obsolete, -pl_cdb_lba, -pl_cdb_reserved2,
-pl_cdb_groupnum, -pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set to r_buff, these arguments are available:

-pl_cdb_mode, -pl_cdb_bufferid, -pl_cdb_bufferoffset,
-pl_cdb_allolen, -pl_cdb_control

When -pl_cdbtype is set to r_l10, these arguments are available:

-pl_cdb_reserved1, -pl_cdb_pblock, -pl_cdb_corrct,
-pl_cdb_obsolete, -pl_cdb_lba, -pl_cdb_reserved2,
-pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set to r_capacity10, these arguments are available:

-pl_cdb_reserved1, -pl_cdb_obsolete, -pl_cdb_lba,
-pl_cdb_reserved2, -pl_cdb_reserved3, -pl_cdb_pmi,
-pl_cdb_control

When -pl_cdbtype is set to w_6, these arguments are available:

-pl_cdb_reserved, -pl_cdb_lba, -pl_cdb_transferlen,
-pl_cdb_control

When -pl_cdbtype is set to w_10, these arguments are available:

-pl_cdb_wrprotect, -pl_cdb_dpo, -pl_cdb_fua, -pl_cdb_reserved1,
-pl_cdb_fua_nv, -pl_cdb_obsolete, -pl_cdb_lba, -pl_cdb_reserved2,
-pl_cdb_groupnum, -pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set to w_buff, you can specify these arguments:

-pl_cdb_mode, -pl_cdb_bufferid, -pl_cdb_bufferoffset,
-pl_cdb_paramListlen, -pl_cdb_control

When -pl_cdbtype is set to w_l10, these arguments are available:

-pl_cdb_core_dis, -pl_cdb_wr_uncor, -pl_cdb_pblock
-pl_cdb_reserved1, -pl_cdb_obsolete, -pl_cdb_lba,
-pl_cdb_reserved2, -pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set to w_verify10, these arguments are available:

-pl_cdb_wrprotect, -pl_cdb_dpo, -pl_cdb_reserved1,
-pl_cdb_bytchk, -pl_cdb_obsolete, -pl_cdb_lba,
-pl_cdb_reserved2, -pl_cdb_groupnum, -pl_cdb_transferlen,
-pl_cdb_control

When pl_cdbtype is set toxd_r10, these arguments are also available:

-pl_cdb_reserved1 xorpinfo, -pl_cdb_lba, -pl_cdb_reserved2,
-pl_cdb_groupnum, -pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set toxd_w10, these arguments are available:

-pl_cdb_wrprotect, -pl_cdb_dpo, -pl_cdb_fua,
-pl_cdb_disablewrite, -pl_cdb_fua_nv, -pl_cdb_reserved1,
-pl_cdb_lba, -pl_cdb_reserved2, -pl_cdb_groupnum,
-pl_cdb_transferlen, -pl_cdb_control

When -pl_cdbtype is set tossu, these arguments are available:

-pl_cdb_reserved immed, -pl_cdb_reserved1, -pl_cdb_reserved2,
-pl_cdb_pwrcondmod, -pl_cdb_pwrcond, -pl_cdb_reserved3 noflush,
-pl_cdb_loej, -pl_cdb_start, -pl_cdb_control

When -pl_cdbtype is set toms_6, these arguments are available:

-pl_cdb_reserved1, -pl_cdb_dbd, -pl_cdb_reserved2, -pl_cdb_pc,
-pl_cdb_pagecode, -pl_cdb_subpagecode, -pl_cdb_allolen,
-pl_cdb_control

When pl_cdbtype is set toms_10, these arguments are available:

-pl_cdb_reserved1, -pl_cdb_llbaa, -pl_cdb_dbd,
-pl_cdb_reserved2, -pl_cdb_pc, -pl_cdb_pagecode,
-pl_cdb_subpagecode, -pl_cdb_reserved3, -pl_cdb_allolen,
-pl_cdb_control

When -pl_cdbtype is set tor_lun, these arguments are available:

-pl_cdb_reserved1, -pl_cdb_selectreport, -pl_cdb_reserved2,
-pl_cdb_allolen, -pl_cdb_reserved3, -pl_cdb_control

When efpreq is indicated in -pl_id, these arguments are available:

-pl_recordlen, -pl_principalswitchpriority, -pl_principalswitchname,
-pl_reserved, -pl_domainid_lists, -pl_multiid_lists

When efpacc is indicated in the -pl_id argument, these arguments are available:

-pl_pagelen, -pl_principalswitchpriority, -pl_principalswitchname,
-pl_reserved, -pl_domainid_lists, -pl_multiid_lists

When iareq is indicated in the -pl_id argument, these arguments are available:

-pl_notmeaningful, -pl_originswitchname

When diaacc is indicated in -pl_id, these arguments are available:

-pl_notmeaningful, -pl_respondswitchname

When escreq is indicated in -pl_id, the following arguments are available:

-pl_flags, -pl_vendorescid
When escacc is indicated in -pl_id, these arguments are available::
-pl_reserved, -pl_vendorescid

When hloreq is indicated in -pl_id, these arguments are available:

-pl_reserved1, -pl_hellointerval, -pl_deadinterval, -pl_rxdomainid,
-pl_reserved2, -pl_origiportindex, -pl_fspfheader

When lsureq is indicated in -pl_id, these arguments are available:

-pl_reserved 000000, -pl_flags, -pl_fspfheader, -pl_lsr_lists

When lsareq is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_flags, -pl_fspfheader, -pl_lsh_lists

When ganxtacc is indicated in -pl_id, these arguments are available:

-pl_porttype, -pl_portid, -pl_portname, -pl_nodename,
-pl_symbolicportname, -pl_symbolicnodename, -pl_initprocessassociator,
-pl_ipaddrnode, -pl_classofservice, -pl_fc4types, -pl_ipaddrport,
-pl_fabricportname, -pl_reserved3, -pl_hardaddr, -pl_ctiu

When gpnidacc is indicated in -pl_id, these arguments are available:

-pl_portname, -pl_ctiu

When gnnidacc is indicated in -pl_id these arguments are available:

-pl_nodename, -pl_ctiu

When gcsidacc is indicated in -pl_id, these arguments are available:

-pl_classofservice, -pl_ctiu

When gftidacc is indicated in -pl_id, these arguments are available:

-pl_fc4types, -pl_ctiu

When gptidacc is indicated in -pl_id, these arguments are available:

-pl_porttype, -pl_ctiu

When gfpnidacc is indicated in -pl_id, these arguments are available:

-pl_fabricportname, -pl_ctiu

When gspnidacc is indicated in -pl_id, these arguments are available:

-pl_symbolicportname, -pl_ctiu

When gffidacc is indicated in -pl_id, these arguments are available:

-pl_fc4features, -pl_ctiu

When gidpnacc is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_ctiu

When gidnnacc is indicated in -pl_id, these arguments are available:

-pl_portidentifier_list, -pl_ctiu

When gsnnnnacc is indicated in -pl_id, these arguments are available:

-pl_symbolicnodename, -pl_ctiu

When gidftacc is indicated in -pl_id, these arguments are available:

-pl_portidentifier_list, -pl_ctiu

When gpnftacc is indicated in -pl_id, these arguments are available:

-pl_portname_list, -pl_ctiu

When gnnftacc is indicated in -pl_id, these arguments are available:

-pl_nodename_list, -pl_ctiu

When rsnnnn is indicated in -pl_id, these arguments are available:

-pl_symbolicnodename, -pl_nodename, -pl_ctiu

When rffidis indicated in -pl_id, these arguments are available:

-pl_reserved1, -pl_reserved2, -pl_fc4featurebits, -pl_typecode,
-pl_ctiu

When rspnid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_symbolicportname, -pl_ctiu

When rptid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_porttype, -pl_ctiu

When rftid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_fc4types, -pl_ctiu

When rcsid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_classofservice, -pl_ctiu

When rnnid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_nodename, -pl_ctiu

When rpnid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_portname, -pl_ctiu

When daid is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_portid, -pl_ctiu

When mergereq is indicated in -pl_id, these arguments are available:

-pl_protocolver basiczoning_list, -pl_enhancezoning_list

When mergereqacc is indicated in -pl_id, these arguments are available:

-pl_reserved, -pl_obsolete1, -pl_obsolete2, -pl_obsolete3

Examples

#### HLTAPI for Tcl ####

You must create Layer 2 traffic with the sth::traffic_config command first. The following example creates Layer 2 traffic:

set returnedString [sth::traffic_config\
                      -mode create\
                      -port_handle $port1\
                      -l2_encap ethernet_ii\
                      -transmit_mode continuous\
                      -rate_pps 1000\
                      ]
 puts "l2_traffic\n$returnedString"
 keylget returnedString stream_id sb

The output for the example above:

{stream_id streamblock1} {status 1}

To create the FCoE frame in the Ethernet Layer 2 frame (In this case, the FCoE frame will be in the payload of the Ethernet Layer 2 frame). Spirent HLTAPI generator will generate FCoE traffic based on the following arguments:

set fcoe_header "-sof sofn3 -eof eofn -reserved1 0
                 -reserved2 0 -reserved3 0 \
                 -reserved4 0 -reserved5 0 -version 0"

set fc_header     "-h_rctl 22 -h_did 0 -h_csctl 0 -h_sid 0 -h_type 0
                  -h_framecontrol 0 -h_seqid 0 \
                  -h_dfctl 0 -h_seqcnt 0 -h_origexchangeid 0
                  -h_responseexchangeid ffff -h_parameter f"

set fcoe_traffic_config  "sth::fcoe_traffic_config \
                    -handle $sb \
                    -mode create \
                    $fcoe_header    \
                    $fc_header       \
                    -pl_id fcpcmnd    \
                    -pl_fcplun 0 \
                    -pl_cmndrefnum 0 \
                    -pl_reserved 0 \
                    -pl_priority 0 \
                    -pl_taskattrib 0 \
                    -pl_taskmgmtflags 0\
                    -pl_cdbtype cdb6 \
                    -pl_cdb {-miscInfo 0 -lba 0 -length 0 -control 0} \

set returnedString [eval $fcoe_traffic_config]
puts "Create fcpcmnd (cdb6)\n$returnedString"

The output for the example above:

{status 1} {procName sth::fcoe_traffic_config} {streamid streamblock1}

The following example modifies the FCoE:

set pl_commonsvcparams "-fcphverhigh 0 -fcphverlow 20 -b2bcredit 10\
                 -commfeatures 8000 -rcvdatasize 840 \
                 -totalconcurrentseq  2 -reloffsetbyinfocategory 0\
                 -edtov 7d0"

set pl_classsvcparams     "-serviceoptions 0 -ictl 0 -rctl 0
                    -recdatafieldsize 840 -currentseq 01 -endtoendcredit 0 \
                    -openseqperexchange 1 -reserved1 0 -reserved2 0 "

set fcoe_traffic_config  "sth::fcoe_traffic_config \
                      -mode modify\
                      -handle $sb\
                      -pl_id plogireq \
                      -pl_reserved1 0 \
                      -pl_nportname 20:00:10:94:00:00:00:01 \
                      -pl_nodename 10:00:10:94:00:00:00:01 \
                      -pl_vendorversionlevel 0 \
                      -pl_commonsvcparams {$pl_commonsvcparams}\
                      -pl_class1svcparams {$pl_classsvcparams}
                      "

 set returnedString [eval $fcoe_traffic_config]
 puts "Change to plogireq by modify\n$returnedString"

The output for the example above:

{status 1} {procName sth::fcoe_traffic_config} {streamid streamblock1}

The example below deletes FCoE frames from the payload of Ethernet Layer 2 frames:

set returnedString  [sth::fcoe_traffic_config -mode reset -handle $sb]
puts "Delete FCoE by reset\n$returnedString"

The output for the example above:

{status 1} {procName sth::fcoe_traffic_config} {streamid streamblock1}

#### HLTAPI for Python ####

The following example creates Layer 2 traffic first:

   streamblock_ret1 = sth.traffic_config (
               mode                = 'create',
               port_handle         = port_handle[0],
               l2_encap            = 'ethernet_ii',
               mac_src             = '00:10:94:00:00:01',
               ether_type          = '88B5',
               mac_dst             = '00:10:94:00:00:02',
               enable_control_plane= '0',
               l3_length           = '2030',
               name                = 'StreamBlock_1-2',
               fill_type           = 'constant',
               fcs_error           = '0',
               fill_value          = '0',
               traffic_state       = '1',
               high_speed_result_analysis= '1',
               length_mode         = 'fixed',
               disable_signature   = '0',
               enable_stream_only_gen= '1',
               pkts_per_burst      = '1',
               inter_stream_gap_unit= 'bytes',
               burst_loop_count    = '30',
               transmit_mode       = 'continuous',
               inter_stream_gap    = '12',
               rate_percent        = '10');

Sample Output::

   {'stream_id': 'streamblock1'} {'status': '1'}

To create the FCoE frame in the Ethernet Layer 2 frame (In this case, the FCoE frame will be in the payload of the Ethernet Layer 2 frame, with payload type efpreq), Spirent HLTAPI generator will generate FCoE traffic based on the following arguments:

stream_fcoe_ret = sth.fcoe_traffic_config (
                handle              = stream_id,
                mode                = 'create',
                reserved1           = '0',
                eof                 = 'eofn',
                reserved2           = '00000000',
                reserved3           = '00000000',
                reserved4           = '000000',
                reserved5           = '000000',
                sof                 = 'soff',
                version             = '0',
                h_parameter         = '00000000',
                h_dfctl             = '00',
                h_responseexchangeid= 'FFFF',
                h_type              = '01',
                h_rctl              = '02',
                h_framecontrol      = '290000',
                h_seqid             = '00',
                h_sid               = 'fffffd',
                h_did               = 'fffffd',
                h_csctl             = '00',
                h_origexchangeid    = '0000',
                h_seqcnt            = '0000',
                pl_principalswitchname= '20:00:10:94:00:00:00:01',
                pl_principalswitchpriority= 'FF',
                pl_recordlen        = '10',
                pl_id               = 'efpreq');

Sample Output:

{'status': '1', 'procName': 'sth::fcoe_traffic_config',
'streamid': 'streamblock1'}

#### HLTAPI for Perl ####

The following example creates Layer 2 traffic first:

my %streamblock_ret1 = sth::traffic_config (
                mode                => 'create',
                port_handle         => "$hport[1]",
                l2_encap            => 'ethernet_ii',
                mac_src             => '00:10:94:00:00:01',
                ether_type          => '88B5',
                mac_dst             => '00:10:94:00:00:02',
                enable_control_plane=> '0',
                l3_length           => '2030',
                name                => 'StreamBlock_1-2',
                fill_type           => 'constant',
                fcs_error           => '0',
                fill_value          => '0',
                traffic_state       => '1',
                high_speed_result_analysis=> '1',
                length_mode         => 'fixed',
                disable_signature   => '0',
                enable_stream_only_gen=> '1',
                pkts_per_burst      => '1',
                inter_stream_gap_unit=> 'bytes',
                burst_loop_count    => '30',
                transmit_mode       => 'continuous',
                inter_stream_gap    => '12',
                rate_percent        => '10');

Sample Output:

$VAR1 = 'status';
$VAR2 = '1';
$VAR3 = 'stream_id';
$VAR4 = 'streamblock1';

To create the FCoE frame in the Ethernet Layer 2 frame (In this case, the FCoE frame will be in the payload of the Ethernet Layer 2 frame, with payload type efpreq), Spirent HLTAPI generator will generate FCoE traffic based on the following arguments:

my %stream_fcoe_ret = sth::fcoe_traffic_config (
                handle              => "$stream_id",
                mode                => 'create',
                reserved1           => '0',
                eof                 => 'eofn',
                reserved2           => '00000000',
                reserved3           => '00000000',
                reserved4           => '000000',
                reserved5           => '000000',
                sof                 => 'soff',
                version             => '0',
                h_parameter         => '00000000',
                h_dfctl             => '00',
                h_responseexchangeid=> 'FFFF',
                h_type              => '01',
                h_rctl              => '02',
                h_framecontrol      => '290000',
                h_seqid             => '00',
                h_sid               => 'fffffd',
                h_did               => 'fffffd',
                h_csctl             => '00',
                h_origexchangeid    => '0000',
                h_seqcnt            => '0000',
                pl_principalswitchname=> '20:00:10:94:00:00:00:01',
                pl_principalswitchpriority=> 'FF',
                pl_recordlen        => '10',
                pl_id               => 'efpreq');

Sample Output:

$VAR1 = 'procName';
$VAR2 = 'sth::fcoe_traffic_config';
$VAR3 = 'status';
$VAR4 = '1';
$VAR5 = 'streamid';
$VAR6 = 'streamblock1';

End of Procedure Header