/*
- * 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 <config.h>
+
#include "stp.h"
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>
#include "ofpbuf.h"
#include "packets.h"
+#include "vlog.h"
struct bpdu {
int port_no;
}
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;
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;
}
}
pos++;
}
if (*pos == '\0') {
+ free(token);
token = NULL;
return false;
}
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");
}
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);
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_unref(bridge->stp);
+ free(bridge);
+ }
+ free(tc);
return 0;
}