Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
IPv6
lwip 2.0版本以上的ipv6移植成功后的ipv6设置问题
发布于 2019-08-05 14:48:57 浏览:2778
订阅该版
是这样的,最新接手的一个项目,是将之前用的ipv4的代码全部转移到ipv6上来,按照官方文档配置了文件,编译通过,移植成功 但是设置好ipv6地址之后,把这个ipv6地址设定为有效地址之后发现局域网内不能通信 希望大神指导一下,在这个问题上已经卡了半个月了,一点头绪都没有 之前我以为就是能创建ipv6的socket套接字就可以实现局域网通信 现在看来是一头雾水,完全搞不懂这个ipv6怎么回事 ipv4的话要设置本地的ip地址,子网掩码,路由的ip地址,ipv6的完全没有这个选项 求分享移植成功并且能够实现通信的ipv6的lwip代码,或者给一点指导 谢谢
查看更多
34
个回答
默认排序
按发布时间排序
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
``` finsh >list_if() network interface: e0 (Default) MTU: 1500 MAC: 00 60 37 12 34 56 FLAGS: UP LINK_UP ipv6 link-local: FE80::260:37FF:FE12:3456 state:10 VALID ipv6[1] address: :: state:00 INVALID ipv6[2] address: :: state:00 INVALID dns server #0: 240C::6644 dns server #1: :: 0, 0x00000000 finsh > ``` 这是使用串口连接板子用`list_if()`指令打印的一些信息
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
测试后ipv4移植是完全没有问题的,就是用ipv6的时候不能正常通信
shadowliang
2019-08-05
Hello,world!!!
不知道楼主的问题解决了没,关于IPv6,最近刚好有接触到局域网接收IPv6组播包的需求,分享一下个人的实现方法仅供楼主参考一下。首先开启网络接收的调试打印,方便观察网络通信中接收到的信息,我使用的是无线的wifi,在drv_wlan.c中开启packet_dump功能,主要是通过 ```c //#define MINI_DUMP //#define ETH_RX_DUMP //#define ETH_TX_DUMP, ``` 这三个宏开关调试,具体可以阅读下相关bsp下的drv_wlan.c文件, 具体函数如下 ```c static void packet_dump(const char *msg, const struct pbuf *p) { const struct pbuf *q; rt_uint32_t i, j; rt_uint8_t *ptr; rt_kprintf("%s %d byte\n", msg, p->tot_len); #ifdef MINI_DUMP return; #endif i = 0; for (q = p; q != RT_NULL; q = q->next) { ptr = q->payload; for (j = 0; j < q->len; j++) { if ((i % 8) == 0) { rt_kprintf(" "); } if ((i % 16) == 0) { rt_kprintf("\r\n"); } rt_kprintf("%02x ", *ptr); i++; ptr++; } } rt_kprintf("\n\n"); } #endif /* dump */ ```
shadowliang
2019-08-05
Hello,world!!!
关于ipv6组播包是否被板子接收到,可以参考一下以下的方法,在网络的接收函数中,如果是使用wifi通信中的在drv_wlan.c文件中的`ethernetif_input(int iface, struct pbuf *p)`函数中的相关位置添加以下代码,打印网络接收数据的来源mac和目的的mac地址,如果是ipv6的组播包,第48bit是1就表示组播地址,mac的目的地址的第一个字节一般是0x33. ```c /* points to packet payload, which starts with an Ethernet header */ ethhdr = p->payload; if (ethhdr->dest.addr[0] && 0x01) { rt_kprintf("\r\n [src_mac:%02x %02x %02x %02x %02x %02x ]", ethhdr->src.addr[0], ethhdr->src.addr[1], ethhdr->src.addr[2], ethhdr->src.addr[3], ethhdr->src.addr[4], ethhdr->src.addr[5]); rt_kprintf("[dst_mac:%02x %02x %02x %02x %02x %02x ]\r\n", ethhdr->dest.addr[0], ethhdr->dest.addr[1], ethhdr->dest.addr[2], ethhdr->dest.addr[3], ethhdr->dest.addr[4], ethhdr->dest.addr[5]); } ```
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
>关于ipv6组播包是否被板子接收到,可以参考一下以下的方法,在网络的接收函数中,如果是使用wifi通信中的在 ... --- 感谢关注和回复,ipv6的问题还没有得到解决,我的是用网线连接的也可以用WiFi通信的代码打印信息吗?
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
>不知道楼主的问题解决了没,关于IPv6,最近刚好有接触到局域网接收IPv6组播包的需求,分享一下个人的实现方 ... --- 我发现我的bsp目录下面并没有这个文件
aozima
2019-08-05
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
不管网线光纤还是wifi,数据包都是一样的。 请检查电脑发出的包,板子是否有收到。 组播需要设置过滤器,调试时可以允许所有包,STM32是把 MACFFR 的31位RA(recv all)设置为1,就可以放行所有包。
shadowliang
2019-08-05
Hello,world!!!
>感谢关注和回复,ipv6的问题还没有得到解决,我的是用网线连接的也可以用WiFi通信的代码打印信息吗? ... 不知道楼主用的是什么板子呢?如果是stm32系列的板子,可以在bsp的下面drv_eth.c找到dump_hex的函数,通过开关`//#define ETH_RX_DUMP`来打印板子接收的网络数据,在该文件中的网络接收函数`struct pbuf *rt_stm32_eth_rx(rt_device_t dev)`里面添加判断是否接收到ipv6组播包的方法。
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
>不管网线光纤还是wifi,数据包都是一样的。 请检查电脑发出的包,板子是否有收到。 你好,请问设置组播过滤器的函数是哪个,我用的不是stm的板子,是lpc178,默认的网卡驱动程序我没有动
kuailedeluojie
2019-08-05
这家伙很懒,什么也没写!
>不知道楼主用的是什么板子呢?如果是stm32系列的板子,可以在bsp的下面drv_eth.c找到dump_hex的函数,通 ... 我用的是lpc178x的板子 ```c #if LWIP_IPV6_MLD netif->flags |= NETIF_FLAG_MLD6; /* * For hardware/netifs that implement MAC filtering. * All-nodes link-local is handled by default, so we must let the hardware know * to allow multicast packets in. * Should set mld_mac_filter previously. */ if (netif->mld_mac_filter != NULL) { ip6_addr_t ip6_allnodes_ll; ip6_addr_set_allnodes_linklocal(&ip6_allnodes_ll); netif->mld_mac_filter(netif, &ip6_allnodes_ll, NETIF_ADD_MAC_FILTER); } ``` 这段代码是不是设置过滤的呢
撰写答案
登录
注册新账号
关注者
0
被浏览
2.8k
关于作者
kuailedeluojie
这家伙很懒,什么也没写!
提问
44
回答
135
被采纳
0
关注TA
发私信
相关问题
1
lwip1.4.1连接经常会断开无法连接上,可以ping通
2
LPC1768:RTT+LWIP+webserver用IE刷网页出现硬件中断错误(已经解决)
3
求一些LWIP开发的经验,目前ping一直不稳定。
4
stm32f207+dp83848无法ping通
5
RTT下的LWIP传递机制
6
rtt内lwip的socket是否是线程安全?
7
Lwip+enc28j60无法ping通
8
坑爹的rtconfig.h lwip关掉了checksum
9
花了一个晚上,把RT2.0的LWIP、网卡驱动、文件系统整合起来了,发现一点小问题
10
lwip例程中udp发送时如何指定源端口发送到指定目的地端口
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部