X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Ftest-stp.c;h=0acc7e0d91e46e03e685bd632558bde01142b730;hb=51c14ddd8df9617e641748a98ac52b78fd19290a;hp=073368154d6fa86969f23ebb59891cab5b489090;hpb=064af42167bf4fc9aaea2702d80ce08074b889c0;p=openvswitch diff --git a/tests/test-stp.c b/tests/test-stp.c index 07336815..0acc7e0d 100644 --- a/tests/test-stp.c +++ b/tests/test-stp.c @@ -1,19 +1,21 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2012 Nicira, Inc. * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ +#include + #include "stp.h" #include #include @@ -23,6 +25,7 @@ #include #include "ofpbuf.h" #include "packets.h" +#include "vlog.h" struct bpdu { int port_no; @@ -241,7 +244,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 +304,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; } } @@ -357,6 +361,7 @@ get_token(void) pos++; } if (*pos == '\0') { + free(token); token = NULL; return false; } @@ -436,6 +441,9 @@ main(int argc, char *argv[]) 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"); } @@ -501,8 +509,9 @@ main(int argc, char *argv[]) if (!strcmp(token, "0")) { lan = NULL; - } else if (strlen(token) == 1 && islower(*token)) { - lan = tc->lans[*token - 'a']; + } else if (strlen(token) == 1 + && islower((unsigned char)*token)) { + lan = tc->lans[*token - 'a']; } else { err("%s is not a valid LAN name " "(0 or a lowercase letter)", token); @@ -643,6 +652,19 @@ main(int argc, char *argv[]) err("trailing garbage on line"); } } + free(token); + + 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_destroy(bridge->stp); + free(bridge); + } + free(tc); return 0; }