Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿宅想要养只猫
Kernel Liteos A
提交
9b25a48d
K
Kernel Liteos A
项目概览
阿宅想要养只猫
/
Kernel Liteos A
与 Fork 源项目一致
Fork自
OpenHarmony / Kernel Liteos A
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9b25a48d
编写于
9月 07, 2020
作者:
C
c00546070
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Description: fix indentations
Reviewed-by: jianghan
上级
ff52e24f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
409 addition
and
409 deletion
+409
-409
net/lwip-2.1/enhancement/src/api_shell.c
net/lwip-2.1/enhancement/src/api_shell.c
+409
-409
未找到文件。
net/lwip-2.1/enhancement/src/api_shell.c
浏览文件 @
9b25a48d
...
...
@@ -208,31 +208,31 @@ int netstat_netconn_sendq(struct netconn *conn);
#define PRINT_BUF_LEN 1024
#define MAX_MACADDR_STRING_LENGTH 18
/* including NULL */
#define CONVERT_STRING_TO_HEX(_src, _dest) \
{ \
const char *_srcString = (char *)_src;
\
_dest = 0;
\
while (*_srcString) {
\
_dest = (unsigned char)((_dest << 4) & 0xFF);
\
if ((*_srcString >= 48) && (*_srcString <= 57))
/* between 0 to 9 */
\
_dest |= (unsigned char)(*_srcString - 48);
\
else if ((*_srcString >= 65 && *_srcString <= 70))
/* between A to F */
\
_dest |= (unsigned char)((*_srcString - 65) + 10);
\
else if ((*_srcString >= 97 && *_srcString <= 102))
/* between a to f */
\
_dest |= (unsigned char)((*_srcString - 97) + 10);
\
else break;
\
++_srcString;
\
}
\
#define CONVERT_STRING_TO_HEX(_src, _dest)
\
{
\
const char *_srcString = (char *)_src;
\
_dest = 0;
\
while (*_srcString) {
\
_dest = (unsigned char)((_dest << 4) & 0xFF);
\
if ((*_srcString >= 48) && (*_srcString <= 57))
/* between 0 to 9 */
\
_dest |= (unsigned char)(*_srcString - 48);
\
else if ((*_srcString >= 65 && *_srcString <= 70))
/* between A to F */
\
_dest |= (unsigned char)((*_srcString - 65) + 10);
\
else if ((*_srcString >= 97 && *_srcString <= 102))
/* between a to f */
\
_dest |= (unsigned char)((*_srcString - 97) + 10);
\
else break;
\
++_srcString;
\
}
\
}
#define ERR_IFCONFIG_STRING_PUT(ret, str)
do
\
{
\
(ret) = snprintf_s(ifconfig_cmd->cb_print_buf + ifconfig_cmd->print_len,
\
PRINT_BUF_LEN - ifconfig_cmd->print_len, \
((PRINT_BUF_LEN - ifconfig_cmd->print_len) - 1), (str)); \
if (((ret) > 0) && ((unsigned int)(ret) < (PRINT_BUF_LEN - ifconfig_cmd->print_len))) \
ifconfig_cmd->print_len += (unsigned int)(ret);
\
} while(0)
#define ERR_IFCONFIG_STRING_PUT(ret, str)
\
do {
\
(ret) = snprintf_s(ifconfig_cmd->cb_print_buf + ifconfig_cmd->print_len,
\
PRINT_BUF_LEN - ifconfig_cmd->print_len, \
((PRINT_BUF_LEN - ifconfig_cmd->print_len) - 1), (str)); \
if (((ret) > 0) && ((unsigned int)(ret) < (PRINT_BUF_LEN - ifconfig_cmd->print_len))) \
ifconfig_cmd->print_len += (unsigned int)(ret);
\
} while (0) \
#define LWIP_MSECS_TO_SECS(time_in_msecs) (time_in_msecs / 1000)
struct
ifconfig_option
{
...
...
@@ -1922,149 +1922,149 @@ SHELLCMD_ENTRY(ping_shellcmd, CMD_TYPE_EX, "ping", XARGS, (CmdCallBackFunc)osShe
u32_t
osShellPing
(
int
argc
,
const
char
**
argv
)
{
int
sfd
;
struct
sockaddr_in
to
;
struct
icmp_echo_hdr
iecho
;
struct
pbuf
*
pbuf_resp
=
NULL
;
struct
icmp_echo_hdr
*
iecho_resp
=
NULL
;
struct
ip_hdr
*
iphdr_resp
=
NULL
;
s16_t
ip_hlen
;
ip_addr_t
dst_ipaddr
;
fd_set
fdReadSet
;
struct
timeval
stTimeVal
;
struct
timespec
start
,
end
;
int
ret
;
s32_t
i
;
long
rtt
;
s32_t
pingcount
;
char
buf
[
50
];
if
(
!
tcpip_init_finish
)
{
PRINTK
(
"ping: tcpip_init have not been called
\n
"
);
return
LOS_NOK
;
}
int
sfd
;
struct
sockaddr_in
to
;
struct
icmp_echo_hdr
iecho
;
struct
pbuf
*
pbuf_resp
=
NULL
;
struct
icmp_echo_hdr
*
iecho_resp
=
NULL
;
struct
ip_hdr
*
iphdr_resp
=
NULL
;
s16_t
ip_hlen
;
ip_addr_t
dst_ipaddr
;
fd_set
fdReadSet
;
struct
timeval
stTimeVal
;
struct
timespec
start
,
end
;
int
ret
;
s32_t
i
;
long
rtt
;
s32_t
pingcount
;
char
buf
[
50
];
if
((
argc
<
1
)
||
(
argv
==
NULL
))
{
PRINTK
(
"ping : invalid arguments, ping command receives ip as command line argument
\n
"
);
return
LOS_NOK
;
}
if
(
argc
==
2
)
{
pingcount
=
atoi
(
argv
[
1
]);
if
(
pingcount
<
1
)
pingcount
=
LWIP_SHELL_CMD_PING_RETRY_TIMES
;
}
else
{
pingcount
=
LWIP_SHELL_CMD_PING_RETRY_TIMES
;
}
PRINTK
(
"ping %u packets start.
\n
"
,
pingcount
);
/* initialize dst IP address */
if
(
!
tcpip_init_finish
)
{
PRINTK
(
"ping: tcpip_init have not been called
\n
"
);
return
LOS_NOK
;
}
if
((
argc
<
1
)
||
(
argv
==
NULL
))
{
PRINTK
(
"ping : invalid arguments, ping command receives ip as command line argument
\n
"
);
return
LOS_NOK
;
}
if
(
argc
==
2
)
{
pingcount
=
atoi
(
argv
[
1
]);
if
(
pingcount
<
1
)
pingcount
=
LWIP_SHELL_CMD_PING_RETRY_TIMES
;
}
else
{
pingcount
=
LWIP_SHELL_CMD_PING_RETRY_TIMES
;
}
PRINTK
(
"ping %u packets start.
\n
"
,
pingcount
);
/* initialize dst IP address */
#if LWIP_DNS
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
=
get_hostip
(
argv
[
0
]);
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
=
get_hostip
(
argv
[
0
]);
#else
/* LWIP_DNS */
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
=
inet_addr
(
argv
[
0
]);
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
=
inet_addr
(
argv
[
0
]);
#endif
/* LWIP_DNS */
to
.
sin_family
=
AF_INET
;
to
.
sin_addr
.
s_addr
=
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
;
to
.
sin_port
=
0
;
to
.
sin_family
=
AF_INET
;
to
.
sin_addr
.
s_addr
=
ip_2_ip4
(
&
dst_ipaddr
)
->
addr
;
to
.
sin_port
=
0
;
if
(
to
.
sin_addr
.
s_addr
==
IPADDR_NONE
||
to
.
sin_addr
.
s_addr
==
IPADDR_ANY
)
{
PRINTK
(
"ping : invalid ip address : %s
\n
"
,
argv
[
0
]);
return
LOS_NOK
;
}
if
(
to
.
sin_addr
.
s_addr
==
IPADDR_NONE
||
to
.
sin_addr
.
s_addr
==
IPADDR_ANY
)
{
PRINTK
(
"ping : invalid ip address : %s
\n
"
,
argv
[
0
]);
return
LOS_NOK
;
}
sfd
=
lwip_socket
(
PF_INET
,
SOCK_RAW
,
IPPROTO_ICMP
);
if
(
sfd
==
-
1
)
{
PRINTK
(
"ping : failed, socket creation failed
\n
"
);
return
LOS_NOK
;
}
sfd
=
lwip_socket
(
PF_INET
,
SOCK_RAW
,
IPPROTO_ICMP
);
if
(
sfd
==
-
1
)
{
PRINTK
(
"ping : failed, socket creation failed
\n
"
);
return
LOS_NOK
;
}
pbuf_resp
=
pbuf_alloc
(
PBUF_RAW
,
IP_HLEN
+
sizeof
(
struct
icmp_echo_hdr
),
PBUF_RAM
);
if
(
pbuf_resp
==
NULL
)
{
PRINTK
(
"ping : memory allocation failed
\n
"
);
goto
FAILURE
;
}
pbuf_resp
=
pbuf_alloc
(
PBUF_RAW
,
IP_HLEN
+
sizeof
(
struct
icmp_echo_hdr
),
PBUF_RAM
);
if
(
pbuf_resp
==
NULL
)
{
PRINTK
(
"ping : memory allocation failed
\n
"
);
goto
FAILURE
;
}
for
(
i
=
0
;
i
<
pingcount
;
i
++
)
{
(
void
)
memset_s
(
&
iecho
,
sizeof
(
iecho
),
0
,
sizeof
(
iecho
));
ICMPH_TYPE_SET
(
&
iecho
,
(
u8_t
)
ICMP_ECHO
);
iecho
.
chksum
=
inet_chksum
(
&
iecho
,
sizeof
(
struct
icmp_echo_hdr
));
for
(
i
=
0
;
i
<
pingcount
;
i
++
)
{
(
void
)
memset_s
(
&
iecho
,
sizeof
(
iecho
),
0
,
sizeof
(
iecho
));
ICMPH_TYPE_SET
(
&
iecho
,
(
u8_t
)
ICMP_ECHO
);
iecho
.
chksum
=
inet_chksum
(
&
iecho
,
sizeof
(
struct
icmp_echo_hdr
));
ret
=
lwip_sendto
(
sfd
,
&
iecho
,
sizeof
(
struct
icmp_echo_hdr
),
0
,
(
struct
sockaddr
*
)
&
to
,
(
socklen_t
)
sizeof
(
to
));
if
(
ret
==
-
1
)
{
PRINTK
(
"ping : sending ICMP echo msg failed
\n
"
);
goto
FAILURE
;
}
ret
=
lwip_sendto
(
sfd
,
&
iecho
,
sizeof
(
struct
icmp_echo_hdr
),
0
,
(
struct
sockaddr
*
)
&
to
,
(
socklen_t
)
sizeof
(
to
));
if
(
ret
==
-
1
)
{
PRINTK
(
"ping : sending ICMP echo msg failed
\n
"
);
goto
FAILURE
;
}
/* capture the start time to calculate round trip time */
(
void
)
clock_gettime
(
CLOCK_MONOTONIC_RAW
,
&
start
);
/* Wait in select for ICMP response msg */
FD_ZERO
(
&
fdReadSet
);
FD_SET
(
sfd
,
&
fdReadSet
);
stTimeVal
.
tv_sec
=
LWIP_SHELL_CMD_PING_TIMEOUT
/
1000
;
stTimeVal
.
tv_usec
=
0
;
/* capture the start time to calculate round trip time */
(
void
)
clock_gettime
(
CLOCK_MONOTONIC_RAW
,
&
start
);
/* Wait in select for ICMP response msg */
FD_ZERO
(
&
fdReadSet
);
FD_SET
(
sfd
,
&
fdReadSet
);
stTimeVal
.
tv_sec
=
LWIP_SHELL_CMD_PING_TIMEOUT
/
1000
;
stTimeVal
.
tv_usec
=
0
;
DO_SELECT:
ret
=
select
(
sfd
+
1
,
&
fdReadSet
,
0
,
0
,
&
stTimeVal
);
if
(
ret
<
0
)
{
PRINTK
(
"ping : select failure
\n
"
);
goto
FAILURE
;
}
else
if
(
ret
==
0
)
{
PRINTK
(
"Request timed out.
\n
"
);
continue
;
}
ret
=
select
(
sfd
+
1
,
&
fdReadSet
,
0
,
0
,
&
stTimeVal
);
if
(
ret
<
0
)
{
PRINTK
(
"ping : select failure
\n
"
);
goto
FAILURE
;
}
else
if
(
ret
==
0
)
{
PRINTK
(
"Request timed out.
\n
"
);
continue
;
}
/* capture the end time to calculate round trip time */
(
void
)
clock_gettime
(
CLOCK_MONOTONIC_RAW
,
&
end
);
rtt
=
((
end
.
tv_sec
-
start
.
tv_sec
)
*
1000
+
(
end
.
tv_nsec
-
start
.
tv_nsec
)
/
1000000
);
/* capture the end time to calculate round trip time */
(
void
)
clock_gettime
(
CLOCK_MONOTONIC_RAW
,
&
end
);
rtt
=
((
end
.
tv_sec
-
start
.
tv_sec
)
*
1000
+
(
end
.
tv_nsec
-
start
.
tv_nsec
)
/
1000000
);
ret
=
lwip_recv
(
sfd
,
pbuf_resp
->
payload
,
pbuf_resp
->
len
,
0
);
if
(
ret
==
-
1
)
{
PRINTK
(
"ping : receiving ICMP echo response msg failed
\n
"
);
goto
FAILURE
;
}
/* Accessing ip header and icmp header */
iphdr_resp
=
(
struct
ip_hdr
*
)(
pbuf_resp
->
payload
);
ip_hlen
=
(
s16_t
)(
IPH_HL
(
iphdr_resp
)
*
4
);
if
(
pbuf_header
(
pbuf_resp
,
(
s16_t
)(
-
ip_hlen
)))
{
/* this failure will never happen, but failure handle is written just to be in safe side */
PRINTK
(
"ping : memory management failure
\n
"
);
goto
FAILURE
;
}
iecho_resp
=
(
struct
icmp_echo_hdr
*
)
pbuf_resp
->
payload
;
/* Reverting back pbuf to its original state */
if
(
pbuf_header
(
pbuf_resp
,
ip_hlen
))
{
/* this failure will never happen, but failure handle is written just to be in safe side */
PRINTK
(
"ping : memory management failure
\n
"
);
goto
FAILURE
;
}
if
(
iphdr_resp
->
src
.
addr
==
to
.
sin_addr
.
s_addr
)
{
if
(
ICMPH_TYPE
(
iecho_resp
)
==
ICMP_ER
)
{
PRINTK
(
"[%u]Reply from %s: time=%ims TTL=%u
\n
"
,
i
,
inet_ntoa_r
(
to
.
sin_addr
.
s_addr
,
buf
,
sizeof
(
buf
)),
rtt
,
iphdr_resp
->
_ttl
);
}
else
if
(
ICMPH_TYPE
(
iecho_resp
)
==
ICMP_ECHO
)
{
/* If ping self, stack will receive a ICMP_ECHO request message flowing a ICMP_ER reply message,
and we need reply only, do select again */
goto
DO_SELECT
;
}
ret
=
lwip_recv
(
sfd
,
pbuf_resp
->
payload
,
pbuf_resp
->
len
,
0
);
if
(
ret
==
-
1
)
{
PRINTK
(
"ping : receiving ICMP echo response msg failed
\n
"
);
goto
FAILURE
;
}
/* Accessing ip header and icmp header */
iphdr_resp
=
(
struct
ip_hdr
*
)(
pbuf_resp
->
payload
);
ip_hlen
=
(
s16_t
)(
IPH_HL
(
iphdr_resp
)
*
4
);
if
(
pbuf_header
(
pbuf_resp
,
(
s16_t
)(
-
ip_hlen
)))
{
/* this failure will never happen, but failure handle is written just to be in safe side */
PRINTK
(
"ping : memory management failure
\n
"
);
goto
FAILURE
;
}
iecho_resp
=
(
struct
icmp_echo_hdr
*
)
pbuf_resp
->
payload
;
/* Reverting back pbuf to its original state */
if
(
pbuf_header
(
pbuf_resp
,
ip_hlen
))
{
/* this failure will never happen, but failure handle is written just to be in safe side */
PRINTK
(
"ping : memory management failure
\n
"
);
goto
FAILURE
;
}
if
(
iphdr_resp
->
src
.
addr
==
to
.
sin_addr
.
s_addr
)
{
if
(
ICMPH_TYPE
(
iecho_resp
)
==
ICMP_ER
)
{
PRINTK
(
"[%u]Reply from %s: time=%ims TTL=%u
\n
"
,
i
,
inet_ntoa_r
(
to
.
sin_addr
.
s_addr
,
buf
,
sizeof
(
buf
)),
rtt
,
iphdr_resp
->
_ttl
);
}
else
if
(
ICMPH_TYPE
(
iecho_resp
)
==
ICMP_ECHO
)
{
/* If ping self, stack will receive a ICMP_ECHO request message flowing a ICMP_ER reply message,
and we need reply only, do select again */
goto
DO_SELECT
;
}
}
}
}
(
void
)
lwip_close
(
sfd
);
(
void
)
pbuf_free
(
pbuf_resp
);
return
LOS_OK
;
(
void
)
lwip_close
(
sfd
);
(
void
)
pbuf_free
(
pbuf_resp
);
return
LOS_OK
;
FAILURE:
(
void
)
lwip_close
(
sfd
);
if
(
pbuf_resp
!=
NULL
)
{
(
void
)
pbuf_free
(
pbuf_resp
);
}
(
void
)
lwip_close
(
sfd
);
if
(
pbuf_resp
!=
NULL
)
{
(
void
)
pbuf_free
(
pbuf_resp
);
}
return
LOS_NOK
;
return
LOS_NOK
;
}
#ifdef LOSCFG_SHELL
...
...
@@ -2389,11 +2389,11 @@ LWIP_STATIC int create_ping6_socket(u8_t type, const void *param)
}
/*
Function to parse the command line args for ping6 shell utility
@return:
Success: ERR_OK
Failure: -1
*/
*
Function to parse the command line args for ping6 shell utility
*
@return:
*
Success: ERR_OK
*
Failure: -1
*/
LWIP_STATIC
int
parse_args_ping6
(
int
argc
,
const
char
**
argv
,
ping6_args_t
*
ping6_params
)
{
int
pingcount
;
...
...
@@ -2581,43 +2581,43 @@ SHELLCMD_ENTRY(ping6_shellcmd, CMD_TYPE_EX, "ping6", XARGS, (CmdCallBackFunc)osS
#endif
/* LOSCFG_SHELL_CMD_DEBUG */
#endif
/* LWIP_IPV6 */
#if
LWIP_SNTP
#if LWIP_SNTP
u32_t
osShellNtpdate
(
int
argc
,
const
char
**
argv
)
{
int
server_num
=
0
;
char
*
ret
=
NULL
;
struct
timeval
get_time
;
char
buf
[
50
];
int
server_num
=
0
;
char
*
ret
=
NULL
;
struct
timeval
get_time
;
char
buf
[
50
];
(
void
)
memset_s
(
&
get_time
,
sizeof
(
struct
timeval
),
0
,
sizeof
(
struct
timeval
));
(
void
)
memset_s
(
&
get_time
,
sizeof
(
struct
timeval
),
0
,
sizeof
(
struct
timeval
));
if
(
!
tcpip_init_finish
)
{
PRINTK
(
"%s: tcpip_init have not been called
\n
"
,
__FUNCTION__
);
return
LOS_NOK
;
}
if
(
!
tcpip_init_finish
)
{
PRINTK
(
"%s: tcpip_init have not been called
\n
"
,
__FUNCTION__
);
return
LOS_NOK
;
}
if
(
argc
<
1
||
argv
==
NULL
)
{
goto
usage
;
}
if
(
argc
<
1
||
argv
==
NULL
)
{
goto
usage
;
}
server_num
=
lwip_sntp_start
(
argc
,
(
char
**
)
argv
,
&
get_time
);
if
(
server_num
>=
0
&&
server_num
<
argc
)
{
ret
=
ctime_r
((
time_t
*
)
&
get_time
.
tv_sec
,
buf
);
if
(
ret
!=
NULL
)
{
PRINTK
(
"time server %s: %s
\n
"
,
argv
[
server_num
],
ret
);
server_num
=
lwip_sntp_start
(
argc
,
(
char
**
)
argv
,
&
get_time
);
if
(
server_num
>=
0
&&
server_num
<
argc
)
{
ret
=
ctime_r
((
time_t
*
)
&
get_time
.
tv_sec
,
buf
);
if
(
ret
!=
NULL
)
{
PRINTK
(
"time server %s: %s
\n
"
,
argv
[
server_num
],
ret
);
}
else
{
PRINTK
(
"ctime return null error
\n
"
);
}
}
else
{
PRINTK
(
"ctime return null error
\n
"
);
PRINTK
(
"no server suitable for synchronization found
\n
"
);
}
}
else
{
PRINTK
(
"no server suitable for synchronization found
\n
"
);
}
return
LOS_OK
;
return
LOS_OK
;
usage:
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"ntpdate [SERVER_IP1] [SERVER_IP2] ...
\n
"
);
return
LOS_NOK
;
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"ntpdate [SERVER_IP1] [SERVER_IP2] ...
\n
"
);
return
LOS_NOK
;
}
#ifdef LOSCFG_SHELL_CMD_DEBUG
...
...
@@ -3548,113 +3548,113 @@ SHELLCMD_ENTRY(dhclient_shellcmd, CMD_TYPE_EX, "dhclient", XARGS, (CmdCallBackFu
#define MAX_SIZE 1024
void
tcp_access
(
int
sockfd
)
{
size_t
n
,
i
;
ssize_t
ret
;
char
msg
[
MAX_SIZE
]
=
{
0
};
while
(
1
)
{
PRINTK
(
"waiting for recv
\n
"
);
(
void
)
memset_s
(
msg
,
MAX_SIZE
,
0
,
MAX_SIZE
);
ret
=
recv
(
sockfd
,
msg
,
MAX_SIZE
-
1
,
0
);
if
(
ret
<
0
)
{
PRINTK
(
"recv failed, %d.
\n
"
,
(
u32_t
)
ret
);
(
void
)
closesocket
(
sockfd
);
return
;
}
else
if
(
ret
==
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"client disconnect.
\n
"
);
return
;
}
n
=
strlen
(
msg
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
if
(
msg
[
i
]
>=
'a'
&&
msg
[
i
]
<=
'z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
(
'A'
-
'a'
));
}
else
if
(
msg
[
i
]
>=
'A'
&&
msg
[
i
]
<=
'Z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
(
'a'
-
'A'
));
}
}
size_t
n
,
i
;
ssize_t
ret
;
char
msg
[
MAX_SIZE
]
=
{
0
};
while
(
1
)
{
PRINTK
(
"waiting for recv
\n
"
);
(
void
)
memset_s
(
msg
,
MAX_SIZE
,
0
,
MAX_SIZE
);
ret
=
recv
(
sockfd
,
msg
,
MAX_SIZE
-
1
,
0
);
if
(
ret
<
0
)
{
PRINTK
(
"recv failed, %d.
\n
"
,
(
u32_t
)
ret
);
(
void
)
closesocket
(
sockfd
);
return
;
}
else
if
(
ret
==
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"client disconnect.
\n
"
);
return
;
}
if
(
send
(
sockfd
,
msg
,
n
,
0
)
<
0
)
{
PRINTK
(
"send failed!
\r\n
"
);
continue
;
n
=
strlen
(
msg
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
if
(
msg
[
i
]
>=
'a'
&&
msg
[
i
]
<=
'z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
(
'A'
-
'a'
));
}
else
if
(
msg
[
i
]
>=
'A'
&&
msg
[
i
]
<=
'Z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
(
'a'
-
'A'
));
}
}
if
(
send
(
sockfd
,
msg
,
n
,
0
)
<
0
)
{
PRINTK
(
"send failed!
\r\n
"
);
continue
;
}
}
}
}
u32_t
osTcpserver
(
int
argc
,
const
char
**
argv
)
{
uint16_t
port
;
int
sockfd
=
-
1
;
int
ret
;
struct
sockaddr_in
seraddr
;
struct
sockaddr_in
cliaddr
;
u32_t
cliaddr_size
=
(
u32_t
)
sizeof
(
cliaddr
);
int
reuse
,
iPortVal
;
if
(
tcpip_init_finish
==
0
)
{
PRINTK
(
"tcpip_init have not been called
\n
"
);
return
LOS_NOK
;
}
uint16_t
port
;
int
sockfd
=
-
1
;
int
ret
;
struct
sockaddr_in
seraddr
;
struct
sockaddr_in
cliaddr
;
u32_t
cliaddr_size
=
(
u32_t
)
sizeof
(
cliaddr
);
int
reuse
,
iPortVal
;
if
(
argc
<
1
||
argv
==
NULL
)
{
PRINTK
(
"
\n
Usage: tcpserver <port>
\n
"
);
return
LOS_NOK
;
}
if
(
tcpip_init_finish
==
0
)
{
PRINTK
(
"tcpip_init have not been called
\n
"
);
return
LOS_NOK
;
}
iPortVal
=
atoi
(
argv
[
0
]);
/* Port 0 not supported , negative values not supported , max port limit is 65535 */
if
(
iPortVal
<=
0
||
iPortVal
>
65535
)
{
PRINTK
(
"
\n
Usage: Invalid port
\n
"
);
return
LOS_NOK
;
}
if
(
argc
<
1
||
argv
==
NULL
)
{
PRINTK
(
"
\n
Usage: tcpserver <port>
\n
"
);
return
LOS_NOK
;
}
port
=
(
uint16_t
)
iPortVal
;
iPortVal
=
atoi
(
argv
[
0
]);
/* Port 0 not supported , negative values not supported , max port limit is 65535 */
if
(
iPortVal
<=
0
||
iPortVal
>
65535
)
{
PRINTK
(
"
\n
Usage: Invalid port
\n
"
);
return
LOS_NOK
;
}
/* removed the print of argv[1] as its accessing argv[1] without verifying argc and
* argv[1] not used anywhere else */
PRINTK
(
"argv[0]:%s, argc:%d
\r\n
"
,
argv
[
0
],
argc
);
sockfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
sockfd
<
0
)
{
PRINTK
(
"
\n
Usage: create socket fail!
\n
"
);
return
LOS_NOK
;
}
reuse
=
1
;
if
(
setsockopt
(
sockfd
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
reuse
,
sizeof
(
reuse
))
!=
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"set SO_REUSEADDR failed
\n
"
);
return
LOS_NOK
;
}
port
=
(
uint16_t
)
iPortVal
;
(
void
)
memset_s
(
&
seraddr
,
sizeof
(
seraddr
),
0
,
sizeof
(
seraddr
));
seraddr
.
sin_family
=
AF_INET
;
seraddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
seraddr
.
sin_port
=
htons
(
port
);
/* removed the print of argv[1] as its accessing argv[1] without verifying argc and
* argv[1] not used anywhere else */
PRINTK
(
"argv[0]:%s, argc:%d
\r\n
"
,
argv
[
0
],
argc
);
sockfd
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
sockfd
<
0
)
{
PRINTK
(
"
\n
Usage: create socket fail!
\n
"
);
return
LOS_NOK
;
}
reuse
=
1
;
if
(
setsockopt
(
sockfd
,
SOL_SOCKET
,
SO_REUSEADDR
,
(
const
char
*
)
&
reuse
,
sizeof
(
reuse
))
!=
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"set SO_REUSEADDR failed
\n
"
);
return
LOS_NOK
;
}
ret
=
bind
(
sockfd
,
(
struct
sockaddr
*
)
&
seraddr
,
sizeof
(
seraddr
));
if
(
ret
<
0
)
{
PRINTK
(
"bind ip and port failed"
);
(
void
)
closesocket
(
sockfd
);
return
LOS_NOK
;
}
(
void
)
memset_s
(
&
seraddr
,
sizeof
(
seraddr
),
0
,
sizeof
(
seraddr
));
seraddr
.
sin_family
=
AF_INET
;
seraddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
seraddr
.
sin_port
=
htons
(
port
);
ret
=
listen
(
sockfd
,
5
);
if
(
ret
<
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"listen failed
\n
"
);
return
LOS_NOK
;
}
while
(
1
)
{
PRINTK
(
"waiting for accept
\n
"
);
(
void
)
memset_s
(
&
cliaddr
,
sizeof
(
struct
sockaddr_in
),
0
,
sizeof
(
struct
sockaddr_in
));
ret
=
(
int
)
accept
(
sockfd
,
(
struct
sockaddr
*
)
&
cliaddr
,
&
cliaddr_size
);
ret
=
bind
(
sockfd
,
(
struct
sockaddr
*
)
&
seraddr
,
sizeof
(
seraddr
));
if
(
ret
<
0
)
{
PRINTK
(
"bind ip and port failed"
);
(
void
)
closesocket
(
sockfd
);
return
LOS_NOK
;
}
ret
=
listen
(
sockfd
,
5
);
if
(
ret
<
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"Accept failed, %d
\n
"
,
ret
);
break
;
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"listen failed
\n
"
);
return
LOS_NOK
;
}
while
(
1
)
{
PRINTK
(
"waiting for accept
\n
"
);
(
void
)
memset_s
(
&
cliaddr
,
sizeof
(
struct
sockaddr_in
),
0
,
sizeof
(
struct
sockaddr_in
));
ret
=
(
int
)
accept
(
sockfd
,
(
struct
sockaddr
*
)
&
cliaddr
,
&
cliaddr_size
);
if
(
ret
<
0
)
{
(
void
)
closesocket
(
sockfd
);
PRINTK
(
"Accept failed, %d
\n
"
,
ret
);
break
;
}
tcp_access
(
ret
);
}
tcp_access
(
ret
);
}
return
LOS_NOK
;
// Hits Only If Accept Fails
return
LOS_NOK
;
// Hits Only If Accept Fails
}
#ifdef LOSCFG_SHELL_CMD_DEBUG
...
...
@@ -3665,71 +3665,71 @@ SHELLCMD_ENTRY(tcpserver_shellcmd, CMD_TYPE_EX, "tcpserver", XARGS, (CmdCallBack
#ifdef LWIP_DEBUG_UDPSERVER
void
udpserver
(
int
argc
,
const
char
**
argv
)
{
int
sockfd
,
fromlen
;
int
ret
,
iPortVal
;
struct
sockaddr_in
seraddr
;
struct
sockaddr_in
cliaddr
;
size_t
n
,
i
;
int
sockfd
,
fromlen
;
int
ret
,
iPortVal
;
struct
sockaddr_in
seraddr
;
struct
sockaddr_in
cliaddr
;
size_t
n
,
i
;
char
msg
[
MAX_SIZE
]
=
{
0
};
uint16_t
port
;
char
msg
[
MAX_SIZE
]
=
{
0
};
uint16_t
port
;
if
(
argc
<
1
)
{
PRINTK
(
"
\n
Usage: udpserver <port>
\n
"
);
return
;
}
if
(
argc
<
1
)
{
PRINTK
(
"
\n
Usage: udpserver <port>
\n
"
);
return
;
}
iPortVal
=
atoi
(
argv
[
0
]);
/* Port 0 not supported , negative values not supported , max port limit is 65535 */
if
(
iPortVal
<=
0
||
iPortVal
>
65535
)
{
PRINTK
(
"
\n
Usage: Invalid Port
\n
"
);
return
;
}
iPortVal
=
atoi
(
argv
[
0
]);
/* Port 0 not supported , negative values not supported , max port limit is 65535 */
if
(
iPortVal
<=
0
||
iPortVal
>
65535
)
{
PRINTK
(
"
\n
Usage: Invalid Port
\n
"
);
return
;
}
port
=
(
uint16_t
)
iPortVal
;
port
=
(
uint16_t
)
iPortVal
;
PRINTK
(
"port:%d
\r\n
"
,
port
);
PRINTK
(
"port:%d
\r\n
"
,
port
);
sockfd
=
lwip_socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
if
(
sockfd
==
-
1
)
{
PRINTK
(
"
\n
create socket fail
\n
"
);
return
;
}
(
void
)
memset_s
(
&
seraddr
,
sizeof
(
seraddr
),
0
,
sizeof
(
seraddr
));
(
void
)
memset_s
(
&
cliaddr
,
sizeof
(
cliaddr
),
0
,
sizeof
(
cliaddr
));
seraddr
.
sin_family
=
AF_INET
;
seraddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
seraddr
.
sin_port
=
htons
(
port
);
ret
=
lwip_bind
(
sockfd
,
(
struct
sockaddr
*
)
&
seraddr
,
sizeof
(
seraddr
));
if
(
ret
<
0
)
{
PRINTK
(
"bind ip and port failed:%d
\n
"
,
errno
);
(
void
)
closesocket
(
sockfd
);
return
;
}
sockfd
=
lwip_socket
(
AF_INET
,
SOCK_DGRAM
,
IPPROTO_UDP
);
if
(
sockfd
==
-
1
)
{
PRINTK
(
"
\n
create socket fail
\n
"
);
return
;
}
while
(
1
)
{
ret
=
recvfrom
(
sockfd
,
msg
,
MAX_SIZE
-
1
,
0
,
(
struct
sockaddr
*
)
&
cliaddr
,
(
socklen_t
*
)
&
fromlen
);
if
(
ret
>=
0
)
{
n
=
strlen
(
msg
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
if
(
msg
[
i
]
>=
'a'
&&
msg
[
i
]
<=
'z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
'A'
-
'a'
);
}
else
if
(
msg
[
i
]
>=
'A'
&&
msg
[
i
]
<=
'Z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
'a'
-
'A'
);
(
void
)
memset_s
(
&
seraddr
,
sizeof
(
seraddr
),
0
,
sizeof
(
seraddr
));
(
void
)
memset_s
(
&
cliaddr
,
sizeof
(
cliaddr
),
0
,
sizeof
(
cliaddr
));
seraddr
.
sin_family
=
AF_INET
;
seraddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
seraddr
.
sin_port
=
htons
(
port
);
ret
=
lwip_bind
(
sockfd
,
(
struct
sockaddr
*
)
&
seraddr
,
sizeof
(
seraddr
));
if
(
ret
<
0
)
{
PRINTK
(
"bind ip and port failed:%d
\n
"
,
errno
);
(
void
)
closesocket
(
sockfd
);
return
;
}
while
(
1
)
{
ret
=
recvfrom
(
sockfd
,
msg
,
MAX_SIZE
-
1
,
0
,
(
struct
sockaddr
*
)
&
cliaddr
,
(
socklen_t
*
)
&
fromlen
);
if
(
ret
>=
0
)
{
n
=
strlen
(
msg
);
for
(
i
=
0
;
i
<
n
;
++
i
)
{
if
(
msg
[
i
]
>=
'a'
&&
msg
[
i
]
<=
'z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
'A'
-
'a'
);
}
else
if
(
msg
[
i
]
>=
'A'
&&
msg
[
i
]
<=
'Z'
)
{
msg
[
i
]
=
(
char
)(
msg
[
i
]
+
'a'
-
'A'
);
}
}
ret
=
sendto
(
sockfd
,
msg
,
n
+
1
,
0
,
(
struct
sockaddr
*
)
&
cliaddr
,
(
socklen_t
)
fromlen
);
if
(
ret
<=
0
&&
errno
==
EPIPE
)
{
break
;
}
}
else
{
break
;
}
}
ret
=
sendto
(
sockfd
,
msg
,
n
+
1
,
0
,
(
struct
sockaddr
*
)
&
cliaddr
,
(
socklen_t
)
fromlen
);
if
(
ret
<=
0
&&
errno
==
EPIPE
)
{
break
;
}
}
else
{
break
;
}
}
(
void
)
closesocket
(
sockfd
);
return
;
(
void
)
closesocket
(
sockfd
);
return
;
}
#ifdef LOSCFG_SHELL_CMD_DEBUG
...
...
@@ -3741,115 +3741,115 @@ SHELLCMD_ENTRY(udpserver_shellcmd, CMD_TYPE_EX, "udpserver", XARGS, (CmdCallBack
LWIP_STATIC
u32_t
netdebug_memp
(
int
argc
,
const
char
**
argv
)
{
u32_t
ret
=
LOS_OK
;
int
type
;
if
(
argc
==
2
)
{
if
(
!
strcmp
(
"-i"
,
argv
[
1
]))
{
debug_memp_info
();
}
else
if
(
!
strcmp
(
"-udp"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_UDP_PCB
);
}
else
if
(
!
strcmp
(
"-tcp"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_TCP_PCB
);
}
else
if
(
!
strcmp
(
"-raw"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_RAW_PCB
);
}
else
if
(
!
strcmp
(
"-conn"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_NETCONN
);
u32_t
ret
=
LOS_OK
;
int
type
;
if
(
argc
==
2
)
{
if
(
!
strcmp
(
"-i"
,
argv
[
1
]))
{
debug_memp_info
();
}
else
if
(
!
strcmp
(
"-udp"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_UDP_PCB
);
}
else
if
(
!
strcmp
(
"-tcp"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_TCP_PCB
);
}
else
if
(
!
strcmp
(
"-raw"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_RAW_PCB
);
}
else
if
(
!
strcmp
(
"-conn"
,
argv
[
1
]))
{
debug_memp_type_info
(
MEMP_NETCONN
);
}
else
{
ret
=
LOS_NOK
;
}
}
else
if
(
argc
==
3
)
{
if
(
!
strcmp
(
"-d"
,
argv
[
1
]))
{
type
=
atoi
(
argv
[
2
]);
if
(
type
>=
0
)
{
debug_memp_detail
(
type
);
}
else
{
PRINTK
(
"Error: type < 0
\n
"
);
ret
=
LOS_NOK
;
}
}
else
{
ret
=
LOS_NOK
;
}
}
else
{
ret
=
LOS_NOK
;
}
}
else
if
(
argc
==
3
)
{
if
(
!
strcmp
(
"-d"
,
argv
[
1
]))
{
type
=
atoi
(
argv
[
2
]);
if
(
type
>=
0
)
{
debug_memp_detail
(
type
);
}
else
{
PRINTK
(
"Error: type < 0
\n
"
);
ret
=
LOS_NOK
;
}
}
else
{
ret
=
LOS_NOK
;
}
}
else
{
ret
=
LOS_NOK
;
}
return
ret
;
return
ret
;
}
LWIP_STATIC
u32_t
netdebug_sock
(
int
argc
,
const
char
**
argv
)
{
int
idx
;
u32_t
ret
=
LOS_NOK
;
if
(
argc
==
2
)
{
if
(
!
strcmp
(
"-i"
,
argv
[
1
]))
{
/* netdebug sock -i */
for
(
idx
=
0
;
idx
<
(
int
)
LWIP_CONFIG_NUM_SOCKETS
;
idx
++
)
{
debug_socket_info
(
idx
,
1
,
0
);
}
ret
=
LOS_OK
;
}
}
else
if
(
argc
==
3
)
{
if
(
!
strcmp
(
"-d"
,
argv
[
1
]))
{
/* netdebug sock -d <idx> */
idx
=
atoi
(
argv
[
2
]);
if
(
idx
>=
0
)
{
debug_socket_info
(
idx
,
1
,
1
);
ret
=
LOS_OK
;
}
else
{
PRINTK
(
"Error: idx < 0
\n
"
);
}
int
idx
;
u32_t
ret
=
LOS_NOK
;
if
(
argc
==
2
)
{
if
(
!
strcmp
(
"-i"
,
argv
[
1
]))
{
/* netdebug sock -i */
for
(
idx
=
0
;
idx
<
(
int
)
LWIP_CONFIG_NUM_SOCKETS
;
idx
++
)
{
debug_socket_info
(
idx
,
1
,
0
);
}
ret
=
LOS_OK
;
}
}
else
if
(
argc
==
3
)
{
if
(
!
strcmp
(
"-d"
,
argv
[
1
]))
{
/* netdebug sock -d <idx> */
idx
=
atoi
(
argv
[
2
]);
if
(
idx
>=
0
)
{
debug_socket_info
(
idx
,
1
,
1
);
ret
=
LOS_OK
;
}
else
{
PRINTK
(
"Error: idx < 0
\n
"
);
}
}
}
}
return
ret
;
return
ret
;
}
u32_t
osShellNetDebug
(
int
argc
,
const
char
**
argv
)
{
u32_t
ret
=
LOS_NOK
;
if
(
argc
<
1
||
argv
==
NULL
)
{
goto
usage
;
}
u32_t
ret
=
LOS_NOK
;
if
(
!
strcmp
(
"memp"
,
argv
[
0
]))
{
ret
=
netdebug_memp
(
argc
,
argv
);
if
(
ret
!=
LOS_OK
)
{
goto
usage_memp
;
if
(
argc
<
1
||
argv
==
NULL
)
{
goto
usage
;
}
}
else
if
(
!
strcmp
(
"sock"
,
argv
[
0
]))
{
/* netdebug sock {-i | -d <idx>} */
ret
=
netdebug_sock
(
argc
,
argv
);
if
(
ret
!=
LOS_OK
)
{
goto
usage_sock
;
if
(
!
strcmp
(
"memp"
,
argv
[
0
]))
{
ret
=
netdebug_memp
(
argc
,
argv
);
if
(
ret
!=
LOS_OK
)
{
goto
usage_memp
;
}
}
else
if
(
!
strcmp
(
"sock"
,
argv
[
0
]))
{
/* netdebug sock {-i | -d <idx>} */
ret
=
netdebug_sock
(
argc
,
argv
);
if
(
ret
!=
LOS_OK
)
{
goto
usage_sock
;
}
}
else
{
goto
usage
;
}
}
else
{
goto
usage
;
}
return
ret
;
return
ret
;
usage:
/* Cmd help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug memp {-i | -d <type> | -udp | -tcp | -raw |-conn}
\n
"
);
PRINTK
(
"netdebug sock {-i | -d <idx>}
\n
"
);
return
LOS_NOK
;
/* Cmd help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug memp {-i | -d <type> | -udp | -tcp | -raw |-conn}
\n
"
);
PRINTK
(
"netdebug sock {-i | -d <idx>}
\n
"
);
return
LOS_NOK
;
usage_memp:
/* netdebug memp help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug memp {-i | -d <type> | -udp | -tcp | -raw |-conn}
\n
"
);
return
LOS_NOK
;
/* netdebug memp help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug memp {-i | -d <type> | -udp | -tcp | -raw |-conn}
\n
"
);
return
LOS_NOK
;
usage_sock:
/* netdebug sock help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug sock {-i | -d <idx>}
\n
"
);
return
LOS_NOK
;
/* netdebug sock help */
PRINTK
(
"
\n
Usage:
\n
"
);
PRINTK
(
"netdebug sock {-i | -d <idx>}
\n
"
);
return
LOS_NOK
;
}
#endif
/* LWIP_DEBUG_INFO */
...
...
@@ -3991,7 +3991,7 @@ extern void cmd_reset(void);
void
osShellReboot
(
int
argc
,
const
char
**
argv
)
{
cmd_reset
();
cmd_reset
();
}
#ifdef LOSCFG_SHELL_CMD_DEBUG
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录