Since dpif registering for routing table at initialization
there is no need to unregister it. Following patch removes
support for turning routing table notifications on and off.
Due to this change OVS always listens for these
notifications.
Reported-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
dpctl_unixctl_register();
tnl_port_map_init();
tnl_arp_cache_init();
dpctl_unixctl_register();
tnl_port_map_init();
tnl_arp_cache_init();
- route_table_register();
for (i = 0; i < ARRAY_SIZE(base_dpif_classes); i++) {
dp_register_provider(base_dpif_classes[i]);
for (i = 0; i < ARRAY_SIZE(base_dpif_classes); i++) {
dp_register_provider(base_dpif_classes[i]);
{
struct netdev_vport *netdev = netdev_vport_cast(netdev_);
{
struct netdev_vport *netdev = netdev_vport_cast(netdev_);
- route_table_unregister();
free(netdev->peer);
ovs_mutex_destroy(&netdev->mutex);
}
free(netdev->peer);
ovs_mutex_destroy(&netdev->mutex);
}
#include "util.h"
static int pid;
#include "util.h"
static int pid;
-static unsigned int register_count = 0;
bool
ovs_router_lookup(ovs_be32 ip, char name[], ovs_be32 *gw)
bool
ovs_router_lookup(ovs_be32 ip, char name[], ovs_be32 *gw)
-route_table_register(void)
- if (!register_count)
- {
- pid = getpid();
- }
-
- register_count++;
-}
-
-void
-route_table_unregister(void)
-{
- register_count--;
-route_table_register(void)
-{
-}
-
-void
-route_table_unregister(void)
* every time route_table_reset() is called. */
static uint64_t rt_change_seq;
* every time route_table_reset() is called. */
static uint64_t rt_change_seq;
-static unsigned int register_count = 0;
static struct nln *nln = NULL;
static struct route_table_msg rtmsg;
static struct nln_notifier *route_notifier = NULL;
static struct nln *nln = NULL;
static struct route_table_msg rtmsg;
static struct nln_notifier *route_notifier = NULL;
static void route_map_clear(void);
static void name_table_init(void);
static void route_map_clear(void);
static void name_table_init(void);
-static void name_table_uninit(void);
static void name_table_change(const struct rtnetlink_link_change *, void *);
uint64_t
static void name_table_change(const struct rtnetlink_link_change *, void *);
uint64_t
/* Users of the route_table module should register themselves with this
* function before making any other route_table function calls. */
void
/* Users of the route_table module should register themselves with this
* function before making any other route_table function calls. */
void
-route_table_register(void)
OVS_EXCLUDED(route_table_mutex)
{
ovs_mutex_lock(&route_table_mutex);
OVS_EXCLUDED(route_table_mutex)
{
ovs_mutex_lock(&route_table_mutex);
- if (!register_count) {
- ovs_assert(!nln);
- ovs_assert(!route_notifier);
+ ovs_assert(!nln);
+ ovs_assert(!route_notifier);
- ovs_router_init();
- nln = nln_create(NETLINK_ROUTE, RTNLGRP_IPV4_ROUTE,
- (nln_parse_func *) route_table_parse, &rtmsg);
+ ovs_router_init();
+ nln = nln_create(NETLINK_ROUTE, RTNLGRP_IPV4_ROUTE,
+ (nln_parse_func *) route_table_parse, &rtmsg);
- route_notifier =
- nln_notifier_create(nln, (nln_notify_func *) route_table_change,
- NULL);
+ route_notifier =
+ nln_notifier_create(nln, (nln_notify_func *) route_table_change,
+ NULL);
- route_table_reset();
- name_table_init();
- }
-
- register_count++;
- ovs_mutex_unlock(&route_table_mutex);
-}
-
-/* Users of the route_table module should unregister themselves with this
- * function when they will no longer be making any more route_table fuction
- * calls. */
-void
-route_table_unregister(void)
- OVS_EXCLUDED(route_table_mutex)
-{
- ovs_mutex_lock(&route_table_mutex);
- register_count--;
+ route_table_reset();
+ name_table_init();
- if (!register_count) {
- nln_notifier_destroy(route_notifier);
- route_notifier = NULL;
- nln_destroy(nln);
- nln = NULL;
-
- route_map_clear();
- name_table_uninit();
- }
ovs_mutex_unlock(&route_table_mutex);
}
ovs_mutex_unlock(&route_table_mutex);
}
name_notifier = rtnetlink_link_notifier_create(name_table_change, NULL);
}
name_notifier = rtnetlink_link_notifier_create(name_table_change, NULL);
}
-static void
-name_table_uninit(void)
-{
- rtnetlink_link_notifier_destroy(name_notifier);
- name_notifier = NULL;
-}
static void
name_table_change(const struct rtnetlink_link_change *change OVS_UNUSED,
static void
name_table_change(const struct rtnetlink_link_change *change OVS_UNUSED,
#include "openvswitch/types.h"
uint64_t route_table_get_change_seq(void);
#include "openvswitch/types.h"
uint64_t route_table_get_change_seq(void);
-void route_table_register(void);
-void route_table_unregister(void);
+void route_table_init(void);
void route_table_run(void);
void route_table_wait(void);
void route_table_run(void);
void route_table_wait(void);
ds->next_tick = time_now() + 1;
hmap_init(&ds->ports);
ds->probability = 0;
ds->next_tick = time_now() + 1;
hmap_init(&ds->ports);
ds->probability = 0;
- route_table_register();
ovs_refcount_init(&ds->ref_cnt);
return ds;
ovs_refcount_init(&ds->ref_cnt);
return ds;
if (ds && ovs_refcount_unref_relaxed(&ds->ref_cnt) == 1) {
struct dpif_sflow_port *dsp, *next;
if (ds && ovs_refcount_unref_relaxed(&ds->ref_cnt) == 1) {
struct dpif_sflow_port *dsp, *next;
- route_table_unregister();
dpif_sflow_clear(ds);
HMAP_FOR_EACH_SAFE (dsp, next, hmap_node, &ds->ports) {
dpif_sflow_del_port__(ds, dsp);
dpif_sflow_clear(ds);
HMAP_FOR_EACH_SAFE (dsp, next, hmap_node, &ds->ports) {
dpif_sflow_del_port__(ds, dsp);