git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
check that tap device is actually created
[sliver-openvswitch.git]
/
lib
/
route-table.c
diff --git
a/lib/route-table.c
b/lib/route-table.c
index
c8245df
..
5bdcfb0
100644
(file)
--- a/
lib/route-table.c
+++ b/
lib/route-table.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2011
Nicira Networks
.
+ * Copyright (c) 2011
, 2012 Nicira, Inc
.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-18,7
+18,6
@@
#include "route-table.h"
#include "route-table.h"
-#include <assert.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <linux/rtnetlink.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <linux/rtnetlink.h>
@@
-69,8
+68,8
@@
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20);
static unsigned int register_count = 0;
static struct nln *nln = NULL;
static struct route_table_msg rtmsg;
static unsigned int register_count = 0;
static struct nln *nln = NULL;
static struct route_table_msg rtmsg;
-static struct nln_notifier
route_notifier
;
-static struct nln_notifier
name_notifier
;
+static struct nln_notifier
*route_notifier = NULL
;
+static struct nln_notifier
*name_notifier = NULL
;
static bool route_table_valid = false;
static bool name_table_valid = false;
static bool route_table_valid = false;
static bool name_table_valid = false;
@@
-161,12
+160,15
@@
void
route_table_register(void)
{
if (!register_count) {
route_table_register(void)
{
if (!register_count) {
- assert(!nln);
+ ovs_assert(!nln);
+ ovs_assert(!route_notifier);
nln = nln_create(NETLINK_ROUTE, RTNLGRP_IPV4_ROUTE,
(nln_parse_func *) route_table_parse, &rtmsg);
nln = nln_create(NETLINK_ROUTE, RTNLGRP_IPV4_ROUTE,
(nln_parse_func *) route_table_parse, &rtmsg);
- nln_notifier_register(nln, &route_notifier,
- (nln_notify_func *) route_table_change, NULL);
+
+ route_notifier =
+ nln_notifier_create(nln, (nln_notify_func *) route_table_change,
+ NULL);
hmap_init(&route_map);
route_table_reset();
hmap_init(&route_map);
route_table_reset();
@@
-185,6
+187,8
@@
route_table_unregister(void)
register_count--;
if (!register_count) {
register_count--;
if (!register_count) {
+ nln_notifier_destroy(route_notifier);
+ route_notifier = NULL;
nln_destroy(nln);
nln = NULL;
nln_destroy(nln);
nln = NULL;
@@
-241,6
+245,7
@@
route_table_reset(void)
rtmsg->rtgen_family = AF_INET;
nl_dump_start(&dump, rtnl_sock, &request);
rtmsg->rtgen_family = AF_INET;
nl_dump_start(&dump, rtnl_sock, &request);
+ ofpbuf_uninit(&request);
while (nl_dump_next(&dump, &reply)) {
struct route_table_msg msg;
while (nl_dump_next(&dump, &reply)) {
struct route_table_msg msg;
@@
-396,14
+401,15
@@
static void
name_table_init(void)
{
hmap_init(&name_map);
name_table_init(void)
{
hmap_init(&name_map);
-
rtnetlink_link_notifier_register(&name_notifier,
name_table_change, NULL);
+
name_notifier = rtnetlink_link_notifier_create(
name_table_change, NULL);
name_table_valid = false;
}
static void
name_table_uninit(void)
{
name_table_valid = false;
}
static void
name_table_uninit(void)
{
- rtnetlink_link_notifier_unregister(&name_notifier);
+ rtnetlink_link_notifier_destroy(name_notifier);
+ name_notifier = NULL;
name_map_clear();
hmap_destroy(&name_map);
}
name_map_clear();
hmap_destroy(&name_map);
}
@@
-431,6
+437,8
@@
name_table_reset(void)
rtmsg->rtgen_family = AF_INET;
nl_dump_start(&dump, rtnl_sock, &request);
rtmsg->rtgen_family = AF_INET;
nl_dump_start(&dump, rtnl_sock, &request);
+ ofpbuf_uninit(&request);
+
while (nl_dump_next(&dump, &reply)) {
struct rtnetlink_link_change change;
while (nl_dump_next(&dump, &reply)) {
struct rtnetlink_link_change change;