Exemplo n.º 1
0
bool    cmd_show_logger(vty_t* vty, variant_stack_t* params)
{
    if(logger_is_enabled())
    {
        vty_write(vty, "logging enable\n");
    }
    else
    {
        vty_write(vty, "no logging enable\n");
    }

    int hist_size = logger_get_buffer_size();
    if(hist_size > 0)
    {
        vty_write(vty, "logging history %d\n", hist_size);
    }
    else
    {
        vty_write(vty, "no logging history\n");
    }

    for(int i = 0; i < logger_services_size; i++)
    {
        logger_service_t* s = *(logger_services + i);
        if(s->enabled)
        {
            switch(logger_get_level(s->service_id))
            {
            case LOG_LEVEL_BASIC:
                vty_write(vty, "logging class %s info\n", s->service_name);
                break;
            case LOG_LEVEL_ERROR:
                vty_write(vty, "logging class %s error\n", s->service_name);
                break;
            case LOG_LEVEL_ADVANCED:
                vty_write(vty, "logging class %s advanced\n", s->service_name);
                break;
            case LOG_LEVEL_DEBUG:
                vty_write(vty, "logging class %s debug\n", s->service_name);
                break;
            }
        }
    }
}
Exemplo n.º 2
0
/* Called by the DP to process an incoming packet. */
void
pipeline_process(struct dp_loop *dp_loop, struct pl_pkt *pl_pkt) {
    if (logger_is_enabled(dp_loop->logger_pl, LOG_DEBUG)) {
        char *str = pl_pkt_to_string(pl_pkt);

        logger_log(dp_loop->logger_pl, LOG_DEBUG, "Received packet:\n%s", str);
        free(str);
    }

    pl_pkt->logger = dp_loop->logger_pkt;

    of_tableid_t next_table = 0;

    while (next_table != OF_ALL_TABLE) {
        logger_log(dp_loop->logger_pl, LOG_DEBUG, "Trying table %u.", next_table);

        if (!pl_pkt_is_ttl_valid(pl_pkt)) {
            if ((dp_loop->of_conf.flags & OFPC_INVALID_TTL_TO_CONTROLLER) != 0) {
                logger_log(dp_loop->logger_pl, LOG_INFO, "Packet has invalid TTL, sending to controller.");

                // NOTE: no valid reason for invalid ttl in spec.
                dp_pl_pkt_to_ctrl(dp_loop, dp_loop->of_conf.miss_send_len, pl_pkt, OFPR_NO_MATCH);
            } else {
                logger_log(dp_loop->logger_pl, LOG_INFO, "Packet has invalid TTL, dropping.");
                //TODO check clean up packet
                pl_pkt_free(pl_pkt, true);
            }
            return;
        }

        pl_pkt->table_id = next_table;
        next_table = flow_table_exec(dp_loop->tables[next_table], pl_pkt, ev_now(dp_loop->loop));
    }

    logger_log(dp_loop->logger_pl, LOG_DEBUG, "Finished pipeline, executing action set.");
    action_set_exec(dp_loop, pl_pkt->act_set, pl_pkt);
    pl_pkt_free(pl_pkt, true);
    logger_log(dp_loop->logger_pl, LOG_DEBUG, "Pipeline done.");
}