Beispiel #1
0
static int
ofl_msg_print_stats_request(struct ofl_msg_stats_request_header *msg, FILE *stream, struct ofl_exp *exp, char *errbuf) {
    if (msg->type == OFPST_EXPERIMENTER) {
        if (exp != NULL && exp->stats != NULL && exp->stats->req_to_string != NULL) {
            char *c = exp->stats->req_to_string(msg);
            fputs(c, stream);
            free(c);
            return 0;
        } else {
            if (errbuf != NULL) {
                snprintf(errbuf, OFL_ERRBUF_SIZE, "Trying to print EXPERIMENTER stats request, but no callback was given.");
                return -1;
            }
        }
    }

    fprintf(stream, "{type=\"");
    ofl_stats_type_print(stream, msg->type);
    fprintf(stream, "\", flags=\"0x%"PRIx32"\"", msg->flags);

    switch (msg->type) {
        case OFPST_DESC: {
            break;
        }
        case OFPST_FLOW:
        case OFPST_AGGREGATE: {
            ofl_msg_print_stats_request_flow((struct ofl_msg_stats_request_flow *)msg, stream, exp);
            break;
        }
        case OFPST_TABLE: {
            break;
        }
        case OFPST_PORT: {
            ofl_msg_print_stats_request_port((struct ofl_msg_stats_request_port *)msg, stream);
            break;
        }
        case OFPST_QUEUE: {
            ofl_msg_print_stats_request_queue((struct ofl_msg_stats_request_queue *)msg, stream);
            break;
        }
        case OFPST_GROUP: {
            ofl_msg_print_stats_request_group((struct ofl_msg_stats_request_group *)msg, stream);
            break;
        }
        case OFPST_GROUP_DESC: {
            break;
        }
        case OFPST_EXPERIMENTER: {
            ofl_msg_print_stats_request_experimenter((struct ofl_msg_stats_request_experimenter *)msg, stream);
            break;
        }
    }
    fprintf(stream, "}");
    return 0;
}
static void
ofl_msg_print_multipart_request(struct ofl_msg_multipart_request_header *msg, FILE *stream, struct ofl_exp *exp) {
    if (msg->type == OFPMP_EXPERIMENTER) {
        if (exp != NULL && exp->stats != NULL && exp->stats->req_to_string != NULL) {
            char *c = exp->stats->req_to_string(msg);
            fputs(c, stream);
            free(c);
            return;
        } else {
            OFL_LOG_WARN(LOG_MODULE, "Trying to print EXPERIMENTER stats request, 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: {
            break;
        }
        case OFPMP_FLOW:
        case OFPMP_AGGREGATE: {
            ofl_msg_print_stats_request_flow((struct ofl_msg_multipart_request_flow *)msg, stream, exp);
            break;
        }
        case OFPMP_TABLE: {
            break;
        }
        case OFPMP_TABLE_FEATURES: {
            ofl_msg_print_table_features_request((struct ofl_msg_multipart_request_table_features*)msg, stream);        
            break;
        }
        case OFPMP_PORT_STATS: {
            ofl_msg_print_stats_request_port((struct ofl_msg_multipart_request_port *)msg, stream);
            break;
        }
        case OFPMP_QUEUE: {
            ofl_msg_print_stats_request_queue((struct ofl_msg_multipart_request_queue *)msg, stream);
            break;
        }
        case OFPMP_GROUP: {
            ofl_msg_print_stats_request_group((struct ofl_msg_multipart_request_group *)msg, stream);
            break;
        }
        case OFPMP_GROUP_DESC: {
            break;
        }
        case OFPMP_GROUP_FEATURES:{
            break;
        }
        case OFPMP_METER:
        case OFPMP_METER_CONFIG:{
            ofl_msg_print_meter_stats_request((struct ofl_msg_multipart_meter_request*)msg, stream);
            break;
        }
        case OFPMP_METER_FEATURES:{
            break;
        }    
        case OFPMP_PORT_DESC:{
            break;
        }
        //TIME_EXTENTION_EXP(open)
        case OFPMP_BUNDLE_FEATURES:{
        	ofl_msg_print_bundle_features_req((struct ofl_msg_multipart_request_bundle_features*)msg, stream);
            break;
        }
        //TIME_EXTENTION_EXP(close)
        case OFPMP_EXPERIMENTER: {
            ofl_msg_print_stats_request_experimenter((struct ofl_msg_multipart_request_experimenter *)msg, stream);
            break;
        }
    }
    fprintf(stream, "}");
}