博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ovs处理openflow消息的流程
阅读量:7044 次
发布时间:2019-06-28

本文共 3239 字,大约阅读时间需要 10 分钟。

OVS处理各个openflow消息的详细代码在 ofproto/ofproto.c 中:

static enum ofperrhandle_openflow__(struct ofconn *ofconn, const struct ofpbuf *msg){    const struct ofp_header *oh = msg->data;    enum ofptype type;    enum ofperr error;    error = ofptype_decode(&type, oh);    if (error) {        return error;    }    switch (type) {        /* OpenFlow requests. */    case OFPTYPE_ECHO_REQUEST:        return handle_echo_request(ofconn, oh);    case OFPTYPE_FEATURES_REQUEST:        return handle_features_request(ofconn, oh);    case OFPTYPE_GET_CONFIG_REQUEST:        return handle_get_config_request(ofconn, oh);    case OFPTYPE_SET_CONFIG:          return handle_set_config(ofconn, oh);    case OFPTYPE_PACKET_OUT:        return handle_packet_out(ofconn, oh);    case OFPTYPE_PORT_MOD:        return handle_port_mod(ofconn, oh);    case OFPTYPE_FLOW_MOD:        return handle_flow_mod(ofconn, oh);    case OFPTYPE_BARRIER_REQUEST:        return handle_barrier_request(ofconn, oh);        /* OpenFlow replies. */    case OFPTYPE_ECHO_REPLY:        return 0;        /* Nicira extension requests. */    case OFPTYPE_ROLE_REQUEST:        return handle_role_request(ofconn, oh);    case OFPTYPE_FLOW_MOD_TABLE_ID:        return handle_nxt_flow_mod_table_id(ofconn, oh);    case OFPTYPE_SET_FLOW_FORMAT:        return handle_nxt_set_flow_format(ofconn, oh);    case OFPTYPE_SET_PACKET_IN_FORMAT:        return handle_nxt_set_packet_in_format(ofconn, oh);    case OFPTYPE_SET_CONTROLLER_ID:        return handle_nxt_set_controller_id(ofconn, oh);    case OFPTYPE_FLOW_AGE:        /* Nothing to do. */        return 0;    case OFPTYPE_FLOW_MONITOR_CANCEL:        return handle_flow_monitor_cancel(ofconn, oh);    case OFPTYPE_SET_ASYNC_CONFIG:        return handle_nxt_set_async_config(ofconn, oh);        /* Statistics requests. */    case OFPTYPE_DESC_STATS_REQUEST:        return handle_desc_stats_request(ofconn, oh);    case OFPTYPE_FLOW_STATS_REQUEST:        return handle_flow_stats_request(ofconn, oh);    case OFPTYPE_AGGREGATE_STATS_REQUEST:        return handle_aggregate_stats_request(ofconn, oh);    case OFPTYPE_TABLE_STATS_REQUEST:        return handle_table_stats_request(ofconn, oh);    case OFPTYPE_PORT_STATS_REQUEST:        return handle_port_stats_request(ofconn, oh);    case OFPTYPE_QUEUE_STATS_REQUEST:        return handle_queue_stats_request(ofconn, oh);    case OFPTYPE_PORT_DESC_STATS_REQUEST:        return handle_port_desc_stats_request(ofconn, oh);    case OFPTYPE_FLOW_MONITOR_STATS_REQUEST:        return handle_flow_monitor_request(ofconn, oh);    case OFPTYPE_HELLO:    case OFPTYPE_ERROR:    case OFPTYPE_FEATURES_REPLY:    case OFPTYPE_GET_CONFIG_REPLY:    case OFPTYPE_PACKET_IN:    case OFPTYPE_FLOW_REMOVED:    case OFPTYPE_PORT_STATUS:    case OFPTYPE_BARRIER_REPLY:    case OFPTYPE_DESC_STATS_REPLY:    case OFPTYPE_FLOW_STATS_REPLY:    case OFPTYPE_QUEUE_STATS_REPLY:    case OFPTYPE_PORT_STATS_REPLY:    case OFPTYPE_TABLE_STATS_REPLY:    case OFPTYPE_AGGREGATE_STATS_REPLY:    case OFPTYPE_PORT_DESC_STATS_REPLY:    case OFPTYPE_ROLE_REPLY:    case OFPTYPE_FLOW_MONITOR_PAUSED:    case OFPTYPE_FLOW_MONITOR_RESUMED:    case OFPTYPE_FLOW_MONITOR_STATS_REPLY:    default:        return OFPERR_OFPBRC_BAD_TYPE;    }}

转载地址:http://mpqal.baihongyu.com/

你可能感兴趣的文章
管理Mongodb 集群所用到的系统管理及监控
查看>>
python中用try来处理程序异常的集中常用方法
查看>>
[CTO札记]惊讶于警察尚未用LBS(手机定位服务)来追踪疑犯
查看>>
HP MSL2024带库无法弹出Media Slot,无法更换磁盘尝试
查看>>
打开磁盘管理器,提示:RPC服务器不可用
查看>>
MIX 2008与ASP.NET MVC框架的Road-Map
查看>>
git忽略文件【转】
查看>>
sklearn的train_test_split,果然很好用啊!
查看>>
什么是域(domain)
查看>>
在VisualStudio中应该使用什么字体
查看>>
一个C#的加锁解锁示例
查看>>
Android应用在不同版本间兼容性处理
查看>>
Win8:WinJS.UI.AppBar 工具栏
查看>>
Java中的强引用、软引用、弱引用和虚引用
查看>>
ios: NSConditionLock
查看>>
FreeMarker整合Spring 3
查看>>
云计算与网格计算的深入比较
查看>>
Mybatis oracle多表联合查询分页数据重复的问题
查看>>
oc83--自定义类实现copy方法
查看>>
What's New in iOS7,iOS7新特性介绍
查看>>