Re: [ovs-dev] [PATCH v3] route-table: Remove netdevs in netdev_hash when deleted

2017-08-14 Thread fukaige


> -Original Message-
> From: Tonghao Zhang [mailto:xiangxia.m@gmail.com]
> Sent: Thursday, August 10, 2017 9:23 AM
> To: fukaige
> Cc: ovs dev
> Subject: Re: [ovs-dev] [PATCH v3] route-table: Remove netdevs in netdev_hash
> when deleted
> 
> why not remove the function of route_table_link_del to name_table_change() ?
> 

Thanks for review. Seems it is a better way to use function of 
name_table_change() instead of
rewriting a new function. 
I will modify it in v4 patch.

> On Wed, Aug 9, 2017 at 3:41 PM, fukaige <fuka...@huawei.com> wrote:
> > From: Kaige Fu <fuka...@huawei.com>
> >
> > Start a virtual machine with its backend tap device attached to a brought up
> linux bridge.
> > If we delete the linux bridge when vm is still running, we'll get the
> > following error when trying to create a ovs bridge with the same name.
> >
> > The reason is that ovs-router subsystem add the linux bridge into
> > netdev_shash, but does not remove it when the bridge is deleted in the
> > situation. When the bridge is deleted, ovs will receive a RTM_DELLINK msg,
> take this chance to remove the bridge in netdev_shash.
> >
> > ovs-vsctl: Error detected while setting up 'br-eth'.  See ovs-vswitchd log 
> > for
> details.
> >
> > ovs-vswitchd log:
> > 2017-05-11T03:45:25.293Z|00026|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports recirculation
> > 2017-05-11T03:45:25.293Z|00027|ofproto_dpif|INFO|system@ovs-system:
> > MPLS label stack length probed as 1
> > 2017-05-11T03:45:25.293Z|00028|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports unique flow ids
> > 2017-05-11T03:45:25.293Z|00029|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports ct_state
> > 2017-05-11T03:45:25.293Z|00030|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports ct_zone
> > 2017-05-11T03:45:25.293Z|00031|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports ct_mark
> > 2017-05-11T03:45:25.293Z|00032|ofproto_dpif|INFO|system@ovs-system:
> > Datapath supports ct_label
> > 2017-05-11T03:45:25.364Z|1|ofproto_dpif_upcall(handler226)|INFO|re
> > ceived packet on unassociated datapath port 0
> > 2017-05-11T03:45:25.368Z|00033|netdev_linux|WARN|ethtool command
> > ETHTOOL_GFLAGS on network device br-eth failed: No such device
> > 2017-05-11T03:45:25.368Z|00034|dpif|WARN|system@ovs-system: failed
> to
> > add br-eth as port: No such device
> > 2017-05-11T03:45:25.368Z|00035|bridge|INFO|bridge br-eth: using
> > datapath ID 2a51cf9f2841
> > 2017-05-11T03:45:25.368Z|00036|connmgr|INFO|br-eth: added service
> controller "punix:/var/run/openvswitch/br-eth.mgmt"
> >
> > Signed-off-by: Kaige Fu <fuka...@huawei.com>
> > ---
> >  lib/route-table.c | 15 +++
> >  1 file changed, 15 insertions(+)
> >
> > diff --git a/lib/route-table.c b/lib/route-table.c index
> > 67fda31..5107056 100644
> > --- a/lib/route-table.c
> > +++ b/lib/route-table.c
> > @@ -33,6 +33,7 @@
> >  #include "ovs-router.h"
> >  #include "packets.h"
> >  #include "rtnetlink.h"
> > +#include "tnl-ports.h"
> >  #include "openvswitch/vlog.h"
> >
> >  /* Linux 2.6.36 added RTA_MARK, so define it just in case we're
> > building with @@ -79,6 +80,7 @@ static int route_table_reset(void);
> > static void route_table_handle_msg(const struct route_table_msg *);
> > static int route_table_parse(struct ofpbuf *, struct route_table_msg
> > *);  static void route_table_change(const struct route_table_msg *,
> > void *);
> > +static void route_table_link_del(const struct rtnetlink_change *,
> > +void *);
> >  static void route_map_clear(void);
> >
> >  static void name_table_init(void);
> > @@ -112,6 +114,8 @@ route_table_init(void)
> >  nln_notifier_create(nln, RTNLGRP_IPV6_ROUTE,
> >  (nln_notify_func *) route_table_change,
> > NULL);
> >
> > +rtnetlink_notifier_create(route_table_link_del, NULL);
> > +
> >  route_table_reset();
> >  name_table_init();
> >
> > @@ -297,6 +301,17 @@ route_table_change(const struct route_table_msg
> > *change OVS_UNUSED,  }
> >
> >  static void
> > +route_table_link_del(const struct rtnetlink_change *change,
> > + void *aux OVS_UNUSED) {
> > +if(change && change->nlmsg_type == RTM_DELLINK) {
> > +if(change->ifname) {
> > +tnl_port_map_delete_ipdev(change->ifname);
> > +}
> > +}
> > +}
> > +
> > +static void
> >  route_table_handle_msg(const struct route_table_msg *change)  {
> >  if (change->relevant && change->nlmsg_type == RTM_NEWROUTE) {
> > --
> > 1.8.3.1
> >
> >
> > ___
> > dev mailing list
> > d...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH v3] route-table: Remove netdevs in netdev_hash when deleted

2017-08-09 Thread Tonghao Zhang
why not remove the function of route_table_link_del to name_table_change() ?

On Wed, Aug 9, 2017 at 3:41 PM, fukaige  wrote:
> From: Kaige Fu 
>
> Start a virtual machine with its backend tap device attached to a brought up 
> linux bridge.
> If we delete the linux bridge when vm is still running, we'll get the 
> following error when
> trying to create a ovs bridge with the same name.
>
> The reason is that ovs-router subsystem add the linux bridge into 
> netdev_shash, but does
> not remove it when the bridge is deleted in the situation. When the bridge is 
> deleted, ovs
> will receive a RTM_DELLINK msg, take this chance to remove the bridge in 
> netdev_shash.
>
> ovs-vsctl: Error detected while setting up 'br-eth'.  See ovs-vswitchd log 
> for details.
>
> ovs-vswitchd log:
> 2017-05-11T03:45:25.293Z|00026|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports recirculation
> 2017-05-11T03:45:25.293Z|00027|ofproto_dpif|INFO|system@ovs-system: MPLS 
> label stack length probed as 1
> 2017-05-11T03:45:25.293Z|00028|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports unique flow ids
> 2017-05-11T03:45:25.293Z|00029|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports ct_state
> 2017-05-11T03:45:25.293Z|00030|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports ct_zone
> 2017-05-11T03:45:25.293Z|00031|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports ct_mark
> 2017-05-11T03:45:25.293Z|00032|ofproto_dpif|INFO|system@ovs-system: Datapath 
> supports ct_label
> 2017-05-11T03:45:25.364Z|1|ofproto_dpif_upcall(handler226)|INFO|received 
> packet on unassociated datapath port 0
> 2017-05-11T03:45:25.368Z|00033|netdev_linux|WARN|ethtool command 
> ETHTOOL_GFLAGS on network device br-eth failed: No such device
> 2017-05-11T03:45:25.368Z|00034|dpif|WARN|system@ovs-system: failed to add 
> br-eth as port: No such device
> 2017-05-11T03:45:25.368Z|00035|bridge|INFO|bridge br-eth: using datapath ID 
> 2a51cf9f2841
> 2017-05-11T03:45:25.368Z|00036|connmgr|INFO|br-eth: added service controller 
> "punix:/var/run/openvswitch/br-eth.mgmt"
>
> Signed-off-by: Kaige Fu 
> ---
>  lib/route-table.c | 15 +++
>  1 file changed, 15 insertions(+)
>
> diff --git a/lib/route-table.c b/lib/route-table.c
> index 67fda31..5107056 100644
> --- a/lib/route-table.c
> +++ b/lib/route-table.c
> @@ -33,6 +33,7 @@
>  #include "ovs-router.h"
>  #include "packets.h"
>  #include "rtnetlink.h"
> +#include "tnl-ports.h"
>  #include "openvswitch/vlog.h"
>
>  /* Linux 2.6.36 added RTA_MARK, so define it just in case we're building with
> @@ -79,6 +80,7 @@ static int route_table_reset(void);
>  static void route_table_handle_msg(const struct route_table_msg *);
>  static int route_table_parse(struct ofpbuf *, struct route_table_msg *);
>  static void route_table_change(const struct route_table_msg *, void *);
> +static void route_table_link_del(const struct rtnetlink_change *, void *);
>  static void route_map_clear(void);
>
>  static void name_table_init(void);
> @@ -112,6 +114,8 @@ route_table_init(void)
>  nln_notifier_create(nln, RTNLGRP_IPV6_ROUTE,
>  (nln_notify_func *) route_table_change, NULL);
>
> +rtnetlink_notifier_create(route_table_link_del, NULL);
> +
>  route_table_reset();
>  name_table_init();
>
> @@ -297,6 +301,17 @@ route_table_change(const struct route_table_msg *change 
> OVS_UNUSED,
>  }
>
>  static void
> +route_table_link_del(const struct rtnetlink_change *change,
> + void *aux OVS_UNUSED)
> +{
> +if(change && change->nlmsg_type == RTM_DELLINK) {
> +if(change->ifname) {
> +tnl_port_map_delete_ipdev(change->ifname);
> +}
> +}
> +}
> +
> +static void
>  route_table_handle_msg(const struct route_table_msg *change)
>  {
>  if (change->relevant && change->nlmsg_type == RTM_NEWROUTE) {
> --
> 1.8.3.1
>
>
> ___
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH v3] route-table: Remove netdevs in netdev_hash when deleted

2017-08-09 Thread fukaige
From: Kaige Fu 

Start a virtual machine with its backend tap device attached to a brought up 
linux bridge.
If we delete the linux bridge when vm is still running, we'll get the following 
error when
trying to create a ovs bridge with the same name.

The reason is that ovs-router subsystem add the linux bridge into netdev_shash, 
but does
not remove it when the bridge is deleted in the situation. When the bridge is 
deleted, ovs
will receive a RTM_DELLINK msg, take this chance to remove the bridge in 
netdev_shash.

ovs-vsctl: Error detected while setting up 'br-eth'.  See ovs-vswitchd log for 
details.

ovs-vswitchd log:
2017-05-11T03:45:25.293Z|00026|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports recirculation
2017-05-11T03:45:25.293Z|00027|ofproto_dpif|INFO|system@ovs-system: MPLS label 
stack length probed as 1
2017-05-11T03:45:25.293Z|00028|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports unique flow ids
2017-05-11T03:45:25.293Z|00029|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports ct_state
2017-05-11T03:45:25.293Z|00030|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports ct_zone
2017-05-11T03:45:25.293Z|00031|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports ct_mark
2017-05-11T03:45:25.293Z|00032|ofproto_dpif|INFO|system@ovs-system: Datapath 
supports ct_label
2017-05-11T03:45:25.364Z|1|ofproto_dpif_upcall(handler226)|INFO|received 
packet on unassociated datapath port 0
2017-05-11T03:45:25.368Z|00033|netdev_linux|WARN|ethtool command ETHTOOL_GFLAGS 
on network device br-eth failed: No such device
2017-05-11T03:45:25.368Z|00034|dpif|WARN|system@ovs-system: failed to add 
br-eth as port: No such device
2017-05-11T03:45:25.368Z|00035|bridge|INFO|bridge br-eth: using datapath ID 
2a51cf9f2841
2017-05-11T03:45:25.368Z|00036|connmgr|INFO|br-eth: added service controller 
"punix:/var/run/openvswitch/br-eth.mgmt"

Signed-off-by: Kaige Fu 
---
 lib/route-table.c | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/lib/route-table.c b/lib/route-table.c
index 67fda31..5107056 100644
--- a/lib/route-table.c
+++ b/lib/route-table.c
@@ -33,6 +33,7 @@
 #include "ovs-router.h"
 #include "packets.h"
 #include "rtnetlink.h"
+#include "tnl-ports.h"
 #include "openvswitch/vlog.h"
 
 /* Linux 2.6.36 added RTA_MARK, so define it just in case we're building with
@@ -79,6 +80,7 @@ static int route_table_reset(void);
 static void route_table_handle_msg(const struct route_table_msg *);
 static int route_table_parse(struct ofpbuf *, struct route_table_msg *);
 static void route_table_change(const struct route_table_msg *, void *);
+static void route_table_link_del(const struct rtnetlink_change *, void *);
 static void route_map_clear(void);
 
 static void name_table_init(void);
@@ -112,6 +114,8 @@ route_table_init(void)
 nln_notifier_create(nln, RTNLGRP_IPV6_ROUTE,
 (nln_notify_func *) route_table_change, NULL);
 
+rtnetlink_notifier_create(route_table_link_del, NULL);
+
 route_table_reset();
 name_table_init();
 
@@ -297,6 +301,17 @@ route_table_change(const struct route_table_msg *change 
OVS_UNUSED,
 }
 
 static void
+route_table_link_del(const struct rtnetlink_change *change,
+ void *aux OVS_UNUSED)
+{
+if(change && change->nlmsg_type == RTM_DELLINK) {
+if(change->ifname) {
+tnl_port_map_delete_ipdev(change->ifname);
+}
+}
+}
+
+static void
 route_table_handle_msg(const struct route_table_msg *change)
 {
 if (change->relevant && change->nlmsg_type == RTM_NEWROUTE) {
-- 
1.8.3.1


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev