diff options
author | Binbin Xu <xu.binbin1@zte.com.cn> | 2016-09-21 03:54:05 +0800 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2016-09-20 08:08:56 -0700 |
commit | 8483173bff2589a2c1515f711bc0e337792f1995 (patch) | |
tree | c86d5442456ed786aba3af453023af1970502bda /ofproto | |
parent | 9ef3a410b2d93ae6890c6e831dd3ed84d3c374d9 (diff) | |
download | openvswitch-8483173bff2589a2c1515f711bc0e337792f1995.tar.gz |
ofproto: Remove groups that nested actions reference when removing rule.
topology:
+----------------+
+-------->| SDN Controller |<--------------+
| +----------------+ |
| |
+-----------|-----+ +-----------|-----+
| +-----+ | | | +-----+ | |
| | VM1 | | | | | VM2 | | |
| +-----+ | | | +-----+ | |
| ^ V | | ^ V |
| | +-----+ | | | +-----+ |
| +-> | OVS | | | +-> | OVS | |
| +-----+ | | +-----+ |
| ^ | | ^ |
+-----------|-----+ +-----------|-----+
| Nic Nic|
+------------------------------------------+
We start the communication between VM1 and VM2, for example, ICMP.
At the meantime, disconnect OVS and SDN controller, and reconnect
them again, the process ovs-vswitchd crashes.
backtrace:
0 0x00007f658082ffe4 in cls_rule_make_invisible_in_version ()
1 0x00007f65807f6bb3 in delete_flows_start__ ()
2 0x00007f65807f7ee9 in ofproto_group_mod_start ()
3 0x00007f65807fa07b in handle_openflow ()
4 0x00007f658082119b in connmgr_run ()
5 0x00007f65807f3ba6 in ofproto_run ()
6 0x00007f65807e101c in bridge_run__ ()
7 0x00007f65807e715d in bridge_run ()
8 0x00007f658065784d in main ()
Signed-off-by: Binbin Xu <xu.binbin1@zte.com.cn>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ofproto')
-rwxr-xr-x[-rw-r--r--] | ofproto/ofproto.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 26848deeb..364cab233 100644..100755 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -8436,7 +8436,7 @@ ofproto_rule_remove__(struct ofproto *ofproto, struct rule *rule) if (actions->has_groups) { const struct ofpact_group *a; - OFPACT_FOR_EACH_TYPE (a, GROUP, actions->ofpacts, + OFPACT_FOR_EACH_TYPE_FLATTENED(a, GROUP, actions->ofpacts, actions->ofpacts_len) { struct ofgroup *group; |