openvswitch/log-check-module-loop.patch
Dirk Mueller 8e025c5303 Accepting request 361282 from home:k_mroz:branches:network
- Don't install INSTALL.* files.

- Removed: openvswitch-switch.template

- New upstream version 2.4.0
  - Flow table modifications are now atomic, meaning that each packet
    now sees a coherent version of the OpenFlow pipeline.  For
    example, if a controller removes all flows with a single OpenFlow
    "flow_mod", no packet sees an intermediate version of the OpenFlow
    pipeline where only some of the flows have been deleted.
  - Added support for SFQ, FQ_CoDel and CoDel qdiscs.
  - Add bash command-line completion support for ovs-vsctl Please check
    utilities/ovs-command-compgen.INSTALL.md for how to use.
  - The MAC learning feature now includes per-port fairness to mitigate
    MAC flooding attacks.
  - New support for a "conjunctive match" OpenFlow extension, which
    allows constructing OpenFlow matches of the form "field1 in
    {a,b,c...} AND field2 in {d,e,f...}" and generalizations.  For details,
    see documentation for the "conjunction" action in ovs-ofctl(8).
  - Add bash command-line completion support for ovs-appctl/ovs-dpctl/
    ovs-ofctl/ovsdb-tool commands.  Please check
    utilities/ovs-command-compgen.INSTALL.md for how to use.
  - The "learn" action supports a new flag "delete_learned" that causes
    the learned flows to be deleted when the flow with the "learn" action
    is deleted.
  - Basic support for the Geneve tunneling protocol. It is not yet
    possible to generate or match options. This is planned for a future
    release. The protocol is documented at
    http://tools.ietf.org/html/draft-gross-geneve-00
  - The OVS database now reports controller rate limiting statistics.

OBS-URL: https://build.opensuse.org/request/show/361282
OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=76
2016-02-26 15:24:36 +00:00

37 lines
1.3 KiB
Diff

Index: lib/vlog.c
===================================================================
--- lib/vlog.c.orig
+++ lib/vlog.c
@@ -273,7 +273,7 @@ set_destination_level(enum vlog_destinat
ovs_mutex_lock(&log_file_mutex);
if (!module) {
struct vlog_module *mp;
- LIST_FOR_EACH (mp, list, &vlog_modules) {
+ LIST_FOR_EACH_CHECK (mp, list, &vlog_modules) {
mp->levels[destination] = level;
update_min_level(mp);
}
@@ -397,7 +397,7 @@ vlog_set_log_file(const char *file_name)
log_writer = async_append_create(new_log_fd);
}
- LIST_FOR_EACH (mp, list, &vlog_modules) {
+ LIST_FOR_EACH_CHECK (mp, list, &vlog_modules) {
update_min_level(mp);
}
ovs_mutex_unlock(&log_file_mutex);
Index: lib/list.h
===================================================================
--- lib/list.h.orig
+++ lib/list.h
@@ -271,4 +271,9 @@ list_is_short(const struct ovs_list *lis
return list->next == list->prev;
}
+#define LIST_FOR_EACH_CHECK(ITER, MEMBER, LIST) \
+ for (ASSIGN_CONTAINER(ITER, (LIST)->next, MEMBER); \
+ &(ITER)->MEMBER != (LIST) && (ITER)->MEMBER.next != (ITER)->MEMBER.prev; \
+ ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.next, MEMBER))
+
#endif /* list.h */