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 |