主页 > 开源代码  > 

freertos学习5--链路状态设置

freertos学习5--链路状态设置
以下三个函数都是针对网卡netif的操作。 1 netif_set_up函数(netif_set_down) 特点 直接操作网络接口,不通过 netifapi 机制。 适用于单线程环境,或者在多线程环境中需要额外加锁。 1.1 netif_set_up

对比windows下面,相当于是在资源管理器中“禁用设备”/“启用设备” netif_set_up()函数一般是在初始化时调用,在netif_add()之后,使能网卡。(打开网卡北向接口的开关阀,让网卡和协议栈的数据能够流通)

/* 标记使能协议栈 */ netif_set_flags() /* 网卡状态静态回调 */ netif_set_status_callback() /* 发送ARP/IGMP/MLD/RS事件,例如:linup / netifup或addr-change */ /* 协议栈和数据链路都使能了才生效 */ netif_issue_reports() ---etharp_gratuitous() ---igmp_report_groups() 1.2 netif_set_down

相当于是在资源管理器中“禁用设备””

netif_clear_flags() /*删除所有ARP表,就是arp -d */ etharp_cleanup_netif() netif_status_callback() 2 netif_set_link_up函数 通常由网卡驱动程序在特定条件下调用; 直接操作网络接口,不通过 netifapi 机制。 适用于单线程环境,或者在多线程环境中需要额外加锁。 2.1 netif_set_link_up

网线没插好,那么这个Link Status就是down。与真实物理状态有关

2.2 netif_set_link_down 3 netifapi_netif_set_link_up函数 将指定网络接口的链路状态(link state)设置为“启动”(link up)。 链路状态“启动”表示网络接口已连接到物理网络(例如,网线已插入或无线网络已连接),可以开始发送和接收数据。 特点 通过 LwIP 的 netifapi 机制调用,是线程安全的。 适用于多线程环境,因为操作会被放入 LwIP 的任务队列中执行。 4 免费 ARP 包(Gratuitous ARP) 4.1 作用

免费 ARP 数据包有以下 3 个作用。 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。 可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址

标签:

freertos学习5--链路状态设置由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“freertos学习5--链路状态设置