1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/***************************************************************************/
/* Copyright (c) 2024 Microsoft Corporation */
/* Copyright (c) 2026 Eclipse ThreadX contributors */
/* */
/* This program and the accompanying materials are made available under */
/* the terms of the MIT License which is available at */
/* https://opensource.org/licenses/MIT. */
/* */
/* SPDX-License-Identifier: MIT */
/***************************************************************************/
#include "tx_api.h"
#include "fx_api.h"
#include "nx_api.h"
#include "nxd_ftp_server.h"
extern void test_control_return(UINT);
#if defined(FEATURE_NX_IPV6)
#define DEMO_STACK_SIZE 4096
/* Define the counters used in the demo application... */
static ULONG error_counter = 0;
static TX_THREAD test_thread;
static void thread_test_entry(ULONG thread_input);
#ifdef CTEST
VOID test_application_define(void *first_unused_memory)
#else
void netx_ftp_parse_ipv6_address_test_application_define(void *first_unused_memory)
#endif
{
UCHAR *pointer;
/* Setup the working pointer. */
pointer = (UCHAR *) first_unused_memory;
/* Create a helper thread for the server. */
tx_thread_create(&test_thread, "FTP test thread", thread_test_entry, 0,
pointer, DEMO_STACK_SIZE,
4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
pointer = pointer + DEMO_STACK_SIZE;
}
/* Define the helper FTP server thread. */
void thread_test_entry(ULONG thread_input)
{
UINT i;
UINT status;
UCHAR *buffer_ptr;
UCHAR valid_buffer[100];
/* Print out test information banner. */
printf("NetX Test: FTP Parse IPv6 Address Test...............................");
/* Check for earlier error. */
if(error_counter)
{
printf("ERROR!\n");
test_control_return(1);
}
memset(valid_buffer, 0xFF, sizeof(valid_buffer));
/* Invalid colons 1. */
buffer_ptr = "1:2:3:4:5:6:7:8:9:10";
status = _nx_ftp_utility_parse_IPv6_address(buffer_ptr, 21, (NXD_ADDRESS *)(&valid_buffer));
if (status != NX_FTP_INVALID_ADDRESS)
error_counter++;
/* Invalid conlons 2. */
buffer_ptr = "1:2:3:4:5:6::8:9:10";
status = _nx_ftp_utility_parse_IPv6_address(buffer_ptr, 20, (NXD_ADDRESS *)(&valid_buffer));
if (status != NX_FTP_INVALID_ADDRESS)
error_counter++;
/* Invalid conlons 3. */
buffer_ptr = "1:2:3::4:5:6:7:8";
status = _nx_ftp_utility_parse_IPv6_address(buffer_ptr, 17, (NXD_ADDRESS *)(&valid_buffer));
if (status != NX_FTP_INVALID_ADDRESS)
error_counter++;
/* Check write overflow. */
for (i = sizeof(NXD_ADDRESS); i < sizeof(valid_buffer); i++)
{
if (valid_buffer[i] != 0xFF)
{
error_counter++;
break;
}
}
if(error_counter)
{
printf("ERROR!\n");
test_control_return(1);
}
else
{
printf("SUCCESS!\n");
test_control_return(0);
}
}
#else
#ifdef CTEST
VOID test_application_define(void *first_unused_memory)
#else
void netx_ftp_parse_ipv6_address_test_application_define(void *first_unused_memory)
#endif
{
/* Print out test information banner. */
printf("NetX Test: FTP Parse IPv6 Address Test...............................N/A\n");
test_control_return(3);
}
#endif
|