cloudFPGA (cF) API  1.0
The documentation of the source code of cloudFPGA (cF)

Network Transport Stack (NTS). This component implements the TCP/IP Network and Transport Stack used by the cloudFPGA platform. The documentation of NTS is available at https://pages.github.ibm.com/cloudFPGA/Doc/pages/cfdk.html#network-transport-stack-nts. More...

Collaboration diagram for NTS:

Modules

 ARP
 Address Resolution Protocol (ARS) server of the Network Transport Stack (NTS).
 
 ICMP
 Internet Control Message Protocol server (ICMP) of the Network Transport Stack (NTS).
 
 IPRX
 IP Receiver packet handler (IPRX) of the Network Transport Stack (NTS).
 
 IPTX
 IP Transmitter packet handler (IPTX) of the Network Transport Stack (NTS).
 
 RLB
 Ready Logic Barrier (RLB) for the Network Transport Stack (NTS).
 
 TOE
 TCP Offload Engine (TOE) of the Network Transport Stack (NTS).
 
 TOECAM
 Content-Addressable Memory (CAM) for the TCP Offload Engine (TOE) of the Network Transport Stack (NTS).
 
 UOE
 UDP Offload Engine (UOE) of the Network Transport Stack (NTS).
 
 SimNts
 Support and utilities for the simulation of the Network Transport Stack (NTS).
 

Files

file  arp.hpp
 : Address Resolution Protocol (ARP) Server
 
file  AxisArp.hpp
 : A class to access an ARP data chunk transmitted over an AXI4-Stream interface.
 
file  AxisEth.hpp
 : A class to access an ETHernet data chunk transmitted over an AXI4-Stream interface.
 
file  AxisIcmp.hpp
 : A class to access ICMP header fields within data chunks transmitted over an AXI4-Stream interface.
 
file  AxisIp4.hpp
 : A class to access an IPv4 data chunk transmitted over an AXI4-Stream interface.
 
file  AxisPsd4.hpp
 : A class to access the fields of a TCP/IPv4 or UDP/IPv4 pseudo packet when transmitted over an AXI4-Stream interface.
 
file  AxisRaw.hpp
 : A generic class used by the Network-Transport-Stack (NTS) to to transfer a chunk of data over an AXI4-Stream interface.
 
file  AxisTcp.hpp
 : A class to access TCP header fields within data chunks transmitted over an AXI4-Stream interface.
 
file  AxisUdp.hpp
 : A class to access UDP header fields within data chunks transmitted over an AXI4-Stream interface.
 
file  icmp.cpp
 : Internet Control Message Protocol (ICMP) Server
 
file  icmp.hpp
 : Internet Control Message Protocol (ICMP) Server
 
file  iprx.cpp
 : IP Receiver packet handler (IPRX).
 
file  iprx.hpp
 : IP Receiver packet handler (IPRX).
 
file  iptx.cpp
 : IP Transmitter packet handler (IPTX).
 
file  iptx.hpp
 : IP Transmitter packet handler (IPTX)
 
file  nts.hpp
 : Definition of the Network Transport Stack (NTS) component as if it was an HLS IP core.
 
file  nts_config.hpp
 : Configuration parameters for the Network Transport Stack (NTS) component and sub-components.
 
file  nts_types.hpp
 : Definition of the types used by the Network Transport Stack (NTS) component of the cloudFPGA shell.
 
file  nts_utils.cpp
 : Utilities and helpers for the Network-Transport-Stack (NTS) components.
 
file  nts_utils.hpp
 : Utilities and helpers for the Network-Transport-Stack (NTS) components.
 
file  rlb.cpp
 : Ready Logic Barrier (RLB)
 
file  rlb.hpp
 : Defines and prototypes related to the Ready Logic Barrier.
 
file  ack_delay.cpp
 : ACK Delayer (AKd) of the TCP Offload Engine (TOE)
 
file  ack_delay.hpp
 : ACK Delayer (AKd) of the TCP Offload Engine (TOE)
 
file  event_engine.cpp
 : Event Engine (EVe) of the TCP Offload Engine (TOE)
 
file  event_engine.hpp
 : Event Engine (EVe) of the TCP Offload Engine (TOE)
 
file  port_table.cpp
 : Port Table (PRt) of the TCP Offload Engine (TOE)
 
file  port_table.hpp
 : Port Table (PRt) of the TCP Offload Engine (TOE)
 
file  rx_app_interface.cpp
 : Rx Application Interface (RAi) of the TCP Offload Engine (TOE)
 
file  rx_app_interface.hpp
 : Rx Application Interface (RAi) of the TCP Offload Engine (TOE)
 
file  rx_engine.hpp
 : Rx Engine (RXe) of the TCP Offload Engine (TOE)
 
file  rx_engine.hpp
 : Rx Engine (RXe) of the TCP Offload Engine (TOE)
 
file  rx_sar_table.cpp
 : Rx Segmentation And Re-assembly Table (RSt).
 
file  rx_sar_table.hpp
 : Rx Segmentation And Re-assembly Table (RSt).
 
file  state_table.cpp
 : State Table (STt)
 
file  state_table.hpp
 : State Table (STt) for the TCP Offload Engine (TOE)
 
file  timers.cpp
 : Timers (TIm) for the TCP Offload Engine (TOE)
 
file  timers.hpp
 : Timers (TIm) for the TCP Offload Engine (TOE)
 
file  toe.cpp
 : TCP Offload Engine (TOE)
 
file  toe.hpp
 : TCP Offload Engine (TOE)
 
file  toe_utils.cpp
 : Utilities and helpers for the TCP Offload Engine (TOE)
 
file  toe_utils.hpp
 : Utilities and helpers for the TCP Offload Engine (TOE)
 
file  tx_engine.cpp
 : Tx Engine (TXe) of the TCP Offload Engine (TOE).
 
file  tx_engine.hpp
 : Tx Engine (TXe) of the TCP Offload Engine (TOE)
 
file  tx_sar_table.cpp
 : Tx Segmentation and re-assembly Table (TSt)
 
file  tx_sar_table.hpp
 : Tx Segmentation and re-assembly Table (TSt)
 
file  dummy_memory.cpp
 : A class to emulate the TCP buffer memory.
 
file  dummy_memory.hpp
 : A class to emulate the TCP buffer memory.
 
file  toecam.cpp
 : Content-Addressable Memory (CAM) for TCP Offload Engine (TOE)
 
file  toecam.hpp
 : Content-Addressable Memory (CAM) for TCP Offload Engine (TOE)
 
file  uoe.cpp
 : UDP Offload Engine (UOE)
 
file  uoe.hpp
 : UDP Offload Engine (UOE)
 

Classes

class  AxisArp
 
class  AxisEth
 
class  AxisIcmp
 
class  AxisIp4
 
class  AxisRaw
 
class  AxisTcp
 
class  AxisUdp
 
class  TcpAppNotif
 
class  TcpAppRdReq
 
class  TcpAppSndReq
 
class  TcpAppSndRep
 
class  TcpAppOpnRep
 
class  UdpAppMeta
 
class  SockAddr
 
class  LE_SockAddr
 
struct  fourTuple
 
class  SocketPair
 
class  LE_SocketPair
 
class  ArpBindPair
 
class  ArpLkpReply
 
class  FourTuple
 
class  CamSessionLookupRequest
 
class  CamSessionLookupReply
 
class  CamSessionUpdateRequest
 
class  CamSessionUpdateReply
 
struct  log2Ceil< n >
 

Macros

#define ICMP_HEADER_LEN   8
 
#define IP4_HEADER_LEN   20
 
#define AXIS_RAW_WIDTH_AT_10GE   64
 
#define ARW   AXIS_RAW_WIDTH_AT_10GE
 
#define TLAST   1
 
#define TCP_HEADER_LEN   20
 
#define TCP_OPT_KIND_EOL   0
 
#define TCP_OPT_KIND_NOP   1
 
#define TCP_OPT_KIND_MSS   2
 
#define TCP_OPT_KIND_WSS   3
 
#define TCP_OPT_KIND_SACK   4
 
#define UDP_HEADER_LEN   8
 
#define TOE_MEMORY_SIZE   0x80000000
 
#define TOE_MEMORY_BASE   0x00000000
 
#define NTS_OK   1
 
#define NTS_KO   0
 
#define OK   NTS_OK
 
#define KO   NTS_KO
 
#define CMD_INIT   1
 
#define CMD_DROP   1
 
#define CMD_KEEP   0
 
#define CMD_ENABLE   1
 
#define CMD_DISABLE   0
 
#define QUERY_RD   0
 
#define QUERY_WR   1
 
#define QUERY_INIT   1
 
#define QUERY_FAST_RETRANSMIT   true
 
#define FLAG_OFF   0
 
#define FLAG_ON   1
 
#define FLAG_OOO   true
 
#define FLAG_INO   false
 
#define LKP_HIT   true
 
#define LKP_NO_HIT   false
 
#define STS_OK   1
 
#define STS_KO   0
 
#define STS_OPENED   1
 
#define STS_CLOSED   0
 
#define STS_ERROR   1
 
#define STS_NO_ERR   0
 
#define ACK_ON   1
 
#define NO_ACK   0
 
#define ETH_BROADCAST_ADDR   0xFFFFFFFFFFFF
 
#define ETH_ETHERTYPE_IP4   0x0800
 
#define ETH_ETHERTYPE_ARP   0x0806
 
#define ARP_HTYPE_ETHERNET   0x0001
 
#define ARP_PTYPE_IPV4   0x0800
 
#define ARP_HLEN_ETHERNET   6
 
#define ARP_PLEN_IPV4   4
 
#define ARP_OPER_REQUEST   0x0001
 
#define ARP_OPER_REPLY   0x0002
 
#define IP4_BROADCAST_ADDR   0xFFFFFFFF
 
#define IP4_PROT_ICMP   0x01
 
#define IP4_PROT_TCP   0x06
 
#define IP4_PROT_UDP   0x11
 
#define FROM_RXe   0
 
#define FROM_TAi   1
 
#define THIS_NAME   "NtsUtils"
 
#define __SYNTH_LOG2CEIL__
 
#define concat2(firstCharConst, secondCharConst)   firstCharConst secondCharConst
 
#define concat3(firstCharConst, secondCharConst, thirdCharConst)   firstCharConst secondCharConst thirdCharConst
 
#define printInfo(callerName, format, ...)    do { gTraceEvent = true; printf("(@%5.5d) [%-20s] INFO - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)
 A macro to print an information message. More...
 
#define printWarn(callerName, format, ...)    do { gTraceEvent = true; printf("(@%5.5d) [%-20s] WARNING - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)
 A macro to print a warning message. More...
 
#define printError(callerName, format, ...)    do { gTraceEvent = true; printf("(@%5.5d) [%-20s] ERROR - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)
 A macro to print an error message. More...
 
#define printFatal(callerName, format, ...)    do { gTraceEvent = true; gFatalError = true; printf("\n(@%5.5d) [%-20s] FATAL - " format, gSimCycCnt, callerName, ##__VA_ARGS__); printf("\n\n"); exit(99); } while (0)
 A macro to print a fatal error message and exit. More...
 
#define assessSize(callerName, stream, streamName, depth)    do { if (stream.size() >= depth) printFatal(callerName, "Stream \'%s\' is full: Cannot write.", streamName); } while (0)
 A macro that checks if a stream is full. More...
 

Typedefs

typedef ap_uint< 16 > LE_ArpHwType
 
typedef ap_uint< 16 > LE_ArpProtType
 
typedef ap_uint< 8 > LE_ArpHwLen
 
typedef ap_uint< 8 > LE_ArpProtLen
 
typedef ap_uint< 16 > LE_ArpOper
 
