コード例 #1
0
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, "}");
}
コード例 #2
0
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, "}");
}