SHOW:
|
|
- or go back to the newest paste.
| 1 | diff --git a/datapath/linux/compat/include/linux/openvswitch.h b/datapath/linux/compat/include/linux/openvswitch.h | |
| 2 | index 8d9300091..cf9a6962d 100644 | |
| 3 | --- a/datapath/linux/compat/include/linux/openvswitch.h | |
| 4 | +++ b/datapath/linux/compat/include/linux/openvswitch.h | |
| 5 | @@ -388,17 +388,16 @@ enum ovs_key_attr {
| |
| 6 | OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6, /* struct ovs_key_ct_tuple_ipv6 */ | |
| 7 | OVS_KEY_ATTR_NSH, /* Nested set of ovs_nsh_key_* */ | |
| 8 | ||
| 9 | -#ifdef __KERNEL__ | |
| 10 | - /* Only used within kernel data path. */ | |
| 11 | - OVS_KEY_ATTR_TUNNEL_INFO, /* struct ovs_tunnel_info */ | |
| 12 | -#endif | |
| 13 | - | |
| 14 | -#ifndef __KERNEL__ | |
| 15 | - /* Only used within userspace data path. */ | |
| 16 | + /* User space decided to squat on types 29 and 30. They are listed | |
| 17 | - | + * below, but should not be passed to the kernel: */ |
| 17 | + | + * below, but should not be sent to the kernel: */ |
| 18 | OVS_KEY_ATTR_PACKET_TYPE, /* be32 packet type */ | |
| 19 | OVS_KEY_ATTR_ND_EXTENSIONS, /* struct ovs_key_nd_extensions */ | |
| 20 | -#endif | |
| 21 | ||
| 22 | + /* WARNING: No new types should be added unless they are defined | |
| 23 | + * for both kernel and user space (no 'ifdef's). It's hard | |
| 24 | + * to keep compatibility otherwise. */ | |
| 25 | + OVS_KEY_ATTR_TUNNEL_INFO = 31, /* struct ip_tunnel_info. | |
| 26 | + For in-kernel use only. */ | |
| 27 | __OVS_KEY_ATTR_MAX | |
| 28 | }; | |
| 29 | ||
| 30 | diff --git a/lib/odp-execute.c b/lib/odp-execute.c | |
| 31 | index 2f4cdd92c..7da56793d 100644 | |
| 32 | --- a/lib/odp-execute.c | |
| 33 | +++ b/lib/odp-execute.c | |
| 34 | @@ -553,6 +553,7 @@ odp_execute_set_action(struct dp_packet *packet, const struct nlattr *a) | |
| 35 | case OVS_KEY_ATTR_CT_ZONE: | |
| 36 | case OVS_KEY_ATTR_CT_MARK: | |
| 37 | case OVS_KEY_ATTR_CT_LABELS: | |
| 38 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 39 | case __OVS_KEY_ATTR_MAX: | |
| 40 | default: | |
| 41 | OVS_NOT_REACHED(); | |
| 42 | @@ -665,6 +666,7 @@ odp_execute_masked_set_action(struct dp_packet *packet, | |
| 43 | case OVS_KEY_ATTR_ICMP: | |
| 44 | case OVS_KEY_ATTR_ICMPV6: | |
| 45 | case OVS_KEY_ATTR_TCP_FLAGS: | |
| 46 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 47 | case __OVS_KEY_ATTR_MAX: | |
| 48 | default: | |
| 49 | OVS_NOT_REACHED(); | |
| 50 | diff --git a/lib/odp-util.c b/lib/odp-util.c | |
| 51 | index 9a705cffa..bf3848b71 100644 | |
| 52 | --- a/lib/odp-util.c | |
| 53 | +++ b/lib/odp-util.c | |
| 54 | @@ -193,6 +193,7 @@ ovs_key_attr_to_string(enum ovs_key_attr attr, char *namebuf, size_t bufsize) | |
| 55 | case OVS_KEY_ATTR_PACKET_TYPE: return "packet_type"; | |
| 56 | case OVS_KEY_ATTR_NSH: return "nsh"; | |
| 57 | ||
| 58 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 59 | case __OVS_KEY_ATTR_MAX: | |
| 60 | default: | |
| 61 | snprintf(namebuf, bufsize, "key%u", (unsigned int) attr); | |
| 62 | @@ -3261,6 +3262,7 @@ odp_mask_is_constant__(enum ovs_key_attr attr, const void *mask, size_t size, | |
| 63 | switch (attr) {
| |
| 64 | case OVS_KEY_ATTR_UNSPEC: | |
| 65 | case OVS_KEY_ATTR_ENCAP: | |
| 66 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 67 | case __OVS_KEY_ATTR_MAX: | |
| 68 | default: | |
| 69 | return false; | |
| 70 | @@ -4412,6 +4414,7 @@ format_odp_key_attr__(const struct nlattr *a, const struct nlattr *ma, | |
| 71 | break; | |
| 72 | } | |
| 73 | case OVS_KEY_ATTR_UNSPEC: | |
| 74 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 75 | case __OVS_KEY_ATTR_MAX: | |
| 76 | default: | |
| 77 | format_generic_odp_key(a, ds); | |
| 78 | @@ -6611,6 +6614,7 @@ odp_key_to_dp_packet(const struct nlattr *key, size_t key_len, | |
| 79 | case OVS_KEY_ATTR_MPLS: | |
| 80 | case OVS_KEY_ATTR_PACKET_TYPE: | |
| 81 | case OVS_KEY_ATTR_NSH: | |
| 82 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 83 | case __OVS_KEY_ATTR_MAX: | |
| 84 | default: | |
| 85 | break; | |
| 86 | diff --git a/ofproto/ofproto-dpif-sflow.c b/ofproto/ofproto-dpif-sflow.c | |
| 87 | index 30e7caf54..0b2c79e32 100644 | |
| 88 | --- a/ofproto/ofproto-dpif-sflow.c | |
| 89 | +++ b/ofproto/ofproto-dpif-sflow.c | |
| 90 | @@ -1065,6 +1065,7 @@ sflow_read_set_action(const struct nlattr *attr, | |
| 91 | case OVS_KEY_ATTR_UNSPEC: | |
| 92 | case OVS_KEY_ATTR_PACKET_TYPE: | |
| 93 | case OVS_KEY_ATTR_NSH: | |
| 94 | + case OVS_KEY_ATTR_TUNNEL_INFO: | |
| 95 | case __OVS_KEY_ATTR_MAX: | |
| 96 | default: | |
| 97 | break; | |
| 98 |