typedef ap_uint< 48 > LE_ArpSendHwAddr
 
typedef ap_uint< 32 > LE_ArpSendProtAddr
 
typedef ap_uint< 48 > LE_ArpTargHwAddr
 
typedef ap_uint< 32 > LE_ArpTargProtAddr
 
typedef ap_uint< 16 > LE_ArpShaHi
 
typedef ap_uint< 32 > LE_ArpShaLo
 
typedef ap_uint< 16 > LE_ArpTpaHi
 
typedef ap_uint< 16 > LE_ArpTpaLo
 
typedef ap_uint< 16 > ArpHwType
 
typedef ap_uint< 16 > ArpProtType
 
typedef ap_uint< 8 > ArpHwLen
 
typedef ap_uint< 8 > ArpProtLen
 
typedef ap_uint< 16 > ArpOper
 
typedef ap_uint< 48 > ArpSendHwAddr
 
typedef ap_uint< 32 > ArpSendProtAddr
 
typedef ap_uint< 48 > ArpTargHwAddr
 
typedef ap_uint< 32 > ArpTargProtAddr
 
typedef ap_uint< 16 > ArpShaHi
 
typedef ap_uint< 32 > ArpShaLo
 
typedef ap_uint< 16 > ArpTpaHi
 
typedef ap_uint< 16 > ArpTpaLo
 
typedef ap_uint< 48 > LE_EthSrcAddr
 
typedef ap_uint< 48 > LE_EthDstAddr
 
typedef ap_uint< 48 > LE_EthAddress
 
typedef ap_uint< 48 > LE_EthAddr
 
typedef ap_uint< 16 > LE_EthTypeLen
 
typedef ap_uint< 16 > LE_EtherType
 
typedef ap_uint< 16 > LE_EtherLen
 
typedef ap_uint< 48 > EthSrcAddr
 
typedef ap_uint< 48 > EthDstAddr
 
typedef ap_uint< 48 > EthAddress
 
typedef ap_uint< 48 > EthAddr
 
typedef ap_uint< 16 > EthTypeLen
 
typedef ap_uint< 16 > EtherType
 
typedef ap_uint< 16 > EtherLen
 
typedef ap_uint< 16 > LE_Ip4DstAddrHi
 
typedef ap_uint< 16 > LE_Ip4DstAddrLo
 
typedef ap_uint< 16 > Ip4DstAddrHi
 
typedef ap_uint< 16 > Ip4DstAddrLo
 
typedef ap_uint< 8 > LE_IcmpType
 
typedef ap_uint< 8 > LE_IcmpCode
 
typedef ap_uint< 16 > LE_IcmpCsum
 
typedef ap_uint< 8 > IcmpType
 
typedef ap_uint< 8 > IcmpCode
 
typedef ap_uint< 16 > IcmpCsum
 
typedef ap_uint< 16 > IcmpIdent
 
typedef ap_uint< 16 > IcmpSeqNum
 
typedef ap_uint< 4 > LE_Ip4Version
 
typedef ap_uint< 4 > LE_Ip4HdrLen
 
typedef ap_uint< 8 > LE_Ip4ToS
 
typedef ap_uint< 16 > LE_Ip4TotalLen
 
typedef ap_uint< 8 > LE_Ip4TtL
 
typedef ap_uint< 8 > LE_Ip4Prot
 
typedef ap_uint< 16 > LE_Ip4HdrCsum
 
typedef ap_uint< 32 > LE_Ip4SrcAddr
 
typedef ap_uint< 32 > LE_Ip4DstAddr
 
typedef ap_uint< 32 > LE_Ip4Address
 
typedef ap_uint< 32 > LE_Ip4Addr
 
typedef ap_uint< 64 > LE_IpData
 
typedef ap_uint< 4 > Ip4Version
 
typedef ap_uint< 4 > Ip4HdrLen
 
typedef ap_uint< 8 > Ip4ToS
 
typedef ap_uint< 16 > Ip4TotalLen
 
typedef ap_uint< 16 > Ip4Ident
 
typedef ap_uint< 13 > Ip4FragOff
 
typedef ap_uint< 3 > Ip4Flags
 
typedef ap_uint< 8 > Ip4TtL
 
typedef ap_uint< 8 > Ip4Prot
 
typedef ap_uint< 16 > Ip4HdrCsum
 
typedef ap_uint< 32 > Ip4SrcAddr
 
typedef ap_uint< 32 > Ip4DstAddr
 
typedef ap_uint< 32 > Ip4Address
 
typedef ap_uint< 32 > Ip4Addr
 
typedef ap_uint< 64 > Ip4Data
 
typedef ap_uint< 16 > Ip4PktLen
 
typedef ap_uint< 16 > Ip4DatLen
 
typedef ap_uint< 64 > LE_tData
 
typedef ap_uint< 64/2 > LE_tDataHalf
 
typedef ap_uint< 64/8 > LE_tKeep
 
typedef ap_uint< 1 > LE_tLast
 
typedef ap_uint< 64 > tData
 
typedef ap_uint< 64/2 > tDataHalf
 
typedef ap_uint< 64/8 > tKeep
 
typedef ap_uint< 64/16 > tKeepHalf
 
typedef ap_uint< 1 > tLast
 
typedef ap_uint< 16 > LE_TcpSrcPort
 
typedef ap_uint< 16 > LE_TcpDstPort
 
typedef ap_uint< 16 > LE_TcpPort
 
typedef ap_uint< 32 > LE_TcpSeqNum
 
typedef ap_uint< 32 > LE_TcpAckNum
 
typedef ap_uint< 3 > LE_TcpResBits
 
typedef ap_uint< 4 > LE_TcpDataOff
 
typedef ap_uint< 6 > LE_TcpCtrlBits
 
typedef ap_uint< 16 > LE_TcpWindow
 
typedef ap_uint< 16 > LE_TcpChecksum
 
typedef ap_uint< 16 > LE_TcpUrgPtr
 
typedef ap_uint< 64 > LE_TcpData
 
typedef ap_uint< 16 > TcpSrcPort
 
typedef ap_uint< 16 > TcpDstPort
 
typedef ap_uint< 16 > TcpPort
 
typedef ap_uint< 32 > TcpSeqNum
 
typedef ap_uint< 32 > TcpAckNum
 
typedef ap_uint< 3 > TcpResBits
 
typedef ap_uint< 4 > TcpDataOff
 
typedef ap_uint< 6 > TcpCtrlBits
 
typedef ap_uint< 1 > TcpCtrlBit
 
typedef ap_uint< 16 > TcpWindow
 
typedef ap_uint< 16 > TcpChecksum
 
typedef ap_uint< 16 > TcpCsum
 
typedef ap_uint< 16 > TcpUrgPtr
 
typedef ap_uint< 8 > TcpOptKind
 
typedef ap_uint< 8 > TcpOptLen
 
typedef ap_uint< 16 > TcpOptMss
 
typedef ap_uint< 16 > TcpSegLen
 
typedef ap_uint< 8 > TcpHdrLen
 
typedef ap_uint< 16 > TcpDatLen
 
typedef ap_uint< 16 > LE_UdpSrcPort
 
typedef ap_uint< 16 > LE_UdpDstPort
 
typedef ap_uint< 16 > LE_UdpPort
 
typedef ap_uint< 16 > LE_UdpLen
 
typedef ap_uint< 16 > LE_UdpCsum
 
typedef LE_tData LE_UdpData
 
typedef ap_uint< 16 > UdpSrcPort
 
typedef ap_uint< 16 > UdpDstPort
 
typedef ap_uint< 16 > UdpPort
 
typedef ap_uint< 16 > UdpLen
 
typedef ap_uint< 16 > UdpCsum
 
typedef tData UdpData
 
typedef tDataHalf UdpDataHi
 
typedef tDataHalf UdpDataLo
 
typedef ap_uint< 16 > UdpDgmLen
 
typedef ap_uint< 16 > UdpDatLen
 
typedef AxisRaw AppData
 
typedef AxisRaw AxisApp
 
typedef AxisRaw TcpAppData
 
typedef TcpSessId TcpAppMeta
 
typedef TcpDatLen TcpAppDLen
 
typedef SockAddr TcpAppOpnReq
 
typedef SessionId TcpAppClsReq
 
typedef TcpPort TcpAppLsnReq
 
typedef RepBool TcpAppLsnRep
 
typedef AxisRaw UdpAppData
 
typedef UdpDatLen UdpAppDLen
 
typedef Ly4Port UdpAppLsnReq
 
typedef StsBool UdpAppLsnRep
 
typedef Ly4Port UdpAppClsReq
 
typedef StsBool UdpAppClsRep
 
typedef ap_uint< 1 > AckBit
 
typedef ap_uint< 1 > CmdBit
 
typedef ap_uint< 1 > ErrBit
 
typedef ap_uint< 1 > FlagBit
 
typedef ap_uint< 1 > RdWrBit
 
typedef ap_uint< 1 > ReqBit
 
typedef ap_uint< 1 > RepBit
 
typedef ap_uint< 1 > RspBit
 
typedef ap_uint< 1 > SigBit
 
typedef ap_uint< 1 > StsBit
 
typedef ap_uint< 1 > ValBit
 
typedef bool AckBool
 
typedef bool CmdBool
 
typedef bool FlagBool
 
typedef bool HitBool
 
typedef bool ReqBool
 
typedef bool RepBool
 
typedef bool RspBool
 
typedef bool SigBool
 
typedef bool StsBool
 
typedef bool ValBool
 
typedef ap_uint< 16 > SessionId
 
typedef ap_uint< 16 > TcpSessId
 
typedef ap_uint< 16 > LE_Ly4Port
 
typedef ap_uint< 16 > LE_Ly4Len
 
typedef ap_uint< 16 > Ly4Port
 
typedef ap_uint< 16 > Ly4Len
 
typedef Ip4Addr ArpLkpRequest
 
typedef ap_uint< 14 > RtlSessId
 
typedef ap_uint< 1 > LkpSrcBit
 

Enumerations

enum  TcpState {
  CLOSED =0 , SYN_SENT , SYN_RECEIVED , ESTABLISHED ,
  FIN_WAIT_1 , FIN_WAIT_2 , CLOSING , TIME_WAIT ,
  LAST_ACK
}
 
enum  TcpAppSndErr { NO_ERROR =0 , NO_SPACE , NO_CONNECTION }
 
enum  LkpOpBit { INSERT =0 , DELETE }
 

Functions

template<class TypeIn , class TypeOut >
void pAxisRawCast (hls::stream< TypeIn > &si, hls::stream< TypeOut > &so)
 AxisRaw cast - Casts an AxisRaw stream to/from an AxisRaw derived class. More...
 
void nts (stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< UdpAppLsnReq > &siUAIF_LsnReq, stream< UdpAppLsnRep > &soUAIF_LsnRep, stream< UdpAppClsReq > &siUAIF_ClsReq, stream< UdpAppClsRep > &soUAIF_ClsRep, stream< UdpAppData > &soUAIF_Data, stream< UdpAppMeta > &soUAIF_Meta, stream< UdpAppDLen > &soUAIF_DLen, stream< UdpAppData > &siUAIF_Data, stream< UdpAppMeta > &siUAIF_Meta, stream< UdpAppDLen > &siUAIF_DLen)
 
bool operator== (SockAddr const &s1, SockAddr const &s2)
 
bool operator< (fourTuple const &lhs, fourTuple const &rhs)
 
bool operator< (SocketPair const &s1, SocketPair const &s2)
 
bool operator< (LE_SocketPair const &s1, LE_SocketPair const &s2)
 
bool operator== (FourTuple const &s1, FourTuple const &s2)
 
void printAxisRaw (const char *callerName, AxisRaw chunk)
 Prints an Axis raw data chunk (used for debugging). More...
 
