des-6ren">
gpt4 book ai didi

c - 了解 Contiki 中的 tcpdump.c 文件

转载 作者:行者123 更新时间:2023-11-30 20:09:51 24 4
gpt4 key购买 nike

我试图在 Contiki 中浏览这个文件,发现很难理解其目的是什么,以及为什么它使用如此模糊的代码?

我的婴儿床有这个部件-

  return s(" ping",
n(IPBUF->destipaddr[3], d(
n(IPBUF->destipaddr[2], d(
n(IPBUF->destipaddr[1], d(
n(IPBUF->destipaddr[0],
s(" ",
n(IPBUF->srcipaddr[3], d(
n(IPBUF->srcipaddr[2], d(
n(IPBUF->srcipaddr[1], d(
n(IPBUF->srcipaddr[0],
buf)))))))))))))))) - buf;
<小时/>
/*---------------------------------------------------------------------------*/
static char *
s(char *str, char *ptr)
{
strcpy(ptr, str);
return ptr + strlen(str);
}
/*---------------------------------------------------------------------------*/
int
tcpdump_format(uint8_t *packet, uint16_t packetlen,
char *buf, uint16_t buflen)
{
char flags[8];
if(IPBUF->proto == UIP_PROTO_ICMP) {
if(ICMPBUF->type == ICMP_ECHO) {
return s(" ping",
n(IPBUF->destipaddr[3], d(
n(IPBUF->destipaddr[2], d(
n(IPBUF->destipaddr[1], d(
n(IPBUF->destipaddr[0],
s(" ",
n(IPBUF->srcipaddr[3], d(
n(IPBUF->srcipaddr[2], d(
n(IPBUF->srcipaddr[1], d(
n(IPBUF->srcipaddr[0],
buf)))))))))))))))) - buf;

/* return sprintf(buf, "%d.%d.%d.%d %d.%d.%d.%d ping",
IPBUF->srcipaddr[0], IPBUF->srcipaddr[1],
IPBUF->srcipaddr[2], IPBUF->srcipaddr[3],
IPBUF->destipaddr[0], IPBUF->destipaddr[1],
IPBUF->destipaddr[2], IPBUF->destipaddr[3]);*/
}

https://github.com/contiki-os/contiki/blob/master/tools/wpcapslip/tcpdump.c

注释部分告诉我们代码试图做什么,但为什么要这样?

最佳答案

Contiki 是为微型系统设计的,只有几千字节的可用内存。 (具有完整 IPv6 网络、休眠路由器和 RPL 路由的典型系统需要不到 10 kb RAM 和 30 kb ROM。)标准字符串库可能不会在操作系统中使用,因为它需要一些内存。非常小的嵌入式系统有时不使用标准库,并且在需要时有自己的实现。

关于c - 了解 Contiki 中的 tcpdump.c 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48704373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com