X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fodp-execute.c;h=c91cc4a2eceac78babfcb1ac5393e8fe79452a30;hb=b2f2acd543f159ba984a00059892917933612a10;hp=e6e8c918febe93d681bb6f1f3e932979f791d9ff;hpb=2b06df546fbe162e867463850b538250f43d137d;p=sliver-openvswitch.git diff --git a/lib/odp-execute.c b/lib/odp-execute.c index e6e8c918f..c91cc4a2e 100644 --- a/lib/odp-execute.c +++ b/lib/odp-execute.c @@ -54,6 +54,7 @@ odp_execute_set_action(struct ofpbuf *packet, const struct nlattr *a, const struct ovs_key_ipv6 *ipv6_key; const struct ovs_key_tcp *tcp_key; const struct ovs_key_udp *udp_key; + const struct ovs_key_sctp *sctp_key; switch (type) { case OVS_KEY_ATTR_PRIORITY: @@ -65,7 +66,7 @@ odp_execute_set_action(struct ofpbuf *packet, const struct nlattr *a, break; case OVS_KEY_ATTR_SKB_MARK: - flow->skb_mark = nl_attr_get_u32(a); + flow->pkt_mark = nl_attr_get_u32(a); break; case OVS_KEY_ATTR_ETHERNET: @@ -96,6 +97,11 @@ odp_execute_set_action(struct ofpbuf *packet, const struct nlattr *a, packet_set_udp_port(packet, udp_key->udp_src, udp_key->udp_dst); break; + case OVS_KEY_ATTR_SCTP: + sctp_key = nl_attr_get_unspec(a, sizeof(struct ovs_key_sctp)); + packet_set_sctp_port(packet, sctp_key->sctp_src, sctp_key->sctp_dst); + break; + case OVS_KEY_ATTR_MPLS: set_mpls_lse(packet, nl_attr_get_be32(a)); break; @@ -176,10 +182,11 @@ odp_execute_actions(void *dp, struct ofpbuf *packet, struct flow *key, break; case OVS_ACTION_ATTR_USERSPACE: { - const struct nlattr *userdata; - - userdata = nl_attr_find_nested(a, OVS_USERSPACE_ATTR_USERDATA); - userspace(dp, packet, key, userdata); + if (userspace) { + const struct nlattr *userdata; + userdata = nl_attr_find_nested(a, OVS_USERSPACE_ATTR_USERDATA); + userspace(dp, packet, key, userdata); + } break; }