11 libubox

1 libubox

主要提供事件循环,二进制块格式处理、linux链表实现和一些JSON辅助
主要包含3个软件包:libuboxjshnlibblobmsg-json


1.1 libubox

1、提供多种基础通用功能接口。如:链表、平衡二叉树、二进制块处理、MD5
2、提供多种sock接口封装
3、提供事件驱动机制及任务管理功能


  • utils.h
    提供简单实用功能。如:字节序转换、位操作、编译器属性包装、连续的内存分配函数、静态数组大小的宏、base64编码解码等
  • blob.h
    提供二进制数据处理功能。可以创建块数据在socket上发送。整形数字会在libubox库内转换为网络字节序进行处理。二进制的处理方法是创建一个TLV(类型-长度-值)、
  • usock.h
    socket对象封装。
  • uloop.h
    提供时间驱动机制接口。基于epoll来实现的。
    文件描述符fd是由uloop_fd结构来设置
    超时管理由uloop_timeout结构来管理
libubox常用uloop接口函数
uloop_fd_add    : 将一个新文件描述符添加到事件处理循环中
uloop_fd_delete : 将一个文件描述符从事件循环中删除
uloop_init      : 初始化uloop中epoll_create来创建epoll
uloop_run       : 进入事件处理循环中
uloop_done      : 释放uloop中的epoll
uloop_end       : 设置uloop内部结束循环标志
uloop_time_set  : 设置定时器超时时间,并添加到链表

1.2 jshn

jshn封装JSON对象的装换库,用于脚本语言生成JSON对象和将JSON对象数据取出来。
jshn软件包包含两个文件jshnjshn.sh

  • jshn
    读取JSON格式的字符串,并组合为jshn_add_*命令导出到标准输出stdout
    将环境变量中的设置组合为JSON字符串,并输出到标准输出中
  • jshn.sh
    利用jshn工具对JSON的操作进行更为方便的封装
    JSON格式的字符串在环境变量中导入和导出
    将配置内容设置到环境变量中
    从环境变量中查询配置设置的值
jshn定义的命令接口含义
json_init       : 初始化JSON对象
json_add_string : 增加字符串数据类型,例 json_add_string name zhang
json_dump       : 以JSON格式输出所有增加的JSON内容
json_add_init   : 添加整形数据,例 json_add_init 36
json_add_boolean: 添加布尔类型
json_load       : 将所有内容读入JSON对象中,并设置到环境变量中
json_get_var    : 从环境变量中获取JSON对象的值 json_get_var ifdev device 获取device的值并赋值给ifdev变量
json_get_type   : 从环境变量中获取JSON对象类型,例 json_get_var ifdev device
json_get_keys   : 从环境变量中获取JSON对象的所有名称
json_get_values : 从环境变量中获取JSON对象的所有值
json_select     : 选择JSON对象
json_add_object : 添加json对象
json_close_add  : 完成对象添加
json_add_array  : 增加顺序数组,例如json_add_array study,数组的内容后续通过json_add_string来增加
json_clean      : 清除jshn所有设置的环境变量
json_close_array   : 关闭顺序数组的增加
json_set_namespace : 定义命名空间。及定义设置变量的前缀,将变量区分开

JSON格式

以左花括符开始,右花括符结束
名称后有冒号与值分隔,值与名称间使用逗号分隔
数组,向量,链表使用数组形式储存

{
        "vlan": {
                "type-list": [
                        "management"
                ],
                "management-list": [
                        "cfg027ec2"
                ],
                "management": {
                        "cfg027ec2": {
                                "enable": "0"
                        }
                }
        }
}
posted @ 2022-01-18 13:34  人民广场的二道贩子  阅读(297)  评论(0编辑  收藏  举报