aboutsummaryrefslogtreecommitdiff
path: root/datapath/flow.h
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2011-09-14 13:05:09 -0700
committerJesse Gross <jesse@nicira.com>2011-09-23 15:27:48 -0700
commitb063d9f06e6bb005193a219bcb9f0a74dfdf7882 (patch)
tree01e3bc1f20ecc68adb717ebd18f83b89269424b6 /datapath/flow.h
parent50802adb0e00bbf381c31b9e32a7a6a3e920e7ac (diff)
datapath: Use unicast Netlink sockets for upcalls.
Currently we publish several multicast groups for upcalls and let userspace sockets subscribe to them. The benefit of this is mostly that userspace is the one doing the subscription - the actual multicast capability is not currently used and probably wouldn't be even if we moved to a multiprocess model. Despite the convenience, multicast sockets have a number of disadvantages, primarily that we only have a limited number of them so there could be collisions. In addition, unicast sockets give additional flexibility to userspace by allowing every object to potentially have a different socket chosen by userspace for upcalls. Finally, any future optimizations for upcalls to reduce copying will likely not be compatible with multicast anyways so disallowing it potentially simplifies things. We also never unregistered the multicast groups registered for upcalls and leaked them on module unload. As a side effect, this solves that problem. Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath/flow.h')
-rw-r--r--datapath/flow.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/datapath/flow.h b/datapath/flow.h
index 3590a7df..ae12fe4d 100644
--- a/datapath/flow.h
+++ b/datapath/flow.h
@@ -81,6 +81,7 @@ struct sw_flow {
struct rcu_head rcu;
struct hlist_node hash_node;
u32 hash;
+ u32 upcall_pid;
struct sw_flow_key key;
struct sw_flow_actions __rcu *sf_acts;