static void ofl_msg_print_stats_reply(struct ofl_msg_stats_reply_header *msg, FILE *stream, struct ofl_exp *exp) { if (msg->type == OFPST_EXPERIMENTER) { if (exp != NULL && exp->stats != NULL && exp->stats->reply_to_string != NULL) { char *c = exp->stats->reply_to_string(msg); fputs(c, stream); free(c); return; } else { OFL_LOG_WARN(LOG_MODULE, "Trying to print EXPERIMENTER stats reply, but no callback was given."); } } fprintf(stream, "{type=\""); ofl_stats_type_print(stream, msg->type); fprintf(stream, "\", flags=\"0x%"PRIx32"\"", msg->flags); switch (msg->type) { case (OFPST_DESC): { ofl_msg_print_stats_reply_desc((struct ofl_msg_stats_reply_desc *)msg, stream); break; } case (OFPST_FLOW): { ofl_msg_print_stats_reply_flow((struct ofl_msg_stats_reply_flow *)msg, stream, exp); break; } case OFPST_AGGREGATE: { ofl_msg_print_stats_reply_aggregate((struct ofl_msg_stats_reply_aggregate *)msg, stream); break; } case (OFPST_TABLE): { ofl_msg_print_stats_reply_table((struct ofl_msg_stats_reply_table *)msg, stream); break; } case OFPST_PORT: { ofl_msg_print_stats_reply_port((struct ofl_msg_stats_reply_port *)msg, stream); break; } case OFPST_QUEUE: { ofl_msg_print_stats_reply_queue((struct ofl_msg_stats_reply_queue *)msg, stream); break; } case (OFPST_GROUP): { ofl_msg_print_stats_reply_group((struct ofl_msg_stats_reply_group *)msg, stream); break; } case OFPST_GROUP_DESC: { ofl_msg_print_stats_reply_group_desc((struct ofl_msg_stats_reply_group_desc *)msg, stream, exp); break; } case OFPST_EXPERIMENTER: { ofl_msg_print_stats_reply_experimenter((struct ofl_msg_stats_reply_experimenter *)msg, stream); break; } } fprintf(stream, "}"); }
static void ofl_msg_print_multipart_reply(struct ofl_msg_multipart_reply_header *msg, FILE *stream, struct ofl_exp *exp) { if (msg->type == OFPMP_EXPERIMENTER) { if (exp != NULL && exp->stats != NULL && exp->stats->reply_to_string != NULL) { char *c = exp->stats->reply_to_string(msg); fputs(c, stream); free(c); return; } else { OFL_LOG_WARN(LOG_MODULE, "Trying to print EXPERIMENTER stats reply, but no callback was given."); } } fprintf(stream, "{type=\""); ofl_stats_type_print(stream, msg->type); fprintf(stream, "\", flags=\"0x%"PRIx32"\"", msg->flags); switch (msg->type) { case (OFPMP_DESC): { ofl_msg_print_stats_reply_desc((struct ofl_msg_reply_desc *)msg, stream); break; } case (OFPMP_FLOW): { ofl_msg_print_stats_reply_flow((struct ofl_msg_multipart_reply_flow *)msg, stream, exp); break; } case OFPMP_AGGREGATE: { ofl_msg_print_stats_reply_aggregate((struct ofl_msg_multipart_reply_aggregate *)msg, stream); break; } case (OFPMP_TABLE): { ofl_msg_print_stats_reply_table((struct ofl_msg_multipart_reply_table *)msg, stream); break; } case (OFPMP_TABLE_FEATURES):{ ofl_msg_print_table_features_reply((struct ofl_msg_multipart_reply_table_features*)msg, stream); break; } case OFPMP_PORT_STATS: { ofl_msg_print_stats_reply_port((struct ofl_msg_multipart_reply_port *)msg, stream); break; } case OFPMP_QUEUE: { ofl_msg_print_stats_reply_queue((struct ofl_msg_multipart_reply_queue *)msg, stream); break; } case (OFPMP_GROUP): { ofl_msg_print_stats_reply_group((struct ofl_msg_multipart_reply_group *)msg, stream); break; } case OFPMP_GROUP_DESC: { ofl_msg_print_stats_reply_group_desc((struct ofl_msg_multipart_reply_group_desc *)msg, stream, exp); break; } case OFPMP_GROUP_FEATURES:{ ofl_msg_print_stats_reply_group_features((struct ofl_msg_multipart_reply_group_features *)msg, stream); break; } case OFPMP_METER:{ ofl_msg_print_stats_reply_meter((struct ofl_msg_multipart_reply_meter*)msg, stream); break; } case OFPMP_METER_CONFIG:{ ofl_msg_print_stats_reply_meter_conf((struct ofl_msg_multipart_reply_meter_conf*)msg, stream); break; } case OFPMP_METER_FEATURES:{ ofl_msg_print_reply_meter_features((struct ofl_msg_multipart_reply_meter_features*)msg, stream); break; } case OFPMP_PORT_DESC:{ ofl_msg_print_port_desc_reply((struct ofl_msg_multipart_reply_port_desc*)msg, stream); break; } //TIME_EXTENTION_EXP(open) case OFPMP_BUNDLE_FEATURES:{ ofl_msg_print_bundle_features_reply((struct ofl_msg_multipart_relpy_bundle_features*)msg, stream); break; } //TIME_EXTENTION_EXP(close) case OFPMP_EXPERIMENTER: { ofl_msg_print_stats_reply_experimenter((struct ofl_msg_multipart_reply_experimenter *)msg, stream); break; } } fprintf(stream, "}"); }