【lwIP(第四章)】网络接口

目录

  • 一、lwIP网络接口简介
  • 二、lwIP的netif结构
  • 三、lwIP的netif相关函数
    • 1. lwIP网络接口的全局变量
    • 2. netif_add()函数
    • 3. netif_remove()函数
    • 4. netif_set_default()函数

一、lwIP网络接口简介

lwIP协议栈支持多种不同的网络接口(网卡),由于网卡是直接和硬件平台打交道,硬件不同则处理也是不同的,所以由用户提供最底层的接口函数,lwIP提供统一的接口,但是底层的实现需要用户自己去完成(ethernetif.c)

一个系统中可能有多个网络接口,有可能是以太网,有可能是WIFI,也有可能是其他的网络接口,在lwIP中每一个网卡都由一个netif结构体来表示,这些结构体描述了各个网卡的底层实现函数及状态,并以链表形式链接起来。
在这里插入图片描述

在这里插入图片描述

二、lwIP的netif结构

/* netif.h */
struct netif { 
		struct netif *next; 					/* 指向下一个节点的指针 */ 
		ip_addr_t ip_addr; 						/* 设置网卡的IP地址、子网页码及网关地址 */ 
		ip_addr_t netmask; 
		ip_addr_t gw; 
		netif_input_fn input; 					/* 指向数据包输入函数 */ 
		netif_output_fn output; 				/* 指向数据包待发送函数 ----检测目标IP地址的MAC地址等操作 */
		netif_linkoutput_fn linkoutput; 		/* 指向数据包输出函数 */
		netif_status_callback_fn link_callback; /* 链接状态回调函数 */ 
		void *state; 							/* 虚拟网卡状态 */ 
		u16_t mtu; 								/* 最大传输单元 */ 
		u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; 		/* 网卡的MAC地址 */ 
		u8_t hwaddr_len; 						/* MAC地址长度 */
		u8_t flags; 							/* 虚拟网卡的标志符 */ 
		char name[2]; 							/* 网卡的名称 */ 
	/*................*/ 
};

三、lwIP的netif相关函数

在这里插入图片描述


1. lwIP网络接口的全局变量

全局变量struct netif *netif_list指向该链表表头
在这里插入图片描述


2. netif_add()函数

在这里插入图片描述


3. netif_remove()函数

在这里插入图片描述


4. netif_set_default()函数

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OSPF----优化

优化主要目的---减少LSA的更新量以及数量 路由汇总(减少骨干区域的LSA更新量)OSPF特殊秋雨(减少非骨干区域的LSA更新量)OSPF路由汇总(路由聚合) OSPF路由汇总是由手工部署的OSPF的汇总称为---区域汇总&…

Swagger快速入门【基础总结】

Swagger 背景信息 什么是前后端分离: 即: Vue Springboot 开发模式 以前是后端时代(后端是主力):前端只用管理静态页面;html—>后端。 前后端分离时代: 前端 :前端控制层、视图层【前端团队】后端:后…

客户端安装SSH工具Xshell图解

一、客户端安装SSH工具 windows客户端:安装Putty、XShell 或者 SecureCRT Linux客户端:yum install openssh-clients macOS客户端:默认已经安装了SSH客户端 我们这里安装windows客户端,选择XShell 工具。 Xshell5、Xftp5下载&am…

Linux系统之安装PostgreSQL数据库

Linux系统之安装PostgreSQL数据库一、PostgreSQL介绍1.PostgreSQL简介2.PostgreSQL特点二、本次实践介绍1.本次实践介绍2.实践环境介绍三、配置PostgreSQL的yum仓库源1.检查本地是否部署PostgreSQL2.配置镜像源3.检查yum仓库镜像源状态四、安装PostgreSQL1.安装PostgreSQL2.初始…

GPIO的八种模式分析

GPIO是general purpose input output,即通用输入输出端口,作用是负责外部器件的信息和控制外部器件工作。 GPIO有如下几个特点:1.不同型号的IO口数量不同;2,反转快速,每次翻转最快只需要两个时钟周期,以ST…

dubbo的SPI机制和服务暴露,引用原理

一、SPI引入:spi标准:1、需要在 classpath 下创建一个目录,该目录命名必须是:META-INF/service2、在该目录下创建一个 properties 文件,该文件需要满足以下几个条件 :2.1 文件名必须是扩展的接口的全路径名…

量子运算-比算子描述更广泛的一类刻画量子态在客观世界演化的数学工具

