149 #if defined(__linux__) 154 #if defined(WIN32) || defined (WIN64) 155 #define snprintf(dst, ...) _snprintf_s((dst), _countof(dst), __VA_ARGS__) 162 #if defined(__linux__) 163 static void catch_signal(
int sig)
174 int numPacketsDiscard=0;
175 int numBytesDiscard=0;
187 const char *ntplFilter;
190 #if defined(__linux__) 191 signal(SIGINT, catch_signal);
198 fprintf(stderr,
"NT_Init() failed: %s\n", errorBuffer);
202 if ((status =
NT_InfoOpen(&hInfo,
"inline_example")) != NT_SUCCESS) {
205 fprintf(stderr,
"NT_InfoOpen() failed: %s\n", errorBuffer);
212 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
215 fprintf(stderr,
"NT_InfoRead() failed: %s\n", errorBuffer);
222 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
225 fprintf(stderr,
"NT_InfoRead() failed: %s\n", errorBuffer);
235 if ((status =
NT_InfoRead(hInfo, &info)) != NT_SUCCESS) {
238 fprintf(stderr,
"NT_InfoRead() failed: %s\n", errorBuffer);
return -1;
254 fprintf(stderr,
"NT_InfoClose() failed: %s\n", errorBuffer);
259 if (!isTxSupported) {
260 fprintf(stderr,
"error: Tx is not supported on this adapter.\n");
265 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
268 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
275 if ((status =
NT_NTPL(hCfgStream,
"Setup[TxDescriptor=Dyn;TxPorts=0;UseWL=True] = StreamId == 1",
279 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
286 ntplFilter =
"Assign[streamid=1;color=7;Descriptor=Dyn3] = All";
288 ntplFilter =
"Assign[streamid=1;color=7;txport=1] = All";
294 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
306 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
314 fprintf(stderr,
"NT_NetRxOpen() failed: %s\n", errorBuffer);
319 printf(
"Waiting for the first packet\n");
321 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
322 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
328 fprintf(stderr,
"NT_NetRxGet() failed: %s\n", errorBuffer);
339 fprintf(stderr,
"NT_NetRxRelease() failed: %s\n", errorBuffer);
355 NT_NET_SET_PKT_TXIGNORE(hNetBuf, 1);
358 numBytesDiscard+=NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf);
360 printf(
"Discarded: %016llx - %d bytes\n", (
unsigned long long)
NT_NET_GET_PKT_TIMESTAMP(hNetBuf), NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf));
363 numBytes+=NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf);
365 printf(
"Forwarded: %016llx - %d bytes\n", (
unsigned long long)
NT_NET_GET_PKT_TIMESTAMP(hNetBuf), NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf));
375 fprintf(stderr,
"NT_NetRxRelease() failed: %s\n", errorBuffer);
381 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
382 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
388 fprintf(stderr,
"NT_NetRxGet() failed: %s\n", errorBuffer);
396 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
399 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
404 snprintf(tmpBuffer,
sizeof(tmpBuffer),
"delete=%d", ntplInfo.
ntplId);
408 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
420 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
427 printf(
"Done: Discarded %d packets out of %d, %d bytes out of %d\n",
428 numPacketsDiscard, numPackets+numPacketsDiscard, numBytes, numBytes+numBytesDiscard);