X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=tests%2Ftest-stp.c;h=ce3b689b8465c3a7e5a445d775b58e56f57f147d;hb=600766e877efa2713b9c87d127f7190d8ab48da9;hp=ce9decc8d87b2fbb4ffecc96aa017ba4da11e187;hpb=d65349ea28bb67a0062a9b4b60ff97538206373b;p=cascardo%2Fovs.git diff --git a/tests/test-stp.c b/tests/test-stp.c index ce9decc8d..ce3b689b8 100644 --- a/tests/test-stp.c +++ b/tests/test-stp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2012, 2013, 2014 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,8 @@ * limitations under the License. */ +#include +#undef NDEBUG #include "stp.h" #include #include @@ -21,8 +23,11 @@ #include #include #include +#include "dp-packet.h" #include "ofpbuf.h" +#include "ovstest.h" #include "packets.h" +#include "openvswitch/vlog.h" struct bpdu { int port_no; @@ -81,7 +86,7 @@ new_test_case(void) } static void -send_bpdu(struct ofpbuf *pkt, int port_no, void *b_) +send_bpdu(struct dp_packet *pkt, int port_no, void *b_) { struct bridge *b = b_; struct lan *lan; @@ -89,8 +94,8 @@ send_bpdu(struct ofpbuf *pkt, int port_no, void *b_) assert(port_no < b->n_ports); lan = b->ports[port_no]; if (lan) { - const void *data = pkt->l3; - size_t size = (char *) ofpbuf_tail(pkt) - (char *) data; + const void *data = dp_packet_l3(pkt); + size_t size = (char *) dp_packet_tail(pkt) - (char *) data; int i; for (i = 0; i < lan->n_conns; i++) { @@ -105,7 +110,7 @@ send_bpdu(struct ofpbuf *pkt, int port_no, void *b_) } } } - ofpbuf_delete(pkt); + dp_packet_delete(pkt); } static struct bridge * @@ -241,7 +246,7 @@ dump_bridge_tree(struct test_case *tc, struct bridge *b, int level) } static void -dump_lan_tree(struct test_case *tc, struct lan *lan, int level) +dump_lan_tree(struct test_case *tc, struct lan *lan, int level) { int i; @@ -301,6 +306,7 @@ simulate(struct test_case *tc, int granularity) struct bpdu *bpdu = &b->rxq[b->rxq_tail % RXQ_SIZE]; stp_received_bpdu(stp_get_port(b->stp, bpdu->port_no), bpdu->data, bpdu->size); + free(bpdu->data); any = true; } } @@ -311,17 +317,16 @@ simulate(struct test_case *tc, int granularity) } } -static void +OVS_NO_RETURN static void err(const char *message, ...) - PRINTF_FORMAT(1, 2) - NO_RETURN; + OVS_PRINTF_FORMAT(1, 2); static void err(const char *message, ...) { va_list args; - fprintf(stderr, "%s:%d:%td: ", file_name, line_number, pos - line); + fprintf(stderr, "%s:%d:%"PRIdPTR": ", file_name, line_number, pos - line); va_start(args, message); vfprintf(stderr, message, args); va_end(args); @@ -332,7 +337,7 @@ err(const char *message, ...) static void warn(const char *message, ...) - PRINTF_FORMAT(1, 2); + OVS_PRINTF_FORMAT(1, 2); static void warn(const char *message, ...) @@ -357,6 +362,7 @@ get_token(void) pos++; } if (*pos == '\0') { + free(token); token = NULL; return false; } @@ -429,13 +435,16 @@ must_match(const char *want) } } -int -main(int argc, char *argv[]) +static void +test_stp_main(int argc, char *argv[]) { struct test_case *tc; FILE *input_file; int i; + vlog_set_pattern(VLF_CONSOLE, "%c|%p|%m"); + vlog_set_levels(NULL, VLF_SYSLOG, VLL_OFF); + if (argc != 2) { ovs_fatal(0, "usage: test-stp INPUT.STP\n"); } @@ -503,7 +512,7 @@ main(int argc, char *argv[]) lan = NULL; } else if (strlen(token) == 1 && islower((unsigned char)*token)) { - lan = tc->lans[*token - 'a']; + lan = tc->lans[*token - 'a']; } else { err("%s is not a valid LAN name " "(0 or a lowercase letter)", token); @@ -644,6 +653,20 @@ main(int argc, char *argv[]) err("trailing garbage on line"); } } + free(token); - return 0; + for (i = 0; i < tc->n_lans; i++) { + struct lan *lan = tc->lans[i]; + free(CONST_CAST(char *, lan->name)); + free(lan); + } + for (i = 0; i < tc->n_bridges; i++) { + struct bridge *bridge = tc->bridges[i]; + stp_unref(bridge->stp); + free(bridge); + } + free(tc); + fclose(input_file); } + +OVSTEST_REGISTER("test-stp", test_stp_main);