参考链接:1.1 量子运算 - 知乎 (zhihu.com)一个量子操作(包括量子测量和量子信道)指的是把一个密度矩阵变成另一个密度矩阵的变换,一般记为 背景演化算符是酉的。这里考虑考虑特殊的演化-测量。测量对应的算子是投影算子&#xff…

刘禹锡最经典诗文10首,每一首都是千古名作,读懂受益一生

他是唐代最乐观的诗人,是比他的好友乐天更乐天的人!他与柳宗元并称“刘柳”,与韦应物、白居易合称“三杰”,并与白居易合称“刘白”。他是在唐代诗人中,出了名的豪放豁达的刘禹锡。白居易称他为“诗豪”。自“永贞革新…

Elasticsearch:理解 Master,Elections,Quorum 及 脑裂

集群中的每个节点都可以分配多个角色:master、data、ingest、ml(机器学习)等。 我们在当前讨论中感兴趣的角色之一是 master 角色。 在 Elasticsearch 的配置中,我们可以配置一个节点为 master 节点。master 角色的分配表明该节点…

【javaEE】阻塞队列、定时器、线程池

目录 🌴一、阻塞队列 1.概念 2.生产者消费者模型 3.阻塞队列的实现 🏹二、定时器 1.引出定时器 2.定时器的实现 🔥三、线程池 1.引出线程池 2.ThreadPoolExecutor 构造方法 3.标准数据库的4种拒绝策略【经典面试题】【重点掌握】 …

2020年第十一届C/C++ B组第一场蓝桥杯省赛真题

准备参加第十四届蓝桥杯,今天开始刷题目的第一天,下面是2020年第十一届C/C B组第一场蓝桥杯省赛真题,以下是我的做题目心得。跑步训练第一次写的代码失误点如下:第一个错误点是因为好久没有写代码,忘记判断对才能循环&…

【SCL】博图——先入先出排序法

使用博图SCL语言来实现先入先出排序 前言 使用SCL完成一个先入先出排序 具体要求:最先输入的一个数值,最先输出出来,下面的数自动向前填充; 注:这里可能有两种理解:一是第一个输入的第一个出来&#xff…

解析vue中的process.env

一、介绍 1、process process是 nodejs 下的一个全局变量,它存储着 nodejs 中进程有关的信息。 2、process.env env 是 environment 的简称,process.env属性返回一个包含用户环境的对象。 3、dotenv Dotenv 是一个零依赖的模块,它能将环境变…

蓝桥杯刷题冲刺 | 倒计时16天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.青蛙跳杯子1.青蛙跳杯子 题目 链接: 青蛙跳杯子 - 蓝桥云课 (lanqiao.cn) X 星球的…

用于人工智能研究的开源Python微电网模拟器pymgrid(入门篇)

pymgrid是一个开源Python库,用于模拟微型电网的三级控制,允许用户创建或自行选择的微电网。并可以使用自定义的算法或pymgrid中包含的控制算法之一来控制这些微电网(基于规则的控制和模型预测控制)。 pymgrid还提供了与OpenAI Gy…

初识冯诺依曼体系结构

目录 1.冯诺依曼体系结构 2.冯诺依曼体系的原理 3.数据流向 4.冯诺依曼体系的意义 1.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 (1)输入单元:…

JavaEE-多线程中wait和notify都有哪些区别?

更多内容请点击了解 本篇文章将详细讲述wait和notify的区别,请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下: 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notif…

Docker容器高级篇

文章目录一、Dockerfile文件1.dockerfile基础知识2.docker执行dockerfile的大致流程3.dockerfile常用保留字4.dockerfile构建镜像示例二、docker network1.docker net常用指令2.docker的网络模式三、docker-compose容器编排1.下载安装2.三个步骤3.compose常用命令4.不使用docke…

Java Web 实战 17 - 计算机网络之传输层协议(2)

大家好 , 这篇文章继续给大家讲解 TCP 协议当中的一些操作 , 比如 : 滑动窗口、流量控制、拥塞控制、延时应答、捎带应答、面向字节流这几个提升 TCP 效率的操作 . 我们还会给大家分析 TCP 连接出现异常的时候 , 该如何处理 . 最后会将 TCP 和 UDP 进行比较 上一篇文章的链接也…

【计组】RAM的深入理解

一、存储机理 RAM的实现逻辑有种,分别是触发器和电容。 SRAM(Static)DRAM(Dynamic)存储方式触发器电容破坏性读出否(触发器具有稳态,能够锁住0或1两种状态)是(电容需要…