netifd [11] - wireless

本文档详细介绍了netifd中的无线网络配置过程,包括数据结构的组织和接口的功能说明,帮助读者理解如何设置和管理无线网络连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构

/** 无线驱动对象 */
struct wireless_driver {
    struct avl_node node;

    const char *name;
    const char *script;

    struct {
        char *buf;
        struct uci_blob_param_list *config;
    } device, interface;
};

/** 无线device对象 */
struct wireless_device {
    struct vlist_node node;

    struct wireless_driver *drv; /** wireless drive object */
    struct vlist_tree interfaces;
    char *name;

    struct netifd_process script_task;
    struct uloop_timeout timeout;
    struct uloop_timeout poll;

    struct list_head script_proc;
    struct uloop_fd script_proc_fd;
    struct uloop_timeout script_check;

    struct ubus_request_data *kill_request;

    struct blob_attr *config;
    struct blob_attr *data;

    bool config_autostart;
    bool autostart;
    bool disabled;

    enum interface_state state;
    enum interface_config_state config_state;
    bool cancel;
    int retry;

    int vif_idx;
};

/** 无线interface对象 */
struct wireless_interface {
    struct vlist_node node;
    const char *section;
    char *name;

    struct wireless_device *wdev;

    struct blob_attr *config;
    struct blob_attr *data;

    const char *ifname;
    struct blob_attr *network;
};

struct wireless_process {
    struct list_head list;

    const char *exe;
    int pid;

    bool required;
};

接口说明

/** 
 * 初始化无线模块 
 */
void wireless_init(void)

/**
 * 启用所有处于挂起的wireless device对象
 */
void wireless_start_pending(void)
/** 
 * 创建wireless device对象
 */
void wireless_device_create(struct wireless_driver *drv, const char *name, struct blob_attr *data)

/**
 * 创建wireless interface对象
 */
void wireless_interface_create(struct wireless_device *wdev, struct blob_attr *data, const char *section)
/**
 * 启用wireless device
 */
void wireless_device_set_up(struct wireless_device *wdev)

/**
 * 停用wireless device
 */
void wireless_device_set_down(struct wireless_device *wdev)
/**
 * 获取wireless device状态信息
 */
void wireless_device_status(struct wireless_device *wdev, struct blob_buf *b)

/**
 * 获取wireless device有效信息
 */
void wireless_device_get_validate(struct wireless_device *wdev, struct blob_buf *b)
/**
 * wireless device消息处理
 */
int wireless_device_notify(struct wireless_device *wdev, struct blob_attr *data,
               struct ubus_request_data *req)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值