void printAxisRaw (const char *callerName, const char *message, AxisRaw chunk)
 Print an Axis raw data chunk prepended with a message. More...
 
void printDmCmd (const char *callerName, DmCmd dmCmd)
 Prints the details of a Data Mover Command (used for debugging). More...
 
void printArpBindPair (const char *callerName, ArpBindPair arpBind)
 Print an ARP binding pair association. More...
 
void printLE_SockPair (const char *callerName, LE_SocketPair sockPair)
 Print a socket pair association in LITTLE-ENDIAN order. More...
 
void printSockPair (const char *callerName, SocketPair sockPair)
 Print a socket pair association. More...
 
void printSockPair (const char *callerName, LE_SocketPair leSockPair)
 Print a socket pair association. More...
 
void printLE_SockAddr (const char *callerName, LE_SockAddr leSockAddr)
 Print a socket address encoded in LITTLE_ENDIAN order. More...
 
void printSockAddr (const char *callerName, SockAddr sockAddr)
 Print a socket address. More...
 
void printSockAddr (const char *callerName, LE_SockAddr leSockAddr)
 Print a socket address. More...
 
void printIp4Addr (const char *callerName, const char *message, Ip4Addr ip4Addr)
 Print an IPv4 address prepended with a message (used for debugging). More...
 
void printIp4Addr (const char *callerName, Ip4Addr ip4Addr)
 Print an IPv4 address encoded in NETWORK-BYTE order. More...
 
void printEthAddr (const char *callerName, const char *message, EthAddr ethAddr)
 Print an ETHERNET MAC address prepended with a message (for debug). More...
 
void printEthAddr (const char *callerName, EthAddr ethAddr)
 Print an ETHERNET MAC address in NETWORK-BYTE order. More...
 
void printTcpPort (const char *callerName, TcpPort tcpPort)
 Print a TCP port. More...
 
const char * getTcpStateName (TcpState tcpState)
 Returns the name of an enum-based TCP-State as a user friendly string. More...
 
LE_tKeep lenToLE_tKeep (ap_uint< 4 > noValidBytes)
 A function to set a number of '1' in an 8-bit field. It is used here to set the number of valid bytes within the 'tkeep' field of an AxisRaw. More...
 
tKeep lenTotKeep (ap_uint< 4 > noValidBytes)
 A function to set a number of '1' in an 8-bit field. It is used here to set the number of valid bytes within the 'tkeep' field of an AxisRaw. More...
 
ap_uint< 16 > byteSwap16 (ap_uint< 16 > inputValue)
 Swap the two bytes of a word (.i.e, 16 bits). More...
 
ap_uint< 32 > byteSwap32 (ap_uint< 32 > inputValue)
 Swap the four bytes of a double-word (.i.e, 32 bits). More...
 
ap_uint< 48 > byteSwap48 (ap_uint< 48 > inputValue)
 Swap the six bytes of a triple-word (.i.e, 48 bits). More...
 
ap_uint< 64 > byteSwap64 (ap_uint< 64 > inputValue)
 Swap the eight bytes of a quad-word (.i.e, 64 bits). More...
 
void printSockAddr (SockAddr sockAddr)
 
void printEthAddr (EthAddr ethAddr)
 
void printTcpPort (TcpPort tcpPort)
 

Variables

bool gTraceEvent
 
bool gFatalError
 
unsigned int gSimCycCnt
 

Detailed Description

Network Transport Stack (NTS). This component implements the TCP/IP Network and Transport Stack used by the cloudFPGA platform. The documentation of NTS is available at https://pages.github.ibm.com/cloudFPGA/Doc/pages/cfdk.html#network-transport-stack-nts.

\{

: The TCP/UDP pseudo IPv4 packet fields defined in this class refer tp the format generated by the 10GbE MAC of Xilinx which organizes its two 64-bit Rx and Tx interfaces into 8 lanes (see PG157). The result of this division into lanes, is that the ETH fields end up being stored in LITTLE-ENDIAN order instead of the initial big-endian order used to transmit bytes over the physical media. As an example, assume that the 16-bits field "TotalLength" of an IPv4 packet has a value of '0x1234'. This field will be transmitted on the media in big-endian order .i.e, a '0x12' followed by '0x34'. However, this field will end up being ordered in little-endian mode (.i.e, 0x3412) by the AXI4-Stream interface of the 10GbE MAC.

Therefore, the mapping of a pseudo IPv4 packet onto an AXI4-Stream interface encoded in LITTLE-ENDIAN is as follows:

   6                   5                   4                   3                   2                   1                   0

3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP or TCP Length | Protocol | 0x00 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

And the format of a TCP segment over a pseudo IPV4 packet is as follow:

   6                   5                   4                   3                   2                   1                   0

3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Port | Source Port | UDP or TCP Length | Protocol | 0x00 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | |U|A|P|R|S|F| Data | | | Urgent Pointer | Checksum | Window | |R|C|S|S|Y|I| Offset| Res | | | | | |G|K|H|T|N|N| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

And the format of a UDP datagram over a pseudo IPv4 packet is as follows:

   6                   5                   4                   3                   2                   1                   0

3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Port | Source Port | UDP or TCP Length | Protocol | 0x00 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Checksum | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Macro Definition Documentation

◆ __SYNTH_LOG2CEIL__

#define __SYNTH_LOG2CEIL__

HELPER DESIGN CLASSES

Definition at line 55 of file nts_utils.hpp.

◆ ACK_ON

#define ACK_ON   1

Definition at line 86 of file nts_types.hpp.

◆ ARP_HLEN_ETHERNET

#define ARP_HLEN_ETHERNET   6

Definition at line 163 of file nts_types.hpp.

◆ ARP_HTYPE_ETHERNET

#define ARP_HTYPE_ETHERNET   0x0001

Definition at line 161 of file nts_types.hpp.

◆ ARP_OPER_REPLY

#define ARP_OPER_REPLY   0x0002

Definition at line 166 of file nts_types.hpp.

◆ ARP_OPER_REQUEST

#define ARP_OPER_REQUEST   0x0001

Definition at line 165 of file nts_types.hpp.

◆ ARP_PLEN_IPV4

#define ARP_PLEN_IPV4   4

Definition at line 164 of file nts_types.hpp.

◆ ARP_PTYPE_IPV4

#define ARP_PTYPE_IPV4   0x0800

Definition at line 162 of file nts_types.hpp.

◆ ARW

#define ARW   AXIS_RAW_WIDTH_AT_10GE

Definition at line 114 of file AxisRaw.hpp.

◆ assessSize

#define assessSize (   callerName,
  stream,
  streamName,
  depth 
)     do { if (stream.size() >= depth) printFatal(callerName, "Stream \'%s\' is full: Cannot write.", streamName); } while (0)

A macro that checks if a stream is full.

Parameters
[in]callerNameThe name of the caller process (e.g. "TB/IPRX").
[in]streamThe stream to test.
[in]streamNameThe name of the stream (e.g. "soEVe_RxEventSig").
[in]depthThe depth of the implemented FIFO.

Definition at line 223 of file nts_utils.hpp.

◆ AXIS_RAW_WIDTH_AT_10GE

#define AXIS_RAW_WIDTH_AT_10GE   64

GENERIC AXI4 STREAMING INTERFACES AXIS RAW - DEFINITIONS

Definition at line 113 of file AxisRaw.hpp.

◆ CMD_DISABLE

#define CMD_DISABLE   0

Definition at line 64 of file nts_types.hpp.

◆ CMD_DROP

#define CMD_DROP   1

Definition at line 61 of file nts_types.hpp.

◆ CMD_ENABLE

#define CMD_ENABLE   1

Definition at line 63 of file nts_types.hpp.

◆ CMD_INIT

#define CMD_INIT   1

Definition at line 60 of file nts_types.hpp.

◆ CMD_KEEP

#define CMD_KEEP   0

Definition at line 62 of file nts_types.hpp.

◆ concat2

#define concat2 (   firstCharConst,
  secondCharConst 
)    firstCharConst secondCharConst

MACRO DEFINITIONS

Definition at line 159 of file nts_utils.hpp.

◆ concat3

#define concat3 (   firstCharConst,
  secondCharConst,
  thirdCharConst 
)    firstCharConst secondCharConst thirdCharConst

Definition at line 161 of file nts_utils.hpp.

◆ ETH_BROADCAST_ADDR

#define ETH_BROADCAST_ADDR   0xFFFFFFFFFFFF

DATA-LINK LAYER-2 - ETHERNET & ARP


Terminology & Conventions

  • a FRAME (or MAC Frame) refers to the Ethernet data link layer.
  • a MESSAGE (or ARP Packet) refers to the ARP protocol data unit.

Definition at line 152 of file nts_types.hpp.

◆ ETH_ETHERTYPE_ARP

#define ETH_ETHERTYPE_ARP   0x0806

Definition at line 156 of file nts_types.hpp.

◆ ETH_ETHERTYPE_IP4

#define ETH_ETHERTYPE_IP4   0x0800

Definition at line 155 of file nts_types.hpp.

◆ FLAG_INO

#define FLAG_INO   false

Definition at line 74 of file nts_types.hpp.

◆ FLAG_OFF

#define FLAG_OFF   0

Definition at line 70 of file nts_types.hpp.

◆ FLAG_ON

#define FLAG_ON   1

Definition at line 71 of file nts_types.hpp.

◆ FLAG_OOO

#define FLAG_OOO   true

Definition at line 73 of file nts_types.hpp.

◆ FROM_RXe

#define FROM_RXe   0

Definition at line 380 of file nts_types.hpp.

◆ FROM_TAi

#define FROM_TAi   1

Definition at line 381 of file nts_types.hpp.

◆ ICMP_HEADER_LEN

#define ICMP_HEADER_LEN   8

ICMP - HEADER LEN. All ICMP packets have an 8-byte header and a variable- len data section.The first 4 bytes of the header have a fixed format, while the last 4 bytes depend on the type/code of the ICMP packet.

Definition at line 78 of file AxisIcmp.hpp.

◆ IP4_BROADCAST_ADDR

#define IP4_BROADCAST_ADDR   0xFFFFFFFF

NETWORK LAYER-3 - IPv4 & ICMP

Terminology & Conventions

  • a PACKET (or IP Packet) refers to an IP-PDU (i.e., Header+Data).
  • a MESSAGE (or ICMP Packet) refers to an ICMP protocol data unit.

Definition at line 181 of file nts_types.hpp.

◆ IP4_HEADER_LEN

#define IP4_HEADER_LEN   20

IP4 - DEFINITIONS [TODO - Move into nts_types.hpp]

Definition at line 133 of file AxisIp4.hpp.

◆ IP4_PROT_ICMP

#define IP4_PROT_ICMP   0x01

Definition at line 183 of file nts_types.hpp.

◆ IP4_PROT_TCP

#define IP4_PROT_TCP   0x06

Definition at line 184 of file nts_types.hpp.

◆ IP4_PROT_UDP

#define IP4_PROT_UDP   0x11

Definition at line 185 of file nts_types.hpp.

◆ KO

#define KO   NTS_KO

Definition at line 58 of file nts_types.hpp.

◆ LKP_HIT

#define LKP_HIT   true

Definition at line 76 of file nts_types.hpp.

◆ LKP_NO_HIT

#define LKP_NO_HIT   false

Definition at line 77 of file nts_types.hpp.

◆ NO_ACK

#define NO_ACK   0

Definition at line 87 of file nts_types.hpp.

◆ NTS_KO

#define NTS_KO   0

Definition at line 56 of file nts_types.hpp.

◆ NTS_OK

#define NTS_OK   1

GLOBAL DEFINITIONS USED BY NTS

Definition at line 55 of file nts_types.hpp.

◆ OK

