dpif-linux: Don't reset kernel upcall_pids unintentionally.
authorBen Pfaff <blp@nicira.com>
Fri, 7 Oct 2011 23:41:36 +0000 (16:41 -0700)
committerBen Pfaff <blp@nicira.com>
Sat, 8 Oct 2011 02:53:23 +0000 (19:53 -0700)
commita24a65747a4aaf4929e8aa51f678d3ee7d57a1e3
treecfd3f382261611dbd95a49d08d99878593457cef
parent44ff0707f09dc09b892a9b1b0a6aad6313f5248e
dpif-linux: Don't reset kernel upcall_pids unintentionally.

Commit b063d9f0 "datapath: Use unicast Netlink sockets for upcalls" that
introduced an 'upcall_pid' member into struct dpif_linux_vport, struct
dpif_linux_dp, and struct dpif_linux_flow neglected to do so only if the
member was nonzero.  This caused every datapath, vport, and flow operation
to supply an upcall_pid.  In particular, the netdev_set_config() called at
startup when a vport already existed caused the upcall_pid for that vport
to be reset to 0, which in turn caused all packets received on the vport to
be dropped instead of forwarded to ovs-vswitchd.

Reported-by: Shih-Hao Li <shli@nicira.com>
Bug #7714.
lib/dpif-linux.c
lib/dpif-linux.h