warnings fixed
This commit is contained in:
@ -30,6 +30,9 @@
|
||||
- [4. 核心回调与主函数](#4-核心回调与主函数)
|
||||
- [`handle_openflow_callback`](#handle_openflow_callback)
|
||||
- [`main`](#main)
|
||||
- [5. 已实现的协议类型总结](#5-已实现的协议类型总结)
|
||||
- [A. `handle_openflow_callback` 中处理的类型](#a-handle_openflow_callback-中处理的类型)
|
||||
- [B. 与 `README.txt` 的比较](#b-与-readmetxt-的比较)
|
||||
|
||||
---
|
||||
|
||||
@ -278,3 +281,33 @@ int main(int argc, char* argv[])
|
||||
4. 调用 `openflow_hook_init(mask, handle_openflow_callback)`,将 `mask` 和核心回调函数 `handle_openflow_callback` 注册到 OpenFlow 库。这样,只有 `mask` 中指定类型的消息到达时,`handle_openflow_callback` 才会被调用。
|
||||
5. 调用 `pause()`,使程序进入挂起状态,等待网络事件(即等待 OpenFlow 消息的到来)。
|
||||
6. 程序将在此处循环等待和处理消息,直到被终止。
|
||||
|
||||
---
|
||||
|
||||
## 5. 已实现的协议类型总结
|
||||
|
||||
### A. `handle_openflow_callback` 中处理的类型
|
||||
|
||||
`main_user_openflow.c` 文件中的 `handle_openflow_callback` 函数是主要的消息分发器。它直接处理以下消息类型:
|
||||
|
||||
- **`OFPT_HELLO`**: 管理与控制器的初始握手过程。
|
||||
- **`OFPT_FEATURES_REQUEST`**: 响应控制器,提供交换机的功能特性。
|
||||
- **`OFPT_GET_CONFIG_REQUEST`**: 响应控制器,提供交换机的当前配置。
|
||||
- **`OFPT_PACKET_OUT`**: 处理控制器下发的数据包,并从交换机指定端口发出。
|
||||
- **`OFPT_ROLE_REQUEST`**: 处理控制器的角色变更请求(如 Master/Slave)。
|
||||
- **`OFPT_MULTIPART_REQUEST`**: 用于请求各种统计和状态信息的复合类型。已实现的子类型包括:
|
||||
- **`OFPMP_DESC`**: 交换机的硬件/软件描述信息。
|
||||
- **`OFPMP_FLOW`**: 单个流的统计信息。
|
||||
- **`OFPMP_AGGREGATE`**: 聚合统计信息(总流数、包数、字节数)。
|
||||
- **`OFPMP_TABLE`**: 流表的统计信息。
|
||||
- **`OFPMP_PORT_STATS`**: 物理或逻辑端口的统计信息。
|
||||
- **`OFPMP_GROUP_FEATURES`**: 组表的特性。
|
||||
- **`OFPMP_PORT_DESC`**: 端口的描述信息。
|
||||
|
||||
### B. 与 `README.txt` 的比较
|
||||
|
||||
`README.txt` 文件提供了一个相似的列表,但存在一个显著差异:
|
||||
|
||||
- **`OFPT_FLOW_MOD` (类型 14)**: `README.txt` 文件列出了用于添加流规则的 `OFPT_FLOW_MOD`(记录为 `OFPT_FLOW=14`)。虽然 `README` 提到了用于此目的的 `fast_add_rule` 函数,但在 `main_user_openflow.c` 的 `handle_openflow_callback` 函数中**并无**直接处理 `OFPT_FLOW_MOD` 消息的 `case` 分支。这表明该功能可能未完全实现、在其他地方处理,或者 `README.txt` 中的文档领先于当前文件中的具体实现。
|
||||
|
||||
根据 `main_user_openflow.c` 中的可执行代码路径,只有 A 部分列出的消息类型被主回调循环主动处理。
|
||||
|
||||
Reference in New Issue
Block a user