#define OK   NTS_OK

Definition at line 57 of file nts_types.hpp.

◆ printError

#define printError (   callerName,
  format,
  ... 
)     do { gTraceEvent = true; printf("(@%5.5d) [%-20s] ERROR - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)

A macro to print an error message.

Parameters
[in]callerNameThe name of the caller process (e.g. "TB/IPRX").
[in]messageThe message to print.

Definition at line 195 of file nts_utils.hpp.

◆ printFatal

#define printFatal (   callerName,
  format,
  ... 
)     do { gTraceEvent = true; gFatalError = true; printf("\n(@%5.5d) [%-20s] FATAL - " format, gSimCycCnt, callerName, ##__VA_ARGS__); printf("\n\n"); exit(99); } while (0)

A macro to print a fatal error message and exit.

Parameters
[in]callerNameThe name of the caller process (e.g. "TB/IPRX").
[in]messageThe message to print.

Definition at line 208 of file nts_utils.hpp.

◆ printInfo

#define printInfo (   callerName,
  format,
  ... 
)     do { gTraceEvent = true; printf("(@%5.5d) [%-20s] INFO - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)

A macro to print an information message.

Parameters
[in]callerNameThe name of the caller process (e.g. "TB/IPRX").
[in]messageThe message to print.

Definition at line 169 of file nts_utils.hpp.

◆ printWarn

#define printWarn (   callerName,
  format,
  ... 
)     do { gTraceEvent = true; printf("(@%5.5d) [%-20s] WARNING - " format, gSimCycCnt, callerName, ##__VA_ARGS__); } while (0)

A macro to print a warning message.

Parameters
[in]callerNameThe name of the caller process (e.g. "TB/IPRX").
[in]messageThe message to print.

Definition at line 182 of file nts_utils.hpp.

◆ QUERY_FAST_RETRANSMIT

#define QUERY_FAST_RETRANSMIT   true

Definition at line 68 of file nts_types.hpp.

◆ QUERY_INIT

#define QUERY_INIT   1

Definition at line 67 of file nts_types.hpp.

◆ QUERY_RD

#define QUERY_RD   0

Definition at line 65 of file nts_types.hpp.

◆ QUERY_WR

#define QUERY_WR   1

Definition at line 66 of file nts_types.hpp.

◆ STS_CLOSED

#define STS_CLOSED   0

Definition at line 82 of file nts_types.hpp.

◆ STS_ERROR

#define STS_ERROR   1

Definition at line 83 of file nts_types.hpp.

◆ STS_KO

#define STS_KO   0

Definition at line 80 of file nts_types.hpp.

◆ STS_NO_ERR

#define STS_NO_ERR   0

Definition at line 84 of file nts_types.hpp.

◆ STS_OK

#define STS_OK   1

Definition at line 79 of file nts_types.hpp.

◆ STS_OPENED

#define STS_OPENED   1

Definition at line 81 of file nts_types.hpp.

◆ TCP_HEADER_LEN

#define TCP_HEADER_LEN   20

TCP - DEFINITIONS

Definition at line 81 of file AxisTcp.hpp.

◆ TCP_OPT_KIND_EOL

#define TCP_OPT_KIND_EOL   0

Definition at line 127 of file AxisTcp.hpp.

◆ TCP_OPT_KIND_MSS

#define TCP_OPT_KIND_MSS   2

Definition at line 129 of file AxisTcp.hpp.

◆ TCP_OPT_KIND_NOP

#define TCP_OPT_KIND_NOP   1

Definition at line 128 of file AxisTcp.hpp.

◆ TCP_OPT_KIND_SACK

#define TCP_OPT_KIND_SACK   4

Definition at line 131 of file AxisTcp.hpp.

◆ TCP_OPT_KIND_WSS

#define TCP_OPT_KIND_WSS   3

Definition at line 130 of file AxisTcp.hpp.

◆ THIS_NAME

#define THIS_NAME   "NtsUtils"

DEBUG PRINT HELPERS

Definition at line 38 of file nts_utils.cpp.

◆ TLAST

#define TLAST   1

Definition at line 116 of file AxisRaw.hpp.

◆ TOE_MEMORY_BASE

#define TOE_MEMORY_BASE   0x00000000

Definition at line 94 of file nts_config.hpp.

◆ TOE_MEMORY_SIZE

#define TOE_MEMORY_SIZE   0x80000000

Definition at line 93 of file nts_config.hpp.

◆ UDP_HEADER_LEN

#define UDP_HEADER_LEN   8

UDP - HEADER SIZE. All UDP datagrams have a fix-sized header of 8 bytes and a variable-sized data section.

Definition at line 81 of file AxisUdp.hpp.

Typedef Documentation

◆ AckBit

typedef ap_uint<1> AckBit

GENERIC TYPES and CLASSES USED BY NTS

Some Terminology & Conventions: In telecommunications, a protocol data unit (PDU) is a single unit of information transmitted among peer entities of a computer network. A PDU is therefore composed of a protocol specific control information (e.g, a header) and a user data section. This source code uses the following terminology:

  • a FRAME (or MAC Frame) refers to the Ethernet data link layer.
  • a PACKET (or IP Packet) refers to the IP protocol data unit.
  • a SEGMENT (or TCP Segment) refers to the TCP protocol data unit.
  • a DATAGRAM (or UDP Datagram) refers to the UDP protocol data unit.

Definition at line 107 of file nts_types.hpp.

◆ AckBool

typedef bool AckBool

Definition at line 122 of file nts_types.hpp.

◆ AppData

typedef AxisRaw AppData

INTERFACE - GENERIC TCP & UDP APPLICATION INTERFACE (APP)

Definition at line 50 of file nts.hpp.

◆ ArpHwLen

typedef ap_uint< 8> ArpHwLen

Definition at line 97 of file AxisArp.hpp.

◆ ArpHwType

typedef ap_uint<16> ArpHwType

ARP - HEADER FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS)

Definition at line 95 of file AxisArp.hpp.

◆ ArpLkpRequest

Definition at line 344 of file nts_types.hpp.

◆ ArpOper

typedef ap_uint<16> ArpOper

Definition at line 99 of file AxisArp.hpp.

◆ ArpProtLen

typedef ap_uint< 8> ArpProtLen

Definition at line 98 of file AxisArp.hpp.

◆ ArpProtType

typedef ap_uint<16> ArpProtType

Definition at line 96 of file AxisArp.hpp.

◆ ArpSendHwAddr

typedef ap_uint<48> ArpSendHwAddr

Definition at line 100 of file AxisArp.hpp.

◆ ArpSendProtAddr

typedef ap_uint<32> ArpSendProtAddr

Definition at line 101 of file AxisArp.hpp.

◆ ArpShaHi

typedef ap_uint<16> ArpShaHi

Definition at line 105 of file AxisArp.hpp.

◆ ArpShaLo

typedef ap_uint<32> ArpShaLo

Definition at line 106 of file AxisArp.hpp.

◆ ArpTargHwAddr

typedef ap_uint<48> ArpTargHwAddr

Definition at line 102 of file AxisArp.hpp.

◆ ArpTargProtAddr

typedef ap_uint<32> ArpTargProtAddr

Definition at line 103 of file AxisArp.hpp.

◆ ArpTpaHi

typedef ap_uint<16> ArpTpaHi

Definition at line 107 of file AxisArp.hpp.

◆ ArpTpaLo

typedef ap_uint<16> ArpTpaLo

Definition at line 108 of file AxisArp.hpp.

◆ AxisApp

typedef AxisRaw AxisApp

Definition at line 51 of file nts.hpp.

◆ CmdBit

typedef ap_uint<1> CmdBit

Definition at line 108 of file nts_types.hpp.

◆ CmdBool

typedef bool CmdBool

Definition at line 123 of file nts_types.hpp.

◆ ErrBit

typedef ap_uint<1> ErrBit

Definition at line 109 of file nts_types.hpp.

◆ EthAddr

typedef ap_uint<48> EthAddr

Definition at line 120 of file AxisEth.hpp.

◆ EthAddress

typedef ap_uint<48> EthAddress

Definition at line 119 of file AxisEth.hpp.

◆ EthDstAddr

typedef ap_uint<48> EthDstAddr

Definition at line 118 of file AxisEth.hpp.

◆ EtherLen

typedef ap_uint<16> EtherLen

Definition at line 123 of file AxisEth.hpp.

◆ EtherType

typedef ap_uint<16> EtherType

Definition at line 122 of file AxisEth.hpp.

◆ EthSrcAddr

typedef ap_uint<48> EthSrcAddr

ETH - HEADER FIELDS IN NETWORK BYTE ORDER. Default type definitions (as used by HLS).

Definition at line 117 of file AxisEth.hpp.

◆ EthTypeLen

typedef ap_uint<16> EthTypeLen

Definition at line 121 of file AxisEth.hpp.

◆ FlagBit

typedef ap_uint<1> FlagBit

Definition at line 110 of file nts_types.hpp.

◆ FlagBool

typedef bool FlagBool

Definition at line 124 of file nts_types.hpp.

◆ HitBool

typedef bool HitBool

Definition at line 125 of file nts_types.hpp.

◆ IcmpCode

typedef ap_uint< 8> IcmpCode

Definition at line 92 of file AxisIcmp.hpp.

◆ IcmpCsum

typedef ap_uint<16> IcmpCsum

Definition at line 93 of file AxisIcmp.hpp.

◆ IcmpIdent

typedef ap_uint<16> IcmpIdent

Definition at line 94 of file AxisIcmp.hpp.

◆ IcmpSeqNum

typedef ap_uint<16> IcmpSeqNum

Definition at line 95 of file AxisIcmp.hpp.

◆ IcmpType

typedef ap_uint< 8> IcmpType

ICMP - HEADER FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS)

Definition at line 91 of file AxisIcmp.hpp.

◆ Ip4Addr

typedef ap_uint<32> Ip4Addr

Definition at line 169 of file AxisIp4.hpp.

◆ Ip4Address

typedef ap_uint<32> Ip4Address

Definition at line 168 of file AxisIp4.hpp.

◆ Ip4Data

typedef ap_uint<64> Ip4Data

Definition at line 170 of file AxisIp4.hpp.

◆ Ip4DatLen

typedef ap_uint<16> Ip4DatLen

Definition at line 173 of file AxisIp4.hpp.

◆ Ip4DstAddr

typedef ap_uint<32> Ip4DstAddr

Definition at line 167 of file AxisIp4.hpp.

◆ Ip4DstAddrHi

typedef ap_uint<16> Ip4DstAddrHi

IPv4 - UNALIGNED FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS).

Definition at line 136 of file AxisEth.hpp.

◆ Ip4DstAddrLo

typedef ap_uint<16> Ip4DstAddrLo

Definition at line 137 of file AxisEth.hpp.

◆ Ip4Flags

typedef ap_uint< 3> Ip4Flags

Definition at line 162 of file AxisIp4.hpp.

◆ Ip4FragOff

typedef ap_uint<13> Ip4FragOff

Definition at line 161 of file AxisIp4.hpp.

◆ Ip4HdrCsum

typedef ap_uint<16> Ip4HdrCsum

Definition at line 165 of file AxisIp4.hpp.

◆ Ip4HdrLen

typedef ap_uint< 4> Ip4HdrLen

Definition at line 157 of file AxisIp4.hpp.

◆ Ip4Ident

typedef ap_uint<16> Ip4Ident

Definition at line 160 of file AxisIp4.hpp.

◆ Ip4PktLen

typedef ap_uint<16> Ip4PktLen

Definition at line 172 of file AxisIp4.hpp.

◆ Ip4Prot

typedef ap_uint< 8> Ip4Prot

Definition at line 164 of file AxisIp4.hpp.

◆ Ip4SrcAddr

typedef ap_uint<32> Ip4SrcAddr

Definition at line 166 of file AxisIp4.hpp.

◆ Ip4ToS

typedef ap_uint< 8> Ip4ToS

Definition at line 158 of file AxisIp4.hpp.

◆ Ip4TotalLen

typedef ap_uint<16> Ip4TotalLen

Definition at line 159 of file AxisIp4.hpp.

◆ Ip4TtL

typedef ap_uint< 8> Ip4TtL

Definition at line 163 of file AxisIp4.hpp.

◆ Ip4Version

typedef ap_uint< 4> Ip4Version

IPv4 - HEADER FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS).

Definition at line 156 of file AxisIp4.hpp.

◆ LE_ArpHwLen

typedef ap_uint< 8> LE_ArpHwLen

Definition at line 78 of file AxisArp.hpp.

◆ LE_ArpHwType

typedef ap_uint<16> LE_ArpHwType

ARP - HEADER FIELDS IN LITTLE_ENDIAN (LE) ORDER.

Definition at line 76 of file AxisArp.hpp.

◆ LE_ArpOper

typedef ap_uint<16> LE_ArpOper

Definition at line 80 of file AxisArp.hpp.

◆ LE_ArpProtLen

typedef ap_uint< 8> LE_ArpProtLen

Definition at line 79 of file AxisArp.hpp.

◆ LE_ArpProtType

typedef ap_uint<16> LE_ArpProtType

Definition at line 77 of file AxisArp.hpp.

◆ LE_ArpSendHwAddr

typedef ap_uint<48> LE_ArpSendHwAddr

Definition at line 81 of file AxisArp.hpp.

◆ LE_ArpSendProtAddr

typedef ap_uint<32> LE_ArpSendProtAddr

Definition at line 82 of file AxisArp.hpp.

◆ LE_ArpShaHi

typedef ap_uint<16> LE_ArpShaHi

Definition at line 86 of file AxisArp.hpp.

◆ LE_ArpShaLo

typedef ap_uint<32> LE_ArpShaLo

Definition at line 87 of file AxisArp.hpp.

◆ LE_ArpTargHwAddr

typedef ap_uint<48> LE_ArpTargHwAddr

Definition at line 83 of file AxisArp.hpp.

◆ LE_ArpTargProtAddr

typedef ap_uint<32> LE_ArpTargProtAddr

Definition at line 84 of file AxisArp.hpp.

◆ LE_ArpTpaHi

typedef ap_uint<16> LE_ArpTpaHi

Definition at line 88 of file AxisArp.hpp.

◆ LE_ArpTpaLo

typedef ap_uint<16> LE_ArpTpaLo

Definition at line 89 of file AxisArp.hpp.

◆ LE_EthAddr

typedef ap_uint<48> LE_EthAddr

Definition at line 108 of file AxisEth.hpp.

◆ LE_EthAddress

typedef ap_uint<48> LE_EthAddress

Definition at line 107 of file AxisEth.hpp.

◆ LE_EthDstAddr

typedef ap_uint<48> LE_EthDstAddr

Definition at line 106 of file AxisEth.hpp.

◆ LE_EtherLen

typedef ap_uint<16> LE_EtherLen

Definition at line 111 of file AxisEth.hpp.

◆ LE_EtherType

typedef ap_uint<16> LE_EtherType

Definition at line 110 of file AxisEth.hpp.

◆ LE_EthSrcAddr

typedef ap_uint<48> LE_EthSrcAddr

ETH - HEADER FIELDS IN LITTLE-ENDIAN (LE) ORDER. As received or transmitted by the 10GbE MAC.

Definition at line 105 of file AxisEth.hpp.

◆ LE_EthTypeLen

typedef ap_uint<16> LE_EthTypeLen

Definition at line 109 of file AxisEth.hpp.

◆ LE_IcmpCode

typedef ap_uint< 8> LE_IcmpCode

Definition at line 84 of file AxisIcmp.hpp.

◆ LE_IcmpCsum

typedef ap_uint<16> LE_IcmpCsum

Definition at line 85 of file AxisIcmp.hpp.

◆ LE_IcmpType

typedef ap_uint< 8> LE_IcmpType

ICMP - HEADER FIELDS IN LITTLE_ENDIAN (LE) ORDER.

Definition at line 83 of file AxisIcmp.hpp.

◆ LE_Ip4Addr

typedef ap_uint<32> LE_Ip4Addr

Definition at line 149 of file AxisIp4.hpp.

◆ LE_Ip4Address

typedef ap_uint<32> LE_Ip4Address

Definition at line 148 of file AxisIp4.hpp.

◆ LE_Ip4DstAddr

typedef ap_uint<32> LE_Ip4DstAddr

Definition at line 147 of file AxisIp4.hpp.

◆ LE_Ip4DstAddrHi

typedef ap_uint<16> LE_Ip4DstAddrHi

IPv4 - UNALIGNED FIELDS IN LITTLE-ENDIAN (LE) ORDER. As received or transmitted by the 10GbE MAC.

Definition at line 129 of file AxisEth.hpp.

◆ LE_Ip4DstAddrLo

typedef ap_uint<16> LE_Ip4DstAddrLo

Definition at line 130 of file AxisEth.hpp.

◆ LE_Ip4HdrCsum

typedef ap_uint<16> LE_Ip4HdrCsum

Definition at line 145 of file AxisIp4.hpp.

◆ LE_Ip4HdrLen

typedef ap_uint< 4> LE_Ip4HdrLen

Definition at line 140 of file AxisIp4.hpp.

◆ LE_Ip4Prot

typedef ap_uint< 8> LE_Ip4Prot

Definition at line 144 of file AxisIp4.hpp.

◆ LE_Ip4SrcAddr

typedef ap_uint<32> LE_Ip4SrcAddr

Definition at line 146 of file AxisIp4.hpp.

◆ LE_Ip4ToS

typedef ap_uint< 8> LE_Ip4ToS

Definition at line 141 of file AxisIp4.hpp.

◆ LE_Ip4TotalLen

typedef ap_uint<16> LE_Ip4TotalLen

Definition at line 142 of file AxisIp4.hpp.

◆ LE_Ip4TtL

typedef ap_uint< 8> LE_Ip4TtL

Definition at line 143 of file AxisIp4.hpp.

◆ LE_Ip4Version

typedef ap_uint< 4> LE_Ip4Version

IPv4 - HEADER FIELDS IN LITTLE-ENDIAN (LE) ORDER. As received or transmitted by the 10GbE MAC.

Definition at line 139 of file AxisIp4.hpp.

◆ LE_IpData

typedef ap_uint<64> LE_IpData

Definition at line 150 of file AxisIp4.hpp.

◆ LE_Ly4Len

typedef ap_uint<16> LE_Ly4Len

Definition at line 200 of file nts_types.hpp.

◆ LE_Ly4Port

typedef ap_uint<16> LE_Ly4Port

TRANSPORT LAYER-4 - UDP & TCP


Terminology & Conventions

  • a SEGMENT (or TCP Segment) refers to the TCP protocol data unit.
  • a DATAGRAM (or UDP Datagram) refers to the UDP protocol data unit.

Definition at line 199 of file nts_types.hpp.

◆ LE_TcpAckNum

typedef ap_uint<32> LE_TcpAckNum

Definition at line 90 of file AxisTcp.hpp.

◆ LE_TcpChecksum

typedef ap_uint<16> LE_TcpChecksum

Definition at line 95 of file AxisTcp.hpp.

◆ LE_TcpCtrlBits

typedef ap_uint<6> LE_TcpCtrlBits

Definition at line 93 of file AxisTcp.hpp.

◆ LE_TcpData

typedef ap_uint<64> LE_TcpData

Definition at line 97 of file AxisTcp.hpp.

◆ LE_TcpDataOff

typedef ap_uint<4> LE_TcpDataOff

Definition at line 92 of file AxisTcp.hpp.

◆ LE_TcpDstPort

typedef ap_uint<16> LE_TcpDstPort

Definition at line 87 of file AxisTcp.hpp.

◆ LE_TcpPort

typedef ap_uint<16> LE_TcpPort

Definition at line 88 of file AxisTcp.hpp.

◆ LE_TcpResBits

typedef ap_uint<3> LE_TcpResBits

Definition at line 91 of file AxisTcp.hpp.

◆ LE_TcpSeqNum

typedef ap_uint<32> LE_TcpSeqNum

Definition at line 89 of file AxisTcp.hpp.

◆ LE_TcpSrcPort

typedef ap_uint<16> LE_TcpSrcPort

TCP - HEADER FIELDS IN LITTLE_ENDIAN (LE) ORDER.

Definition at line 86 of file AxisTcp.hpp.

◆ LE_TcpUrgPtr

typedef ap_uint<16> LE_TcpUrgPtr

Definition at line 96 of file AxisTcp.hpp.

◆ LE_TcpWindow

typedef ap_uint<16> LE_TcpWindow

Definition at line 94 of file AxisTcp.hpp.

◆ LE_tData

typedef ap_uint< 64 > LE_tData

AXIS_RAW - TYPE FIELDS DEFINITION FYI - 'LE' stands for Little-Endian order.

Definition at line 122 of file AxisRaw.hpp.

◆ LE_tDataHalf

typedef ap_uint< 64 /2> LE_tDataHalf

Definition at line 123 of file AxisRaw.hpp.

◆ LE_tKeep

typedef ap_uint< 64 /8> LE_tKeep

Definition at line 124 of file AxisRaw.hpp.

◆ LE_tLast

typedef ap_uint<1> LE_tLast

Definition at line 125 of file AxisRaw.hpp.

◆ LE_UdpCsum

typedef ap_uint<16> LE_UdpCsum

Definition at line 90 of file AxisUdp.hpp.

◆ LE_UdpData

Definition at line 91 of file AxisUdp.hpp.

◆ LE_UdpDstPort

typedef ap_uint<16> LE_UdpDstPort

Definition at line 87 of file AxisUdp.hpp.

◆ LE_UdpLen

typedef ap_uint<16> LE_UdpLen

Definition at line 89 of file AxisUdp.hpp.

◆ LE_UdpPort

typedef ap_uint<16> LE_UdpPort

Definition at line 88 of file AxisUdp.hpp.

◆ LE_UdpSrcPort

typedef ap_uint<16> LE_UdpSrcPort

UDP - HEADER FIELDS IN LITTLE_ENDIAN (LE) ORDER.

Definition at line 86 of file AxisUdp.hpp.

◆ LkpSrcBit

typedef ap_uint< 1> LkpSrcBit

Definition at line 379 of file nts_types.hpp.

◆ Ly4Len

typedef ap_uint<16> Ly4Len

Definition at line 202 of file nts_types.hpp.

◆ Ly4Port

typedef ap_uint<16> Ly4Port

Definition at line 201 of file nts_types.hpp.

◆ RdWrBit

typedef ap_uint<1> RdWrBit

Definition at line 111 of file nts_types.hpp.

◆ RepBit

typedef ap_uint<1> RepBit

Definition at line 113 of file nts_types.hpp.

◆ RepBool

typedef bool RepBool

Definition at line 127 of file nts_types.hpp.

◆ ReqBit

typedef ap_uint<1> ReqBit

Definition at line 112 of file nts_types.hpp.

◆ ReqBool

typedef bool ReqBool

Definition at line 126 of file nts_types.hpp.

◆ RspBit

typedef ap_uint<1> RspBit

Definition at line 114 of file nts_types.hpp.

◆ RspBool

typedef bool RspBool

Definition at line 128 of file nts_types.hpp.

◆ RtlSessId

typedef ap_uint<14> RtlSessId

NTS INTERNAL - TOE / CAM

This section defines the interfaces between the TCP Offload Engine (TOE) and the Content Addressable Memory (CAM) used to manage the TCP sessions. Warning: Do not change the order of the fields in the session-lookup-request, the session-lookup-reply, the session-update-request and the session-update- reply classes as these structures may end up being mapped to a RTL physical Axi4-Stream interface between the TOE and the CAM (if CAM is RTL-based). Info: The member elements of the classes are placed into the physical vector interface in the order they appear in the C code: the first element of the structure is aligned on the LSB of the vector and the final element of the structure is aligned with the MSB of the vector.

Definition at line 378 of file nts_types.hpp.

◆ SessionId

typedef ap_uint<16> SessionId

Definition at line 136 of file nts_types.hpp.

◆ SigBit

typedef ap_uint<1> SigBit

Definition at line 115 of file nts_types.hpp.

◆ SigBool

typedef bool SigBool

Definition at line 129 of file nts_types.hpp.

◆ StsBit

typedef ap_uint<1> StsBit

Definition at line 116 of file nts_types.hpp.

◆ StsBool

typedef bool StsBool

Definition at line 130 of file nts_types.hpp.

◆ TcpAckNum

typedef ap_uint<32> TcpAckNum

Definition at line 107 of file AxisTcp.hpp.

◆ TcpAppClsReq

Definition at line 179 of file nts.hpp.

◆ TcpAppData

INTERFACE - TCP APPLICATION INTERFACE (TAIF)

This section defines the interfaces between the Network and Transport Stack (NTS) and the TCP Application Interface (TAIF) layer.

Definition at line 68 of file nts.hpp.

◆ TcpAppDLen

Definition at line 80 of file nts.hpp.

◆ TcpAppLsnRep

Definition at line 196 of file nts.hpp.

◆ TcpAppLsnReq

Definition at line 190 of file nts.hpp.

◆ TcpAppMeta

Definition at line 74 of file nts.hpp.

◆ TcpAppOpnReq

Definition at line 159 of file nts.hpp.

◆ TcpChecksum

typedef ap_uint<16> TcpChecksum

Definition at line 113 of file AxisTcp.hpp.

◆ TcpCsum

typedef ap_uint<16> TcpCsum

Definition at line 114 of file AxisTcp.hpp.

◆ TcpCtrlBit

typedef ap_uint<1> TcpCtrlBit

Definition at line 111 of file AxisTcp.hpp.

◆ TcpCtrlBits

typedef ap_uint<6> TcpCtrlBits

Definition at line 110 of file AxisTcp.hpp.

◆ TcpDataOff

typedef ap_uint<4> TcpDataOff

Definition at line 109 of file AxisTcp.hpp.

◆ TcpDatLen

typedef ap_uint<16> TcpDatLen

Definition at line 123 of file AxisTcp.hpp.

◆ TcpDstPort

typedef ap_uint<16> TcpDstPort

Definition at line 104 of file AxisTcp.hpp.

◆ TcpHdrLen

typedef ap_uint< 8> TcpHdrLen

Definition at line 122 of file AxisTcp.hpp.

◆ TcpOptKind

typedef ap_uint< 8> TcpOptKind

Definition at line 117 of file AxisTcp.hpp.

◆ TcpOptLen

typedef ap_uint< 8> TcpOptLen

Definition at line 118 of file AxisTcp.hpp.

◆ TcpOptMss

typedef ap_uint<16> TcpOptMss

Definition at line 119 of file AxisTcp.hpp.

◆ TcpPort

typedef ap_uint<16> TcpPort

Definition at line 105 of file AxisTcp.hpp.

◆ TcpResBits

typedef ap_uint<3> TcpResBits

Definition at line 108 of file AxisTcp.hpp.

◆ TcpSegLen

typedef ap_uint<16> TcpSegLen

Definition at line 121 of file AxisTcp.hpp.

◆ TcpSeqNum

typedef ap_uint<32> TcpSeqNum

Definition at line 106 of file AxisTcp.hpp.

◆ TcpSessId

typedef ap_uint<16> TcpSessId

Definition at line 137 of file nts_types.hpp.

◆ TcpSrcPort

typedef ap_uint<16> TcpSrcPort

TCP - HEADER FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS)

