X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif.c;h=b338b332eb76b1287b441f5e52feebcf860c9a0f;hb=5ea1eab089607de8f87189fe4463364e26576070;hp=1bac8e8e3951ce873f7002229569e421cf7c3bc1;hpb=2431be1b68d386bd616378d2c528242775c4d54a;p=sliver-openvswitch.git diff --git a/lib/dpif.c b/lib/dpif.c index 1bac8e8e3..b338b332e 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -1184,6 +1184,8 @@ dpif_execute__(struct dpif *dpif, const struct dpif_execute *execute) * OVS_ACTION_ATTR_USERSPACE actions it passes the packet through to the dpif * implementation. * + * This works even if 'actions_len' is too long for a Netlink attribute. + * * Returns 0 if successful, otherwise a positive errno value. */ int dpif_execute(struct dpif *dpif, @@ -1199,7 +1201,7 @@ dpif_execute(struct dpif *dpif, execute.actions = actions; execute.actions_len = actions_len; execute.packet = buf; - execute.needs_help = needs_help; + execute.needs_help = needs_help || nl_attr_oversized(actions_len); return dpif_execute__(dpif, &execute); }