1 onps栈使用说明——API接口手册

1. 底层API由协议栈底层提供的api , 用于涉及底层操作的一些功能实现,这些api接口函数的原型定义分布于不同的文件,它们被统一include进了onps.h中:

  • open_npstack_load:将协议栈载入目标系统,协议栈开始运行
  • open_npstack_unload:将协议栈载出目标系统,协议栈结束运行
  • route_add:添加一条静态路由
  • route_del:删除一条静态路由
  • route_del_ext:删除指定网卡在路由表中的所有路由条目 , 禁止网卡跨网段通讯
  • route_get_default:获取缺省路由
  • dhcp_req_addr:向dhcp服务器请求租用一个动态地址
  • ethernet_add:添加ethernet网卡
  • ethernet_del:删除ethernet网卡
  • ethernet_put_packet:将收到的ethernet报文推送给协议栈
  • netif_is_ready:网卡是否已就绪(进入工作状态)
  • netif_get_by_name:通过网卡名称查找网卡
  • buddy_alloc:申请一块指定大小的内存
  • buddy_free:释放申请的内存
  • buf_list_get_next_node:取出下一个链表节点
  • buf_list_get_len:链表所有节点携带的数据长度之和
  • buf_list_merge_packet:合并链表节点携带的数据将其放入用户指定的缓冲区
open_npstack_load功能
协议栈的入口函数,目标系统调用该函数启动协议栈 。换言之,在使用协议栈之前必须首先成功先调用该函数 。
原型
BOOL open_npstack_load(EN_ONPSERR *penErr);
入口参数
  • penErr:指向错误编码的指针,当函数执行失败 , 该参数用于接收实际的错误码
返回值
加载成功,返回TRUE;反之返回FALSE,具体的错误信息参见参数penErr返回的错误码 。
示例
EN_ONPSERR enErr;if(open_npstack_load(&enErr)) //* 加载协议栈{//* 协议栈加载成功,在这里添加你的自定义代码……}elseprintf("协议栈加载失败, %s\r\n", onps_error(enErr)); //* 打印错误信息返回目录
open_npstack_unload功能
协议栈的退出函数 。一旦调用该函数 , 协议栈会结束运行并释放占用的相关系统资源 。
原型
void open_npstack_unload(void);
入口参数

返回值

示例

返回目录
route_add功能
添加一条静态路由到路由表 。
原型
BOOL route_add(PST_NETIF pstNetif, UINT unDestination, UINT unGateway, UINT unGenmask, EN_ONPSERR *penErr);
入口参数
  • pstNetif:指向网卡控制块ST_NETIF的指针,该指针唯一的标识一块网卡,其用于指定静态路由添加到哪个网卡
  • unDestination:目标网段地址,如果其值为0则其为缺省路由
  • unGateway:网关地址
  • unGenmask:子网掩码
  • penErr:指向错误编码的指针,当函数执行失败,该参数用于接收实际的错误码
返回值
添加成功则返回TRUE,否则返回FALSE,具体的错误信息参见参数penErr返回的错误码 。
示例
EN_ONPSERR enErr;PST_NETIF pstNetif = netif_get_by_name("eth0");if(pstNetif && route_add(pstNetif, inet_addr_small("47.92.239.0"), inet_addr_small("192.168.0.1"), inet_addr_small("255.255.255.0"), &enErr)){//* 添加成功,在这里添加你的自定义代码……}elseprintf("静态路由添加失败, %s\r\n", onps_error(enErr)); //* 打印错误信息返回目录
route_del功能
删除一条静态路由 。
原型
void route_del(UINT unDestination);
入口参数
  • unDestination:指定要删除的目标网段地址
返回值

示例

返回目录
route_del_ext功能
删除指定网卡在路由表中的所有路由条目 , 禁止网卡跨网段通讯 。
原型
void route_del_ext(PST_NETIF pstNetif);
入口参数
  • pstNetif:指向网卡控制块ST_NETIF的指针,指定要删除哪个网卡的所有路由条目
返回值

示例

返回目录
route_get_default功能
获取缺省路由信息 。
原型
PST_NETIF route_get_default(void);
入口参数

返回值
返回缺省路由绑定的网卡控制块首地址 。
示例

返回目录
dhcp_req_addr功能
启动dhcp客户端,向dhcp服务器请求租用一个动态地址 。
原型
BOOL dhcp_req_addr(PST_NETIF pstNetif, EN_ONPSERR *penErr);
入口参数
  • pstNetif:指定要进行dhcp请求的网卡
  • penErr:指向错误编码的指针,当函数执行失败 , 该参数用于接收实际的错误码
返回值
请求成功则返回TRUE,否则返回FALSE,具体的错误信息参见参数penErr返回的错误码 。

推荐阅读