Definition at line 103 of file AxisTcp.hpp.

◆ TcpUrgPtr

typedef ap_uint<16> TcpUrgPtr

Definition at line 115 of file AxisTcp.hpp.

◆ TcpWindow

typedef ap_uint<16> TcpWindow

Definition at line 112 of file AxisTcp.hpp.

◆ tData

typedef ap_uint< 64 > tData

Definition at line 126 of file AxisRaw.hpp.

◆ tDataHalf

typedef ap_uint< 64 /2> tDataHalf

Definition at line 127 of file AxisRaw.hpp.

◆ tKeep

typedef ap_uint< 64 /8> tKeep

Definition at line 128 of file AxisRaw.hpp.

◆ tKeepHalf

typedef ap_uint< 64 /16> tKeepHalf

Definition at line 129 of file AxisRaw.hpp.

◆ tLast

typedef ap_uint<1> tLast

Definition at line 130 of file AxisRaw.hpp.

◆ UdpAppClsRep

Definition at line 271 of file nts.hpp.

◆ UdpAppClsReq

Definition at line 265 of file nts.hpp.

◆ UdpAppData

INTERFACE - UDP APPLICATION INTERFACE (UAIF)

This section defines the interfaces between the Network and Transport Stack (NTS) and the UDP Application Interface (UAIF) layer.

