ovs-dpctl crashed due to uninitialized router classifier. To fix this issue move ovs router initialization to route table module.
Reported-by: Madhu Challa <[email protected]> Signed-off-by: Pravin B Shelar <[email protected]> --- v1-v2: Initialize route-table from dpif init. --- lib/dpif.c | 1 + lib/netdev-vport.c | 2 -- lib/ovs-router.c | 2 +- lib/ovs-router.h | 2 +- lib/route-table.c | 1 + ofproto/ofproto-dpif.c | 1 - 6 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/dpif.c b/lib/dpif.c index d179d8a..844f869 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -118,6 +118,7 @@ dp_initialize(void) ovsthread_once_done(&once); tnl_port_map_init(); tnl_arp_cache_init(); + route_table_register(); } } diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c index 167212e..3825a09 100644 --- a/lib/netdev-vport.c +++ b/lib/netdev-vport.c @@ -254,8 +254,6 @@ netdev_vport_construct(struct netdev *netdev_) dev->tnl_cfg.dst_port = htons(LISP_DST_PORT); } - route_table_register(); - return 0; } diff --git a/lib/ovs-router.c b/lib/ovs-router.c index 6b5ba00..e4f8a08 100644 --- a/lib/ovs-router.c +++ b/lib/ovs-router.c @@ -281,7 +281,7 @@ ovs_router_flush(void) /* May not be called more than once. */ void -ovs_router_unixctl_register(void) +ovs_router_init(void) { classifier_init(&cls, NULL); unixctl_command_register("ovs/route/add", "ipv4_addr/prefix_len out_br_name gw", 2, 3, diff --git a/lib/ovs-router.h b/lib/ovs-router.h index 92d15c6..b0042cc 100644 --- a/lib/ovs-router.h +++ b/lib/ovs-router.h @@ -24,7 +24,7 @@ extern "C" { #endif bool ovs_router_lookup(ovs_be32 ip_dst, char out_dev[], ovs_be32 *gw); -void ovs_router_unixctl_register(void); +void ovs_router_init(void); #ifdef __cplusplus } #endif diff --git a/lib/route-table.c b/lib/route-table.c index 6261954..63a9bd3 100644 --- a/lib/route-table.c +++ b/lib/route-table.c @@ -96,6 +96,7 @@ route_table_register(void) 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); diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 3f8768d..c8e11c2 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -1253,7 +1253,6 @@ construct(struct ofproto *ofproto_) guarded_list_init(&ofproto->pins); ofproto_unixctl_init(); - ovs_router_unixctl_register(); hmap_init(&ofproto->vlandev_map); hmap_init(&ofproto->realdev_vid_map); -- 1.7.1 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
