• LwIP-网络接口管理


    netif      各种类型网络接口的抽象------------------netif.c  netif.h

    ————netif.h————————————————
    //网络接口最大物理地址长度,这里定义为以太网网卡 MAC 地址的长度 6
    #define NETIF_MAX_HWADDR_LEN 6U
    //
    下面几个宏为网络接口属性、状态相关的宏,主要用于描述 netif flags 字段的各位
    #define NETIF_FLAG_UP 0x01U //网络接口是否已被上层使能
    #define NETIF_FLAG_BROADCAST 0x02U //网络接口是否支持广播
    #define NETIF_FLAG_POINTTOPOINT 0x04U //网络接口是否属于点到点连接
    #define NETIF_FLAG_DHCP 0x08U //网络接口是否支持 DHCP 功能
    #define NETIF_FLAG_LINK_UP 0x10U //网络接口的底层链路是否已经使能
    #define NETIF_FLAG_ETHARP 0x20U //网络接口是否支持 ARP 功能
    #define NETIF_FLAG_IGMP 0x40U //网络接口是否支持 IGMP 功能
    //下面是结构 netif 的定义
    struct netif {
    struct netif *next; //
    指向下一个 netif 结构,在构成链表 netif_list 时使用
    struct ip_addr ip_addr; //网络接口的 IP 地址
    struct ip_addr netmask; //子网掩码

    struct ip_addr gw; //网关地址
    //下面为三个函数指针,调用它们指向的函数就可以完成数据包的发送或接收
    err_t (* input)(struct pbuf *p, struct netif *inp); //该函数向 IP 层输入数据包
    err_t (* output)(struct netif *netif, struct pbuf *p,struct ip_addr *ipaddr); //该函数发送 IP
    err_t (* linkoutput)(struct netif *netif, struct pbuf *p); //该函数实现底层数据包发送
    void *state; //该字段用户可以自由设置,例如用于指向一些底层设备相关的信息
    u16_t mtu; //该接口允许的最大数据包长度
    u8_t hwaddr_len; //该接口物理地址长度
    u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; //该接口的物理地址
    u8_t flags; //该接口的状态、属性字段
    char name[2]; //该接口的名字
    u8_t num; //接口的编号
    //在接口自输入使能或者有环回接口的情况下,下面的字段
    //用于描述接口发送给自己的数据包
    struct pbuf *loop_first; //指向发送给自己的数据包的第一个 pbuf
    struct pbuf *loop_last; //
    指向发送给自己的数据包的最后一个 pbuf


  • 相关阅读:
    【作业】Python面向对象
    Python使用使用第三方源(国内源:豆瓣)下载包文件 超快!!!
    【案例】Python
    【个人笔记】Python
    定义函数相关内容
    列表,for循环相关.
    while应用和函数学习
    斗地主发牌器
    字符串索引切片.
    随机生成20以内加减法,5次答题并统计正确和错误题数
  • 原文地址:https://www.cnblogs.com/10cm/p/6668335.html
Copyright © 2020-2023  润新知