Definition at line 214 of file nts.hpp.

◆ UdpAppDLen

Definition at line 243 of file nts.hpp.

◆ UdpAppLsnRep

Definition at line 259 of file nts.hpp.

◆ UdpAppLsnReq

Definition at line 253 of file nts.hpp.

◆ UdpCsum

typedef ap_uint<16> UdpCsum

Definition at line 101 of file AxisUdp.hpp.

◆ UdpData

typedef tData UdpData

Definition at line 102 of file AxisUdp.hpp.

◆ UdpDataHi

Definition at line 103 of file AxisUdp.hpp.

◆ UdpDataLo

Definition at line 104 of file AxisUdp.hpp.

◆ UdpDatLen

typedef ap_uint<16> UdpDatLen

Definition at line 107 of file AxisUdp.hpp.

◆ UdpDgmLen

typedef ap_uint<16> UdpDgmLen

Definition at line 106 of file AxisUdp.hpp.

◆ UdpDstPort

typedef ap_uint<16> UdpDstPort

Definition at line 98 of file AxisUdp.hpp.

◆ UdpLen

typedef ap_uint<16> UdpLen

Definition at line 100 of file AxisUdp.hpp.

◆ UdpPort

typedef ap_uint<16> UdpPort

Definition at line 99 of file AxisUdp.hpp.

◆ UdpSrcPort

typedef ap_uint<16> UdpSrcPort

UDP - HEADER FIELDS IN NETWORK BYTE ORDER. Default Type Definitions (as used by HLS)

Definition at line 97 of file AxisUdp.hpp.

◆ ValBit

typedef ap_uint<1> ValBit

Definition at line 117 of file nts_types.hpp.

◆ ValBool

typedef bool ValBool

Definition at line 131 of file nts_types.hpp.

Enumeration Type Documentation

◆ LkpOpBit

enum LkpOpBit
Enumerator
INSERT 
DELETE 

Definition at line 382 of file nts_types.hpp.

382 { INSERT=0, DELETE }; // Encodes the CAM operation
@ DELETE
Definition: nts_types.hpp:382
@ INSERT
Definition: nts_types.hpp:382

◆ TcpAppSndErr

Enumerator
NO_ERROR 
NO_SPACE 
NO_CONNECTION 

Definition at line 304 of file nts_types.hpp.

@ NO_ERROR
Definition: nts_types.hpp:304
@ NO_CONNECTION
Definition: nts_types.hpp:304
@ NO_SPACE
Definition: nts_types.hpp:304

◆ TcpState

enum TcpState

APPLICATION LAYER-5

This section defines the types and classes related to the Application (APP) layer and interfaces.

Enumerator
CLOSED 
SYN_SENT 
SYN_RECEIVED 
ESTABLISHED 
FIN_WAIT_1 
FIN_WAIT_2 
CLOSING 
TIME_WAIT 
LAST_ACK 

Definition at line 296 of file nts_types.hpp.

297  FIN_WAIT_1, FIN_WAIT_2, CLOSING, TIME_WAIT, \
298  LAST_ACK };
@ FIN_WAIT_2
Definition: nts_types.hpp:297
@ SYN_SENT
Definition: nts_types.hpp:296
@ TIME_WAIT
Definition: nts_types.hpp:297
@ ESTABLISHED
Definition: nts_types.hpp:296
@ CLOSING
Definition: nts_types.hpp:297
@ CLOSED
Definition: nts_types.hpp:296
@ SYN_RECEIVED
Definition: nts_types.hpp:296

Function Documentation

◆ byteSwap16()

ap_uint<16> byteSwap16 ( ap_uint< 16 >  inputValue)

Swap the two bytes of a word (.i.e, 16 bits).

Parameters
[in]inpWordThe 16-bit unsigned data to swap.
Returns
a 16-bit unsigned data.

Definition at line 349 of file nts_utils.cpp.

349  {
350  return (inputValue.range(7,0), inputValue(15, 8));
351 }
Here is the caller graph for this function:

◆ byteSwap32()

ap_uint<32> byteSwap32 ( ap_uint< 32 >  inputValue)

Swap the four bytes of a double-word (.i.e, 32 bits).

Parameters
[in]inpDWordThe 32-bit unsigned data to swap.
Returns
a 32-bit unsigned data.

Definition at line 359 of file nts_utils.cpp.

359  {
360  return (inputValue.range( 7, 0), inputValue(15, 8),
361  inputValue.range(23,16), inputValue(31, 24));
362 }
Here is the caller graph for this function:

◆ byteSwap48()

ap_uint< 48 > byteSwap48 ( ap_uint< 48 >  inputValue)

Swap the six bytes of a triple-word (.i.e, 48 bits).

Parameters
[in]inputValueThe 48-bit unsigned data to swap.
Returns
a 48-bit unsigned data.

Definition at line 370 of file nts_utils.cpp.

370  {
371  return (inputValue.range( 7, 0), inputValue.range(15, 8),
372  inputValue.range(23, 16), inputValue.range(31, 24),
373  inputValue.range(39, 32), inputValue.range(47, 40));
374 }

◆ byteSwap64()

ap_uint< 64 > byteSwap64 ( ap_uint< 64 >  inputValue)

Swap the eight bytes of a quad-word (.i.e, 64 bits).

Parameters
[in]inpQWordThe 64-bit unsigned data to swap.
Returns
a 64-bit unsigned data.

Definition at line 382 of file nts_utils.cpp.

382  {
383  return (inputValue.range( 7, 0), inputValue(15, 8),
384  inputValue.range(23,16), inputValue(31, 24),
385  inputValue.range(39,32), inputValue(47, 40),
386  inputValue.range(55,48), inputValue(63, 56));
387 }

◆ getTcpStateName()

const char * getTcpStateName ( TcpState  tcpState)

Returns the name of an enum-based TCP-State as a user friendly string.

ENUM TO STRING HELPERS

Parameters
[in]tcpStateAn enumerated type of TCP state.
Returns
the TCP state type as a string.

ENUM TO STRING HELPERS - PROTOTYPE DEFINITIONS

Definition at line 272 of file nts_utils.cpp.

272  {
273  switch (tcpState) {
274  case CLOSED:
275  return "CLOSED";
276  case SYN_SENT:
277  return "SYN_SENT";
278  case SYN_RECEIVED:
279  return "SYN_RECEIVED";
280  case ESTABLISHED:
281  return "ESTABLISHED";
282  case FIN_WAIT_1:
283  return "FIN_WAIT_1";
284  case FIN_WAIT_2:
285  return "FIN_WAIT_2";
286  case CLOSING:
287  return "CLOSING";
288  case TIME_WAIT:
289  return "TIME_WAIT";
290  case LAST_ACK:
291  return "LAST_ACK";
292  default:
293  return "ERROR: UNKNOWN TCP STATE!";
294  }
295 }
@ LAST_ACK
Definition: nts_types.hpp:298
@ FIN_WAIT_1
Definition: nts_types.hpp:297
Here is the caller graph for this function:

◆ lenToLE_tKeep()

LE_tKeep lenToLE_tKeep ( ap_uint< 4 >  noValidBytes)

A function to set a number of '1' in an 8-bit field. It is used here to set the number of valid bytes within the 'tkeep' field of an AxisRaw.

AXIS CHUNK HELPERS

Parameters
[in]Thenumber of '1s' to set (.i,e, the number of valid bytes).

Definition at line 307 of file nts_utils.cpp.

307  {
308  LE_tKeep leKeep = 0;
309  switch(noValidBytes) {
310  case 1: leKeep = 0x01; break;
311  case 2: leKeep = 0x03; break;
312  case 3: leKeep = 0x07; break;
313  case 4: leKeep = 0x0F; break;
314  case 5: leKeep = 0x1F; break;
315  case 6: leKeep = 0x3F; break;
316  case 7: leKeep = 0x7F; break;
317  case 8: leKeep = 0xFF; break;
318  }
319  return leKeep;
320 }
ap_uint< 64/8 > LE_tKeep
Definition: AxisRaw.hpp:124
Here is the caller graph for this function:

◆ lenTotKeep()

tKeep lenTotKeep ( ap_uint< 4 >  noValidBytes)

A function to set a number of '1' in an 8-bit field. It is used here to set the number of valid bytes within the 'tkeep' field of an AxisRaw.

Parameters
[in]Thenumber of '1s' to set (.i,e, the number of valid bytes).

AXIS CHUNK UTILITIES - PROTOTYPE DEFINITIONS

Definition at line 328 of file nts_utils.cpp.

328  {
329  tKeep keep = 0;
330  switch(noValidBytes) {
331  case 1: keep = 0x80; break;
332  case 2: keep = 0xC0; break;
333  case 3: keep = 0xE0; break;
334  case 4: keep = 0xF0; break;
335  case 5: keep = 0xF8; break;
336  case 6: keep = 0xFC; break;
337  case 7: keep = 0xFE; break;
338  case 8: keep = 0xFF; break;
339  }
340  return keep;
341 }
ap_uint< 64/8 > tKeep
Definition: AxisRaw.hpp:128
Here is the caller graph for this function:

◆ nts()

void nts ( stream< TcpAppNotif > &  soTAIF_Notif,
stream< TcpAppRdReq > &  siTAIF_DReq,
stream< TcpAppData > &  soTAIF_Data,
stream< TcpAppMeta > &  soTAIF_Meta,
stream< TcpAppLsnReq > &  siTAIF_LsnReq,
stream< TcpAppLsnRep > &  soTAIF_LsnRep,
stream< TcpAppData > &  siTAIF_Data,
stream< TcpAppSndReq > &  siTAIF_SndReq,
stream< TcpAppSndRep > &  soTAIF_SndRep,
stream< TcpAppOpnReq > &  siTAIF_OpnReq,
stream< TcpAppOpnRep > &  soTAIF_OpnRep,
stream< TcpAppClsReq > &  siTAIF_ClsReq,
stream< UdpAppLsnReq > &  siUAIF_LsnReq,
stream< UdpAppLsnRep > &  soUAIF_LsnRep,
stream< UdpAppClsReq > &  siUAIF_ClsReq,
stream< UdpAppClsRep > &  soUAIF_ClsRep,
stream< UdpAppData > &  soUAIF_Data,
stream< UdpAppMeta > &  soUAIF_Meta,
stream< UdpAppDLen > &  soUAIF_DLen,
stream< UdpAppData > &  siUAIF_Data,
stream< UdpAppMeta > &  siUAIF_Meta,
stream< UdpAppDLen > &  siUAIF_DLen 
)

ENTITY - NETWORK TRANSPORT STACK (NTS)

◆ operator<() [1/3]

bool operator< ( fourTuple const &  lhs,
fourTuple const &  rhs 
)
inline

Definition at line 239 of file nts_types.hpp.

239  {
240  return lhs.dstIp < rhs.dstIp || (lhs.dstIp == rhs.dstIp && lhs.srcIp < rhs.srcIp);
241 }

◆ operator<() [2/3]

bool operator< ( LE_SocketPair const &  s1,
LE_SocketPair const &  s2 
)
inline

Definition at line 269 of file nts_types.hpp.

269  {
270  return ((s1.dst.addr < s2.dst.addr) ||
271  (s1.dst.addr == s2.dst.addr && s1.src.addr < s2.src.addr));
272 }

◆ operator<() [3/3]

bool operator< ( SocketPair const &  s1,
SocketPair const &  s2 
)
inline

Definition at line 255 of file nts_types.hpp.

255  {
256  return ((s1.dst.addr < s2.dst.addr) ||
257  (s1.dst.addr == s2.dst.addr && s1.src.addr < s2.src.addr));
258 }

◆ operator==() [1/2]

bool operator== ( FourTuple const &  s1,
FourTuple const &  s2 
)
inline

Definition at line 426 of file nts_types.hpp.

426  {
427  return ((s1.myIp == s2.myIp) && (s1.myPort == s2.myPort) &&
428  (s1.theirIp == s2.theirIp) && (s1.theirPort == s2.theirPort));
429 }

◆ operator==() [2/2]

bool operator== ( SockAddr const &  s1,
SockAddr const &  s2 
)
inline

Definition at line 216 of file nts_types.hpp.

216  {
217  return ((s1.addr == s2.addr) and (s1.port == s2.port));
218 }

◆ pAxisRawCast()

template<class TypeIn , class TypeOut >
void pAxisRawCast ( hls::stream< TypeIn > &  si,
hls::stream< TypeOut > &  so 
)

AxisRaw cast - Casts an AxisRaw stream to/from an AxisRaw derived class.

Parameters
[in]siThe input stream to cast.
[out]soThe casted output stream.

This process is used to type cast an HLS stream from a base class 'AxisRaw' to or from a derived class such as 'AxisEth', 'AxisIp4', 'AxisIcmp', 'AxisUdp', 'AxisTcp, or 'AxisPsd4'. Its usage is only required in NTS for the arguments of a top-level function, because the interface synthesis optimization of Vivado HLS does not support packing structs which contain other strucs, neither does it support derived classes.

Definition at line 148 of file AxisRaw.hpp.

151 {
152  #pragma HLS PIPELINE II=1 enable_flush
153  #pragma HLS INLINE off
154 
155  if (!si.empty()) {
156  so.write(si.read());
157  }
158 }
Here is the caller graph for this function:

◆ printArpBindPair()

void printArpBindPair ( const char *  callerName,
ArpBindPair  arpBind 
)

Print an ARP binding pair association.

Parameters
[in]callerNameThe name of the caller process (e.g. "ACc").
[in]arpBindThe ARP binding pair to display.

Definition at line 80 of file nts_utils.cpp.

80  {
81  printInfo(callerName, "ArpBind {MAC,IP4} = {0x%12.12lx,0x%8.8lx} = {%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X,%3.3d.%3.3d.%3.3d.%3.3d}\n",
82  arpBind.macAddr.to_ulong(),
83  arpBind.ip4Addr.to_ulong(),
84  (unsigned char)((arpBind.macAddr.to_ulong() & 0xFF0000000000) >> 40),
85  (unsigned char)((arpBind.macAddr.to_ulong() & 0x00FF00000000) >> 32),
86  (unsigned char)((arpBind.macAddr.to_ulong() & 0x0000FF000000) >> 24),
87  (unsigned char)((arpBind.macAddr.to_ulong() & 0x000000FF0000) >> 16),
88  (unsigned char)((arpBind.macAddr.to_ulong() & 0x00000000FF00) >> 8),
89  (unsigned char)((arpBind.macAddr.to_ulong() & 0x0000000000FF) >> 0),
90  (unsigned char)((arpBind.ip4Addr.to_ulong() & 0xFF000000) >> 24),
91  (unsigned char)((arpBind.ip4Addr.to_ulong() & 0x00FF0000) >> 16),
92  (unsigned char)((arpBind.ip4Addr.to_ulong() & 0x0000FF00) >> 8),
93  (unsigned char)((arpBind.ip4Addr.to_ulong() & 0x000000FF) >> 0));
94 }
Ip4Addr ip4Addr
Definition: nts_types.hpp:335
EthAddr macAddr
Definition: nts_types.hpp:334
#define printInfo(callerName, format,...)
A macro to print an information message.
Definition: nts_utils.hpp:169
Here is the caller graph for this function:

◆ printAxisRaw() [1/2]

void printAxisRaw ( const char *  callerName,
AxisRaw  chunk 
)

Prints an Axis raw data chunk (used for debugging).

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]chunkThe raw data chunk to display.

PRINT HELPERS - PROTOTYPE DEFINITIONS

Definition at line 46 of file nts_utils.cpp.

46  {
47  printInfo(callerName, "AxisRaw = {D=0x%16.16lX, K=0x%2.2X, L=%d} \n",
48  chunk.getLE_TData().to_ulong(), chunk.getLE_TKeep().to_int(), chunk.getLE_TLast().to_int());
49 }
LE_tKeep getLE_TKeep(int leHi=64/8-1, int leLo=0) const
Definition: AxisRaw.hpp:264
LE_tData getLE_TData(int leHi=64 -1, int leLo=0) const
Definition: AxisRaw.hpp:260
LE_tLast getLE_TLast() const
Definition: AxisRaw.hpp:268
Here is the call graph for this function:
Here is the caller graph for this function:

◆ printAxisRaw() [2/2]

void printAxisRaw ( const char *  callerName,
const char *  message,
AxisRaw  chunk 
)

Print an Axis raw data chunk prepended with a message.

Parameters
[in]callerNameThe name of the caller process (e.g. "Tle").
[in]messageThe message to prepend.
[in]chunkThe data stream chunk to display.

Definition at line 58 of file nts_utils.cpp.

58  {
59  printInfo(callerName, "%s {D=0x%16.16lX, K=0x%2.2X, L=%d} \n", \
60  message, chunk.getLE_TData().to_ulong(), chunk.getLE_TKeep().to_int(), chunk.getLE_TLast().to_int());
61 }
Here is the call graph for this function:

◆ printDmCmd()

void printDmCmd ( const char *  callerName,
DmCmd  dmCmd 
)

Prints the details of a Data Mover Command (used for debugging).

Parameters
[in]callerNameThe name of the caller process (e.g. "Mwr").
[in]dmCmdThe data mover command to display.

Definition at line 69 of file nts_utils.cpp.

69  {
70  printInfo(callerName, "DmCmd = {BTT=0x%6.6X, TYPE=0x%1.1X DSA=0x%2.2X, EOF=0x%1.1X, DRR=0x%1.1X, SADDR=0x%8.8X, TAG=0x%1.1X} \n", \
71  dmCmd.btt.to_uint(), dmCmd.type.to_uint(), dmCmd.dsa.to_uint(), dmCmd.eof.to_uint(), dmCmd.drr.to_uint(), dmCmd.saddr.to_uint(), dmCmd.tag.to_uint());
72 }
ap_uint< 40 > saddr
ap_uint< 1 > drr
ap_uint< 1 > eof
ap_uint< 4 > tag
ap_uint< 6 > dsa
ap_uint< 23 > btt
Definition: mem.hpp:85
ap_uint< 1 > type

◆ printEthAddr() [1/3]

void printEthAddr ( const char *  callerName,
const char *  message,
EthAddr  ethAddr 
)

Print an ETHERNET MAC address prepended with a message (for debug).

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]messageThe message to prepend.
[in]EthAddrThe Ethernet MAC address to display

Definition at line 237 of file nts_utils.cpp.

237  {
238  printInfo(callerName, "%s ETH Addr = 0x%12.12lX \n", message, ethAddr.to_ulong());
239 }
Here is the caller graph for this function:

◆ printEthAddr() [2/3]

void printEthAddr ( const char *  callerName,
EthAddr  ethAddr 
)

Print an ETHERNET MAC address in NETWORK-BYTE order.

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]EthAddrThe Ethernet MAC address to display

Definition at line 247 of file nts_utils.cpp.

247  {
248  printInfo(callerName, "ETH Addr = 0x%12.12lX \n", ethAddr.to_ulong());
249 }

◆ printEthAddr() [3/3]

void printEthAddr ( EthAddr  ethAddr)

◆ printIp4Addr() [1/2]

void printIp4Addr ( const char *  callerName,
const char *  message,
Ip4Addr  ip4Addr 
)

Print an IPv4 address prepended with a message (used for debugging).

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]messageTthe message to prepend.
[in]Ip4AddrThe IPv4 address to display (in NETWORK-BYTE order).

Definition at line 205 of file nts_utils.cpp.

205  {
206  printInfo(callerName, "%s IPv4 Addr = 0x%8.8X = %3.3d.%3.3d.%3.3d.%3.3d\n",
207  message,
208  ip4Addr.to_uint(),
209  (ip4Addr.to_uint() & 0xFF000000) >> 24,
210  (ip4Addr.to_uint() & 0x00FF0000) >> 16,
211  (ip4Addr.to_uint() & 0x0000FF00) >> 8,
212  (ip4Addr.to_uint() & 0x000000FF) >> 0);
213 }
Here is the caller graph for this function:

◆ printIp4Addr() [2/2]

void printIp4Addr ( const char *  callerName,
Ip4Addr  ip4Addr 
)

Print an IPv4 address encoded in NETWORK-BYTE order.

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]Ip4AddrThe IPv4 address to display (in NETWORK-BYTE order).

Definition at line 221 of file nts_utils.cpp.

221  {
222  printInfo(callerName, "IPv4 Addr = 0x%8.8X = %3.3d.%3.3d.%3.3d.%3.3d\n",
223  ip4Addr.to_uint(),
224  (ip4Addr.to_uint() & 0xFF000000) >> 24,
225  (ip4Addr.to_uint() & 0x00FF0000) >> 16,
226  (ip4Addr.to_uint() & 0x0000FF00) >> 8,
227  (ip4Addr.to_uint() & 0x000000FF) >> 0);
228 }

◆ printLE_SockAddr()

void printLE_SockAddr ( const char *  callerName,
LE_SockAddr  leSockAddr 
)

Print a socket address encoded in LITTLE_ENDIAN order.

Parameters
[in]callerNameThe name of the caller process (e.g. "Mdh").
[in]sockAddrThe socket address to display (in LITTLE-ENDIAN order).

Definition at line 162 of file nts_utils.cpp.

163 {
164  printInfo(callerName, "LE_SocketAddr {IpAddr:TcpPort} = {0x%8.8X:0x%4.4X} \n", \
165  leSockAddr.addr.to_uint(), leSockAddr.port.to_uint());
166 }
LE_Ip4Address addr
Definition: nts_types.hpp:222
LE_Ly4Port port
Definition: nts_types.hpp:223

◆ printLE_SockPair()

void printLE_SockPair ( const char *  callerName,
LE_SocketPair  sockPair 
)

Print a socket pair association in LITTLE-ENDIAN order.

Parameters
[in]callerNameThe name of the caller process (e.g. "Mdh").
[in]sockPairTthe socket pair to display (in LITTLE-ENDIAN order).

Definition at line 102 of file nts_utils.cpp.

102  {
103  printInfo(callerName, "LE_SocketPair {Src,Dst} = {{0x%8.8X:0x%4.4X} {0x%8.8X:0x%4.4X}} \n", \
104  sockPair.src.addr.to_uint(), sockPair.src.port.to_uint(), \
105  sockPair.dst.addr.to_uint(), sockPair.dst.port.to_uint());
106 }
LE_SockAddr dst
Definition: nts_types.hpp:263
LE_SockAddr src
Definition: nts_types.hpp:262

◆ printSockAddr() [1/3]

void printSockAddr ( const char *  callerName,
LE_SockAddr  leSockAddr 
)

Print a socket address.

Parameters
[in]callerNameThe name of the caller process (e.g. "Mdh").
[in]leSockAddrThe socket address to display (in LITTLE-ENDIAN order).

Definition at line 191 of file nts_utils.cpp.

192 {
193  SockAddr sockAddr(byteSwap32(leSockAddr.addr),
194  byteSwap16(leSockAddr.port));
195  printSockAddr(callerName, sockAddr);
196 }
ap_uint< 32 > byteSwap32(ap_uint< 32 > inputValue)
Swap the four bytes of a double-word (.i.e, 32 bits).
Definition: nts_utils.cpp:359
ap_uint< 16 > byteSwap16(ap_uint< 16 > inputValue)
Swap the two bytes of a word (.i.e, 16 bits).
Definition: nts_utils.cpp:349
void printSockAddr(const char *callerName, SockAddr sockAddr)
Print a socket address.
Definition: nts_utils.cpp:174
Here is the call graph for this function:

◆ printSockAddr() [2/3]

void printSockAddr ( const char *  callerName,
SockAddr  sockAddr 
)

Print a socket address.

Parameters
[in]callerNameThe name of the caller process (e.g. "Mdh").
[in]sockAddrThe socket address to display (in NETWORK-BYTE order).

Definition at line 174 of file nts_utils.cpp.

174  {
175  printInfo(callerName, "SocketAddr {IpAddr:TcpPort} = {0x%8.8X:0x%4.4X} = {%3.3d.%3.3d.%3.3d.%3.3d:%5.5d} \n", \
176  sockAddr.addr.to_uint(),
177  sockAddr.port.to_uint(),
178  (sockAddr.addr.to_uint() & 0xFF000000) >> 24,
179  (sockAddr.addr.to_uint() & 0x00FF0000) >> 16,
180  (sockAddr.addr.to_uint() & 0x0000FF00) >> 8,
181  (sockAddr.addr.to_uint() & 0x000000FF) >> 0,
182  sockAddr.port.to_uint());
183 }
Ip4Addr addr
Definition: nts_types.hpp:209
Ly4Port port
Definition: nts_types.hpp:210
Here is the caller graph for this function:

◆ printSockAddr() [3/3]

void printSockAddr ( SockAddr  sockAddr)

◆ printSockPair() [1/2]

void printSockPair ( const char *  callerName,
LE_SocketPair  leSockPair 
)

Print a socket pair association.

Parameters
[in]callerNameThe name of the caller process (e.g. "Mdh").
[in]leSockPairThe socket pair to display (in LITTLE-ENDIAN order).

Definition at line 138 of file nts_utils.cpp.

138  {
139  printInfo(callerName, "SocketPair {Src,Dst} = {0x%8.8X:0x%4.4X, 0x%8.8X:0x%4.4X} = {%3.3d.%3.3d.%3.3d.%3.3d:%5.5d, %3.3d.%3.3d.%3.3d.%3.3d:%5.5d}\n", \
140  byteSwap32(leSockPair.src.addr).to_uint(),
141  byteSwap16(leSockPair.src.port).to_uint(),
142  byteSwap32(leSockPair.dst.addr).to_uint(),
143  byteSwap16(leSockPair.dst.port).to_uint(),
144  (byteSwap32(leSockPair.src.addr).to_uint() & 0xFF000000) >> 24,
145  (byteSwap32(leSockPair.src.addr).to_uint() & 0x00FF0000) >> 16,
146  (byteSwap32(leSockPair.src.addr).to_uint() & 0x0000FF00) >> 8,
147  (byteSwap32(leSockPair.src.addr).to_uint() & 0x000000FF) >> 0,
148  byteSwap16(leSockPair.src.port).to_uint(),
149  (byteSwap32(leSockPair.dst.addr).to_uint() & 0xFF000000) >> 24,
150  (byteSwap32(leSockPair.dst.addr).to_uint() & 0x00FF0000) >> 16,
151  (byteSwap32(leSockPair.dst.addr).to_uint() & 0x0000FF00) >> 8,
152  (byteSwap32(leSockPair.dst.addr).to_uint() & 0x000000FF) >> 0,
153  byteSwap16(leSockPair.dst.port).to_uint());
154 }
Here is the call graph for this function:

◆ printSockPair() [2/2]

void printSockPair ( const char *  callerName,
SocketPair  sockPair 
)

Print a socket pair association.

Parameters
[in]callerNameTthe name of the caller process (e.g. "Mdh").
[in]sockPairThe socket pair to display (in NETWORK-BYTE order).

Definition at line 114 of file nts_utils.cpp.

114  {
115  printInfo(callerName, "SocketPair {Src,Dst} = {0x%8.8X:0x%4.4X, 0x%8.8X:0x%4.4X} = {%3.3d.%3.3d.%3.3d.%3.3d:%5.5d, %3.3d.%3.3d.%3.3d.%3.3d:%5.5d}\n", \
116  sockPair.src.addr.to_uint(),
117  sockPair.src.port.to_uint(),
118  sockPair.dst.addr.to_uint(),
119  sockPair.dst.port.to_uint(),
120  (sockPair.src.addr.to_uint() & 0xFF000000) >> 24,
121  (sockPair.src.addr.to_uint() & 0x00FF0000) >> 16,
122  (sockPair.src.addr.to_uint() & 0x0000FF00) >> 8,
123  (sockPair.src.addr.to_uint() & 0x000000FF) >> 0,
124  sockPair.src.port.to_uint(),
125  (sockPair.dst.addr.to_uint() & 0xFF000000) >> 24,
126  (sockPair.dst.addr.to_uint() & 0x00FF0000) >> 16,
127  (sockPair.dst.addr.to_uint() & 0x0000FF00) >> 8,
128  (sockPair.dst.addr.to_uint() & 0x000000FF) >> 0,
129  sockPair.dst.port.to_uint());
130 }
SockAddr dst
Definition: nts_types.hpp:249
SockAddr src
Definition: nts_types.hpp:248
Here is the caller graph for this function:

◆ printTcpPort() [1/2]

void printTcpPort ( const char *  callerName,
TcpPort  tcpPort 
)

Print a TCP port.

Parameters
[in]callerNameThe name of the caller process (e.g. "RXe").
[in]TcpPortthe TCP port to display (in NETWORK-BYTE order).

Definition at line 257 of file nts_utils.cpp.

257  {
258  printInfo(callerName, "TCP Port = 0x%4.4X = %5.5d\n", \
259  tcpPort.to_uint(), tcpPort.to_uint());
260 }
Here is the caller graph for this function:

◆ printTcpPort() [2/2]

void printTcpPort ( TcpPort  tcpPort)

Variable Documentation

◆ gFatalError

bool gFatalError
extern

Definition at line 152 of file tb_nal.cpp.

◆ gSimCycCnt

unsigned int gSimCycCnt
extern

Definition at line 150 of file tb_nal.cpp.

◆ gTraceEvent

bool gTraceEvent
extern

HELPERS FOR THE DEBUGGING TRACES FYI: The global variable 'gTraceEvent' is set whenever a trace call is done.

HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)

Definition at line 151 of file tb_nal.cpp.