[ovs-dev] [PATCH V2 2/3] datapath: Prefix each public function in linux/compat/ with rpl_.

Alex Wang alexw at nicira.com
Sat Apr 25 08:08:40 UTC 2015


With the latest change of separating vports into their own modules,
it is necessary to export functions that replace the upstream ones
with 'rpl_'.  This will prevent the linker error when vport modules
use those functions in the future. e.g., the to be merged vport-stt
module will use the flex_array_* functions which are not currently
exported.

This commit adds 'rpl_' prefix to and export all of those functions.

Co-authored-by: Tuan Nguyen <tuan.nguyen at veriksystems.com>
Signed-off-by: Alex Wang <alexw at nicira.com>
---
PATCH->V2:
- change __skb_get_hash() to rpl__skb_get_rxhash().
- Do not prefix non-upstream functions with rpl_.
---
 AUTHORS                                            |    1 +
 datapath/linux/compat/dev-openvswitch.c            |   20 ++++++-----
 datapath/linux/compat/exthdrs_core.c               |    2 ++
 datapath/linux/compat/flex_array.c                 |   27 +++++++++-----
 datapath/linux/compat/flow_dissector.c             |    5 +--
 datapath/linux/compat/genetlink-openvswitch.c      |    3 ++
 datapath/linux/compat/geneve.c                     |   24 ++++++-------
 datapath/linux/compat/gre.c                        |   16 ++++-----
 datapath/linux/compat/gso.c                        |    3 ++
 datapath/linux/compat/gso.h                        |    2 +-
 datapath/linux/compat/include/linux/flex_array.h   |   37 ++++++++++++++------
 datapath/linux/compat/include/linux/ip.h           |    1 +
 datapath/linux/compat/include/linux/net.h          |    3 +-
 datapath/linux/compat/include/linux/netdevice.h    |   21 ++++++-----
 .../linux/compat/include/linux/reciprocal_div.h    |    4 +--
 datapath/linux/compat/include/linux/skbuff.h       |   13 +++----
 datapath/linux/compat/include/net/checksum.h       |    7 ++--
 datapath/linux/compat/include/net/genetlink.h      |    6 ++--
 datapath/linux/compat/include/net/geneve.h         |   21 ++++++-----
 datapath/linux/compat/include/net/gre.h            |   10 +++---
 datapath/linux/compat/include/net/ip_tunnels.h     |   11 +++---
 datapath/linux/compat/include/net/ipv6.h           |    8 ++---
 datapath/linux/compat/include/net/net_namespace.h  |    6 ++--
 datapath/linux/compat/include/net/udp.h            |    5 +--
 datapath/linux/compat/include/net/udp_tunnel.h     |   21 ++++++-----
 datapath/linux/compat/include/net/vxlan.h          |   18 +++++-----
 datapath/linux/compat/ip_tunnels_core.c            |    8 ++---
 datapath/linux/compat/net_namespace.c              |    7 ++--
 datapath/linux/compat/netdevice.c                  |    2 ++
 datapath/linux/compat/reciprocal_div.c             |    4 ++-
 datapath/linux/compat/skbuff-openvswitch.c         |   16 ++++++---
 datapath/linux/compat/udp.c                        |    5 +--
 datapath/linux/compat/udp_tunnel.c                 |   26 +++++++-------
 datapath/linux/compat/utils.c                      |   12 ++++---
 datapath/linux/compat/vxlan.c                      |   24 ++++++-------
 35 files changed, 237 insertions(+), 162 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 8973dec..16e76b4 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -170,6 +170,7 @@ Thomas Lacroix          thomas.lacroix at citrix.com
 Todd Deshane            deshantm at gmail.com
 Tom Everman             teverman at google.com
 Tsvi Slonim             tsvi at toroki.com
+Tuan Nguyen             tuan.nguyen at veriksystems.com
 Tyler Coumbes           coumbes at gmail.com
 Valient Gough           vgough at pobox.com
 Vivien Bernet-Rollande  vbr at soprive.net
diff --git a/datapath/linux/compat/dev-openvswitch.c b/datapath/linux/compat/dev-openvswitch.c
index 1035fe8..256d581 100644
--- a/datapath/linux/compat/dev-openvswitch.c
+++ b/datapath/linux/compat/dev-openvswitch.c
@@ -39,9 +39,9 @@ void dev_disable_lro(struct net_device *dev) { }
 static int nr_bridges;
 
 #ifdef HAVE_RHEL_OVS_HOOK
-int netdev_rx_handler_register(struct net_device *dev,
-			       openvswitch_handle_frame_hook_t *hook,
-			       void *rx_handler_data)
+int rpl_netdev_rx_handler_register(struct net_device *dev,
+				   openvswitch_handle_frame_hook_t *hook,
+				   void *rx_handler_data)
 {
 	nr_bridges++;
 	rcu_assign_pointer(dev->ax25_ptr, rx_handler_data);
@@ -50,12 +50,13 @@ int netdev_rx_handler_register(struct net_device *dev,
 		rcu_assign_pointer(openvswitch_handle_frame_hook, hook);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_netdev_rx_handler_register);
 #else
 
-int netdev_rx_handler_register(struct net_device *dev,
-			       struct sk_buff *(*hook)(struct net_bridge_port *p,
-						       struct sk_buff *skb),
-			       void *rx_handler_data)
+int rpl_netdev_rx_handler_register(struct net_device *dev,
+				   struct sk_buff *(*hook)(struct net_bridge_port *p,
+							   struct sk_buff *skb),
+				   void *rx_handler_data)
 {
 	nr_bridges++;
 	if (dev->br_port)
@@ -67,9 +68,10 @@ int netdev_rx_handler_register(struct net_device *dev,
 		br_handle_frame_hook = hook;
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_netdev_rx_handler_register);
 #endif
 
-void netdev_rx_handler_unregister(struct net_device *dev)
+void rpl_netdev_rx_handler_unregister(struct net_device *dev)
 {
 	nr_bridges--;
 #ifdef HAVE_RHEL_OVS_HOOK
@@ -88,4 +90,6 @@ void netdev_rx_handler_unregister(struct net_device *dev)
 	br_handle_frame_hook = NULL;
 #endif
 }
+EXPORT_SYMBOL_GPL(rpl_netdev_rx_handler_unregister);
+
 #endif
diff --git a/datapath/linux/compat/exthdrs_core.c b/datapath/linux/compat/exthdrs_core.c
index 56a17da..6692ce3 100644
--- a/datapath/linux/compat/exthdrs_core.c
+++ b/datapath/linux/compat/exthdrs_core.c
@@ -45,6 +45,7 @@ int rpl_ipv6_skip_exthdr(const struct sk_buff *skb, int start,
 	*nexthdrp = nexthdr;
 	return start;
 }
+EXPORT_SYMBOL_GPL(rpl_ipv6_skip_exthdr);
 #endif /* Kernel version < 3.3 */
 
 #ifndef HAVE_IP6_FH_F_SKIP_RH
@@ -169,5 +170,6 @@ int rpl_ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
 	*offset = start;
 	return nexthdr;
 }
+EXPORT_SYMBOL_GPL(rpl_ipv6_find_hdr);
 
 #endif
diff --git a/datapath/linux/compat/flex_array.c b/datapath/linux/compat/flex_array.c
index c39dd1b..ce73198 100644
--- a/datapath/linux/compat/flex_array.c
+++ b/datapath/linux/compat/flex_array.c
@@ -89,7 +89,7 @@ static inline int elements_fit_in_base(struct flex_array *fa)
  * capacity in the base structure.  Also note that no effort is made
  * to efficiently pack objects across page boundaries.
  */
-struct flex_array *flex_array_alloc(int element_size, unsigned int total,
+struct flex_array *rpl_flex_array_alloc(int element_size, unsigned int total,
 					gfp_t flags)
 {
 	struct flex_array *ret;
@@ -118,6 +118,7 @@ struct flex_array *flex_array_alloc(int element_size, unsigned int total,
 						FLEX_ARRAY_BASE_BYTES_LEFT);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_alloc);
 
 static int fa_element_to_part_nr(struct flex_array *fa,
 					unsigned int element_nr)
@@ -132,7 +133,7 @@ static int fa_element_to_part_nr(struct flex_array *fa,
  * This is to be used in cases where the base 'struct flex_array'
  * has been statically allocated and should not be free.
  */
-void flex_array_free_parts(struct flex_array *fa)
+void rpl_flex_array_free_parts(struct flex_array *fa)
 {
 	int part_nr;
 
@@ -141,12 +142,14 @@ void flex_array_free_parts(struct flex_array *fa)
 	for (part_nr = 0; part_nr < FLEX_ARRAY_NR_BASE_PTRS; part_nr++)
 		kfree(fa->parts[part_nr]);
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_free_parts);
 
-void flex_array_free(struct flex_array *fa)
+void rpl_flex_array_free(struct flex_array *fa)
 {
 	flex_array_free_parts(fa);
 	kfree(fa);
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_free);
 
 static unsigned int index_inside_part(struct flex_array *fa,
 					unsigned int element_nr,
@@ -191,7 +194,7 @@ __fa_get_part(struct flex_array *fa, int part_nr, gfp_t flags)
  *
  * Locking must be provided by the caller.
  */
-int flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
+int rpl_flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
 			gfp_t flags)
 {
 	int part_nr = 0;
@@ -214,6 +217,7 @@ int flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
 	memcpy(dst, src, fa->element_size);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_put);
 
 /**
  * flex_array_clear - clear element in array at @element_nr
@@ -222,7 +226,7 @@ int flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
  *
  * Locking must be provided by the caller.
  */
-int flex_array_clear(struct flex_array *fa, unsigned int element_nr)
+int rpl_flex_array_clear(struct flex_array *fa, unsigned int element_nr)
 {
 	int part_nr = 0;
 	struct flex_array_part *part;
@@ -244,6 +248,7 @@ int flex_array_clear(struct flex_array *fa, unsigned int element_nr)
 	memset(dst, FLEX_ARRAY_FREE, fa->element_size);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_clear);
 
 /**
  * flex_array_prealloc - guarantee that array space exists
@@ -260,7 +265,7 @@ int flex_array_clear(struct flex_array *fa, unsigned int element_nr)
  *
  * Locking must be provided by the caller.
  */
-int flex_array_prealloc(struct flex_array *fa, unsigned int start,
+int rpl_flex_array_prealloc(struct flex_array *fa, unsigned int start,
 			unsigned int nr_elements, gfp_t flags)
 {
 	int start_part;
@@ -293,6 +298,7 @@ int flex_array_prealloc(struct flex_array *fa, unsigned int start,
 	}
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_prealloc);
 
 /**
  * flex_array_get - pull data back out of the array
@@ -306,7 +312,7 @@ int flex_array_prealloc(struct flex_array *fa, unsigned int start,
  *
  * Locking must be provided by the caller.
  */
-void *flex_array_get(struct flex_array *fa, unsigned int element_nr)
+void *rpl_flex_array_get(struct flex_array *fa, unsigned int element_nr)
 {
 	int part_nr = 0;
 	struct flex_array_part *part;
@@ -325,6 +331,7 @@ void *flex_array_get(struct flex_array *fa, unsigned int element_nr)
 	}
 	return &part->elements[index_inside_part(fa, element_nr, part_nr)];
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_get);
 
 /**
  * flex_array_get_ptr - pull a ptr back out of the array
@@ -335,7 +342,7 @@ void *flex_array_get(struct flex_array *fa, unsigned int element_nr)
  * flex_array_put_ptr().  This function should not be called if the
  * element in question was not set using the _put_ptr() helper.
  */
-void *flex_array_get_ptr(struct flex_array *fa, unsigned int element_nr)
+void *rpl_flex_array_get_ptr(struct flex_array *fa, unsigned int element_nr)
 {
 	void **tmp;
 
@@ -345,6 +352,7 @@ void *flex_array_get_ptr(struct flex_array *fa, unsigned int element_nr)
 
 	return *tmp;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_get_ptr);
 
 static int part_is_free(struct flex_array_part *part)
 {
@@ -365,7 +373,7 @@ static int part_is_free(struct flex_array_part *part)
  *
  * Locking must be provided by the caller.
  */
-int flex_array_shrink(struct flex_array *fa)
+int rpl_flex_array_shrink(struct flex_array *fa)
 {
 	struct flex_array_part *part;
 	int part_nr;
@@ -387,5 +395,6 @@ int flex_array_shrink(struct flex_array *fa)
 	}
 	return ret;
 }
+EXPORT_SYMBOL_GPL(rpl_flex_array_shrink);
 
 #endif /* Linux version < 3.0.0 */
diff --git a/datapath/linux/compat/flow_dissector.c b/datapath/linux/compat/flow_dissector.c
index a68f84f..3f42dba 100644
--- a/datapath/linux/compat/flow_dissector.c
+++ b/datapath/linux/compat/flow_dissector.c
@@ -204,7 +204,7 @@ static __always_inline u32 __flow_hash_3words(u32 a, u32 b, u32 c)
 	return jhash_3words(a, b, c, hashrnd);
 }
 
-u32 __skb_get_hash(struct sk_buff *skb)
+u32 rpl__skb_get_rxhash(struct sk_buff *skb)
 {
 	struct flow_keys keys;
 	u32 hash;
@@ -231,5 +231,6 @@ u32 __skb_get_hash(struct sk_buff *skb)
 #endif
 	return hash;
 }
-EXPORT_SYMBOL_GPL(__skb_get_hash);
+EXPORT_SYMBOL_GPL(rpl__skb_get_rxhash);
+
 #endif
diff --git a/datapath/linux/compat/genetlink-openvswitch.c b/datapath/linux/compat/genetlink-openvswitch.c
index ab149c3..9aea997 100644
--- a/datapath/linux/compat/genetlink-openvswitch.c
+++ b/datapath/linux/compat/genetlink-openvswitch.c
@@ -21,6 +21,7 @@ void rpl_genl_notify(struct rpl_genl_family *family, struct sk_buff *skb,
 	genl_notify(skb, net, portid, group, nlh, flags);
 #endif
 }
+EXPORT_SYMBOL_GPL(rpl_genl_notify);
 
 int rpl___genl_register_family(struct rpl_genl_family *f)
 {
@@ -52,4 +53,6 @@ error:
 	return err;
 
 }
+EXPORT_SYMBOL_GPL(rpl___genl_register_family);
+
 #endif /* kernel version < 3.13.0 */
diff --git a/datapath/linux/compat/geneve.c b/datapath/linux/compat/geneve.c
index 48a306e..9ec161c 100644
--- a/datapath/linux/compat/geneve.c
+++ b/datapath/linux/compat/geneve.c
@@ -81,11 +81,11 @@ static void geneve_build_header(struct genevehdr *geneveh,
  *
  * This function will add other UDP tunnel headers.
  */
-int geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
-		    struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos,
-		    __u8 ttl, __be16 df, __be16 src_port, __be16 dst_port,
-		    __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt,
-		    bool csum, bool xnet)
+int rpl_geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
+		        struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos,
+		        __u8 ttl, __be16 df, __be16 src_port, __be16 dst_port,
+		        __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt,
+		        bool csum, bool xnet)
 {
 	struct genevehdr *gnvh;
 	int min_headroom;
@@ -118,7 +118,7 @@ int geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
 				   tos, ttl, df, src_port, dst_port, xnet,
 				   !csum);
 }
-EXPORT_SYMBOL_GPL(geneve_xmit_skb);
+EXPORT_SYMBOL_GPL(rpl_geneve_xmit_skb);
 
 /* Callback from net/ipv4/udp.c to receive packets */
 static int geneve_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
@@ -221,13 +221,13 @@ static struct geneve_sock *geneve_socket_create(struct net *net, __be16 port,
 	return gs;
 }
 
-struct geneve_sock *geneve_sock_add(struct net *net, __be16 port,
-				    geneve_rcv_t *rcv, void *data,
-				    bool no_share, bool ipv6)
+struct geneve_sock *rpl_geneve_sock_add(struct net *net, __be16 port,
+				        geneve_rcv_t *rcv, void *data,
+				        bool no_share, bool ipv6)
 {
 	return geneve_socket_create(net, port, rcv, data, ipv6);
 }
-EXPORT_SYMBOL_GPL(geneve_sock_add);
+EXPORT_SYMBOL_GPL(rpl_geneve_sock_add);
 
 static void rcu_free_gs(struct rcu_head *rcu)
 {
@@ -236,9 +236,9 @@ static void rcu_free_gs(struct rcu_head *rcu)
 	kfree(gs);
 }
 
-void geneve_sock_release(struct geneve_sock *gs)
+void rpl_geneve_sock_release(struct geneve_sock *gs)
 {
 	udp_tunnel_sock_release(gs->sock);
 	call_rcu(&gs->rcu, rcu_free_gs);
 }
-EXPORT_SYMBOL_GPL(geneve_sock_release);
+EXPORT_SYMBOL_GPL(rpl_geneve_sock_release);
diff --git a/datapath/linux/compat/gre.c b/datapath/linux/compat/gre.c
index 06956f0..e2a7591 100644
--- a/datapath/linux/compat/gre.c
+++ b/datapath/linux/compat/gre.c
@@ -236,7 +236,7 @@ static const struct gre_protocol ipgre_protocol = {
 	.handler	=	gre_cisco_rcv,
 };
 
-int gre_cisco_register(struct gre_cisco_protocol *newp)
+int rpl_gre_cisco_register(struct gre_cisco_protocol *newp)
 {
 	int err;
 
@@ -250,9 +250,9 @@ int gre_cisco_register(struct gre_cisco_protocol *newp)
 	return (cmpxchg((struct gre_cisco_protocol **)&gre_cisco_proto, NULL, newp) == NULL) ?
 		0 : -EBUSY;
 }
-EXPORT_SYMBOL_GPL(gre_cisco_register);
+EXPORT_SYMBOL_GPL(rpl_gre_cisco_register);
 
-int gre_cisco_unregister(struct gre_cisco_protocol *proto)
+int rpl_gre_cisco_unregister(struct gre_cisco_protocol *proto)
 {
 	int ret;
 
@@ -266,7 +266,7 @@ int gre_cisco_unregister(struct gre_cisco_protocol *proto)
 	ret = gre_del_protocol(&ipgre_protocol, GREPROTO_CISCO);
 	return ret;
 }
-EXPORT_SYMBOL_GPL(gre_cisco_unregister);
+EXPORT_SYMBOL_GPL(rpl_gre_cisco_unregister);
 
 #endif /* !HAVE_GRE_CISCO_REGISTER */
 
@@ -287,7 +287,7 @@ static void gre_csum_fix(struct sk_buff *skb)
 						     skb->len - gre_offset, 0));
 }
 
-struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum)
+struct sk_buff *rpl_gre_handle_offloads(struct sk_buff *skb, bool gre_csum)
 {
 	int type = gre_csum ? SKB_GSO_GRE_CSUM : SKB_GSO_GRE;
 	gso_fix_segment_t fix_segment;
@@ -299,14 +299,14 @@ struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum)
 
 	return ovs_iptunnel_handle_offloads(skb, gre_csum, type, fix_segment);
 }
-EXPORT_SYMBOL_GPL(gre_handle_offloads);
+EXPORT_SYMBOL_GPL(rpl_gre_handle_offloads);
 
 static bool is_gre_gso(struct sk_buff *skb)
 {
 	return skb_is_gso(skb);
 }
 
-void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
+void rpl_gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
 		      int hdr_len)
 {
 	struct gre_base_hdr *greh;
@@ -337,7 +337,7 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
 
 	ovs_skb_set_inner_protocol(skb, tpi->proto);
 }
-EXPORT_SYMBOL_GPL(gre_build_header);
+EXPORT_SYMBOL_GPL(rpl_gre_build_header);
 
 #endif /* CONFIG_NET_IPGRE_DEMUX */
 
diff --git a/datapath/linux/compat/gso.c b/datapath/linux/compat/gso.c
index cad9b18..552e748 100644
--- a/datapath/linux/compat/gso.c
+++ b/datapath/linux/compat/gso.c
@@ -167,6 +167,7 @@ drop:
 	kfree_skb(skb);
 	return err;
 }
+EXPORT_SYMBOL_GPL(rpl_dev_queue_xmit);
 #endif /* 3.16 */
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0)
@@ -296,4 +297,6 @@ int rpl_ip_local_out(struct sk_buff *skb)
 	}
 	return ret;
 }
+EXPORT_SYMBOL_GPL(rpl_ip_local_out);
+
 #endif /* 3.18 */
diff --git a/datapath/linux/compat/gso.h b/datapath/linux/compat/gso.h
index dce4c67..8f5b076 100644
--- a/datapath/linux/compat/gso.h
+++ b/datapath/linux/compat/gso.h
@@ -127,7 +127,7 @@ static inline __be16 ovs_skb_get_inner_protocol(struct sk_buff *skb)
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0)
 #define ip_local_out rpl_ip_local_out
-int ip_local_out(struct sk_buff *skb);
+int rpl_ip_local_out(struct sk_buff *skb);
 
 static inline int skb_inner_mac_offset(const struct sk_buff *skb)
 {
diff --git a/datapath/linux/compat/include/linux/flex_array.h b/datapath/linux/compat/include/linux/flex_array.h
index 443c4af..d1e1b83 100644
--- a/datapath/linux/compat/include/linux/flex_array.h
+++ b/datapath/linux/compat/include/linux/flex_array.h
@@ -66,22 +66,39 @@ struct flex_array {
 			FLEX_ARRAY_ELEMENTS_PER_PART(__element_size));	\
 	}
 
-struct flex_array *flex_array_alloc(int element_size, unsigned int total,
+#define flex_array_alloc rpl_flex_array_alloc
+struct flex_array *rpl_flex_array_alloc(int element_size, unsigned int total,
 		gfp_t flags);
-int flex_array_prealloc(struct flex_array *fa, unsigned int start,
+
+#define flex_array_prealloc rpl_flex_array_prealloc
+int rpl_flex_array_prealloc(struct flex_array *fa, unsigned int start,
 		unsigned int nr_elements, gfp_t flags);
-void flex_array_free(struct flex_array *fa);
-void flex_array_free_parts(struct flex_array *fa);
-int flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
+
+#define flex_array_free rpl_flex_array_free
+void rpl_flex_array_free(struct flex_array *fa);
+
+#define flex_array_free_parts rpl_flex_array_free_parts
+void rpl_flex_array_free_parts(struct flex_array *fa);
+
+#define flex_array_put rpl_flex_array_put
+int rpl_flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src,
 		gfp_t flags);
-int flex_array_clear(struct flex_array *fa, unsigned int element_nr);
-void *flex_array_get(struct flex_array *fa, unsigned int element_nr);
-int flex_array_shrink(struct flex_array *fa);
 
-#define flex_array_put_ptr(fa, nr, src, gfp) \
+#define flex_array_clear rpl_flex_array_clear
+int rpl_flex_array_clear(struct flex_array *fa, unsigned int element_nr);
+
+#define flex_array_get rpl_flex_array_get
+void *rpl_flex_array_get(struct flex_array *fa, unsigned int element_nr);
+
+#define flex_array_shrink rpl_flex_array_shrink
+int rpl_flex_array_shrink(struct flex_array *fa);
+
+#define flex_array_put_ptr rpl_flex_array_put_ptr
+#define rpl_flex_array_put_ptr(fa, nr, src, gfp) \
 	flex_array_put(fa, nr, (void *)&(src), gfp)
 
-void *flex_array_get_ptr(struct flex_array *fa, unsigned int element_nr);
+#define flex_array_get_ptr rpl_flex_array_get_ptr
+void *rpl_flex_array_get_ptr(struct flex_array *fa, unsigned int element_nr);
 
 #endif /* Linux version < 3.0.0 */
 #endif /* __LINUX_FLEX_ARRAY_WRAPPER_H */
diff --git a/datapath/linux/compat/include/linux/ip.h b/datapath/linux/compat/include/linux/ip.h
index 6ff7152..c64306e 100644
--- a/datapath/linux/compat/include/linux/ip.h
+++ b/datapath/linux/compat/include/linux/ip.h
@@ -5,6 +5,7 @@
 
 #ifndef HAVE_SKBUFF_HEADER_HELPERS
 #include <linux/skbuff.h>
+
 static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
 {
 	return (struct iphdr *)skb_network_header(skb);
diff --git a/datapath/linux/compat/include/linux/net.h b/datapath/linux/compat/include/linux/net.h
index d8bf621..9c94745 100644
--- a/datapath/linux/compat/include/linux/net.h
+++ b/datapath/linux/compat/include/linux/net.h
@@ -30,7 +30,8 @@ do {								\
 #endif
 
 #ifndef net_get_random_once
-bool __net_get_random_once(void *buf, int nbytes, bool *done,
+#define __net_get_random_once rpl___net_get_random_once
+bool rpl___net_get_random_once(void *buf, int nbytes, bool *done,
 			   atomic_t *done_key);
 
 #define ___NET_RANDOM_STATIC_KEY_INIT	ATOMIC_INIT(0)
diff --git a/datapath/linux/compat/include/linux/netdevice.h b/datapath/linux/compat/include/linux/netdevice.h
index 43a04a4..38315c2 100644
--- a/datapath/linux/compat/include/linux/netdevice.h
+++ b/datapath/linux/compat/include/linux/netdevice.h
@@ -50,18 +50,21 @@ extern void dev_disable_lro(struct net_device *dev);
 typedef struct sk_buff *(openvswitch_handle_frame_hook_t)(struct sk_buff *skb);
 extern openvswitch_handle_frame_hook_t *openvswitch_handle_frame_hook;
 
-int netdev_rx_handler_register(struct net_device *dev,
-			       openvswitch_handle_frame_hook_t *hook,
-			       void *rx_handler_data);
+#define netdev_rx_handler_register rpl_netdev_rx_handler_register
+int rpl_netdev_rx_handler_register(struct net_device *dev,
+				   openvswitch_handle_frame_hook_t *hook,
+				   void *rx_handler_data);
 #else
 
-int netdev_rx_handler_register(struct net_device *dev,
-			       struct sk_buff *(*netdev_hook)(struct net_bridge_port *p,
-							     struct sk_buff *skb),
-			       void *rx_handler_data);
+#define netdev_rx_handler_register rpl_netdev_rx_handler_register
+int rpl_netdev_rx_handler_register(struct net_device *dev,
+				   struct sk_buff *(*netdev_hook)(struct net_bridge_port *p,
+							   struct sk_buff *skb),
+				   void *rx_handler_data);
 #endif
 
-void netdev_rx_handler_unregister(struct net_device *dev);
+#define netdev_rx_handler_unregister rpl_netdev_rx_handler_unregister
+void rpl_netdev_rx_handler_unregister(struct net_device *dev);
 #endif
 
 #ifndef HAVE_DEV_GET_BY_INDEX_RCU
@@ -138,7 +141,7 @@ static inline struct net_device *netdev_master_upper_dev_get(struct net_device *
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,16,0)
 #define dev_queue_xmit rpl_dev_queue_xmit
-int dev_queue_xmit(struct sk_buff *skb);
+int rpl_dev_queue_xmit(struct sk_buff *skb);
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
diff --git a/datapath/linux/compat/include/linux/reciprocal_div.h b/datapath/linux/compat/include/linux/reciprocal_div.h
index 2def5c6..f50d8e4 100644
--- a/datapath/linux/compat/include/linux/reciprocal_div.h
+++ b/datapath/linux/compat/include/linux/reciprocal_div.h
@@ -25,10 +25,10 @@ struct reciprocal_value {
 	u8 sh1, sh2;
 };
 
-struct reciprocal_value reciprocal_value(u32 d);
+struct reciprocal_value rpl_reciprocal_value(u32 d);
 
 #define reciprocal_divide rpl_reciprocal_divide
-static inline u32 reciprocal_divide(u32 a, struct reciprocal_value R)
+static inline u32 rpl_reciprocal_divide(u32 a, struct reciprocal_value R)
 {
 	u32 t = (u32)(((u64)a * R.m) >> 32);
 	return (t + ((a - t) >> R.sh1)) >> R.sh2;
diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h
index dc3fea8..0ae6c13 100644
--- a/datapath/linux/compat/include/linux/skbuff.h
+++ b/datapath/linux/compat/include/linux/skbuff.h
@@ -315,13 +315,14 @@ static inline void skb_tx_error(struct sk_buff *skb)
 #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) */
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
-unsigned int skb_zerocopy_headlen(const struct sk_buff *from);
+#define skb_zerocopy_headlen rpl_skb_zerocopy_headlen
+unsigned int rpl_skb_zerocopy_headlen(const struct sk_buff *from);
 #endif
 
 #ifndef HAVE_SKB_ZEROCOPY
 #define skb_zerocopy rpl_skb_zerocopy
-int skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len,
-		  int hlen);
+int rpl_skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len,
+		     int hlen);
 #endif
 
 #ifndef HAVE_SKB_CLEAR_HASH
@@ -354,17 +355,17 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
 
 #ifndef HAVE_SKB_ENSURE_WRITABLE
 #define skb_ensure_writable rpl_skb_ensure_writable
-int skb_ensure_writable(struct sk_buff *skb, int write_len);
+int rpl_skb_ensure_writable(struct sk_buff *skb, int write_len);
 #endif
 
 #ifndef HAVE_SKB_VLAN_POP
 #define skb_vlan_pop rpl_skb_vlan_pop
-int skb_vlan_pop(struct sk_buff *skb);
+int rpl_skb_vlan_pop(struct sk_buff *skb);
 #endif
 
 #ifndef HAVE_SKB_VLAN_PUSH
 #define skb_vlan_push rpl_skb_vlan_push
-int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci);
+int rpl_skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci);
 #endif
 
 #endif
diff --git a/datapath/linux/compat/include/net/checksum.h b/datapath/linux/compat/include/net/checksum.h
index a40de40..398df93 100644
--- a/datapath/linux/compat/include/net/checksum.h
+++ b/datapath/linux/compat/include/net/checksum.h
@@ -37,8 +37,9 @@ static inline void csum_replace2(__sum16 *sum, __be16 from, __be16 to)
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
-void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
-			       const __be32 *from, const __be32 *to,
-			       int pseudohdr);
+#define inet_proto_csum_replace16 rpl_inet_proto_csum_replace16
+void rpl_inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
+			           const __be32 *from, const __be32 *to,
+			           int pseudohdr);
 #endif
 #endif /* checksum.h */
diff --git a/datapath/linux/compat/include/net/genetlink.h b/datapath/linux/compat/include/net/genetlink.h
index edf6815..cf89d4c 100644
--- a/datapath/linux/compat/include/net/genetlink.h
+++ b/datapath/linux/compat/include/net/genetlink.h
@@ -45,9 +45,9 @@ struct rpl_genl_family {
 
 #define genl_family rpl_genl_family
 #define genl_notify rpl_genl_notify
-void genl_notify(struct genl_family *family,
-		 struct sk_buff *skb, struct net *net, u32 portid, u32 group,
-		 struct nlmsghdr *nlh, gfp_t flags);
+void rpl_genl_notify(struct genl_family *family,
+		     struct sk_buff *skb, struct net *net, u32 portid, u32 group,
+		     struct nlmsghdr *nlh, gfp_t flags);
 
 static inline void *rpl_genlmsg_put(struct sk_buff *skb, u32 portid, u32 seq,
 				    struct genl_family *family, int flags, u8 cmd)
diff --git a/datapath/linux/compat/include/net/geneve.h b/datapath/linux/compat/include/net/geneve.h
index 402ef38..452dddb 100644
--- a/datapath/linux/compat/include/net/geneve.h
+++ b/datapath/linux/compat/include/net/geneve.h
@@ -77,17 +77,20 @@ struct geneve_sock {
 #define GENEVE_VER 0
 #define GENEVE_BASE_HLEN (sizeof(struct udphdr) + sizeof(struct genevehdr))
 
-struct geneve_sock *geneve_sock_add(struct net *net, __be16 port,
-				    geneve_rcv_t *rcv, void *data,
-				    bool no_share, bool ipv6);
+#define geneve_sock_add rpl_geneve_sock_add
+struct geneve_sock *rpl_geneve_sock_add(struct net *net, __be16 port,
+				        geneve_rcv_t *rcv, void *data,
+				        bool no_share, bool ipv6);
 
-void geneve_sock_release(struct geneve_sock *vs);
+#define geneve_sock_release rpl_geneve_sock_release
+void rpl_geneve_sock_release(struct geneve_sock *vs);
 
-int geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
-		    struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos,
-		    __u8 ttl, __be16 df, __be16 src_port, __be16 dst_port,
-		    __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt,
-		    bool csum, bool xnet);
+#define geneve_xmit_skb rpl_geneve_xmit_skb
+int rpl_geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
+		        struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos,
+		        __u8 ttl, __be16 df, __be16 src_port, __be16 dst_port,
+		        __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt,
+		        bool csum, bool xnet);
 #endif /*ifdef CONFIG_INET */
 
 #endif /*ifdef__NET_GENEVE_WRAPPER_H */
diff --git a/datapath/linux/compat/include/net/gre.h b/datapath/linux/compat/include/net/gre.h
index 08f6ee1..f572ac9 100644
--- a/datapath/linux/compat/include/net/gre.h
+++ b/datapath/linux/compat/include/net/gre.h
@@ -23,10 +23,10 @@ struct gre_cisco_protocol {
 };
 
 #define gre_cisco_register rpl_gre_cisco_register
-int gre_cisco_register(struct gre_cisco_protocol *proto);
+int rpl_gre_cisco_register(struct gre_cisco_protocol *proto);
 
 #define gre_cisco_unregister rpl_gre_cisco_unregister
-int gre_cisco_unregister(struct gre_cisco_protocol *proto);
+int rpl_gre_cisco_unregister(struct gre_cisco_protocol *proto);
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 struct gre_base_hdr {
@@ -84,11 +84,11 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags)
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)
 
 #define gre_build_header rpl_gre_build_header
-void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
-		      int hdr_len);
+void rpl_gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
+		          int hdr_len);
 
 #define gre_handle_offloads rpl_gre_handle_offloads
-struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum);
+struct sk_buff *rpl_gre_handle_offloads(struct sk_buff *skb, bool gre_csum);
 
 #define ip_gre_calc_hlen rpl_ip_gre_calc_hlen
 static inline int ip_gre_calc_hlen(__be16 o_flags)
diff --git a/datapath/linux/compat/include/net/ip_tunnels.h b/datapath/linux/compat/include/net/ip_tunnels.h
index bb96ec3..9dfa951 100644
--- a/datapath/linux/compat/include/net/ip_tunnels.h
+++ b/datapath/linux/compat/include/net/ip_tunnels.h
@@ -24,12 +24,12 @@ struct sk_buff *ovs_iptunnel_handle_offloads(struct sk_buff *skb,
 					     void (*fix_segment)(struct sk_buff *));
 
 #define iptunnel_xmit rpl_iptunnel_xmit
-int iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
-		  __be32 src, __be32 dst, __u8 proto, __u8 tos, __u8 ttl,
-		  __be16 df, bool xnet);
+int rpl_iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
+		      __be32 src, __be32 dst, __u8 proto, __u8 tos, __u8 ttl,
+		      __be16 df, bool xnet);
 
 #define iptunnel_pull_header rpl_iptunnel_pull_header
-int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto);
+int rpl_iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto);
 
 #else
 
@@ -80,6 +80,7 @@ struct tnl_ptk_info {
 #undef TUNNEL_OPTIONS_PRESENT
 #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT)
 
-bool skb_is_encapsulated(struct sk_buff *skb);
+#define skb_is_encapsulated rpl_skb_is_encapsulated
+bool rpl_skb_is_encapsulated(struct sk_buff *skb);
 
 #endif /* __NET_IP_TUNNELS_H */
diff --git a/datapath/linux/compat/include/net/ipv6.h b/datapath/linux/compat/include/net/ipv6.h
index 450e307..18c7d30 100644
--- a/datapath/linux/compat/include/net/ipv6.h
+++ b/datapath/linux/compat/include/net/ipv6.h
@@ -11,8 +11,8 @@
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
 #define ipv6_skip_exthdr rpl_ipv6_skip_exthdr
-extern int ipv6_skip_exthdr(const struct sk_buff *skb, int start,
-			    u8 *nexthdrp, __be16 *frag_offp);
+extern int rpl_ipv6_skip_exthdr(const struct sk_buff *skb, int start,
+			        u8 *nexthdrp, __be16 *frag_offp);
 #endif
 
 #ifndef HAVE_IP6_FH_F_SKIP_RH
@@ -28,8 +28,8 @@ enum {
  * IP6_FH_F_SKIP_RH.
  */
 #define ipv6_find_hdr rpl_ipv6_find_hdr
-extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
-			 int target, unsigned short *fragoff, int *fragflg);
+extern int rpl_ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
+			     int target, unsigned short *fragoff, int *fragflg);
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
diff --git a/datapath/linux/compat/include/net/net_namespace.h b/datapath/linux/compat/include/net/net_namespace.h
index be64093..0fbe1de 100644
--- a/datapath/linux/compat/include/net/net_namespace.h
+++ b/datapath/linux/compat/include/net/net_namespace.h
@@ -17,8 +17,10 @@ struct rpl_pernet_operations {
 #define register_pernet_device rpl_register_pernet_gen_device
 #define unregister_pernet_device rpl_unregister_pernet_gen_device
 
-int compat_init_net(struct net *net, struct rpl_pernet_operations *pnet);
-void compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet);
+#define compat_init_net rpl_compat_init_net
+int rpl_compat_init_net(struct net *net, struct rpl_pernet_operations *pnet);
+#define compat_exit_net rpl_compat_exit_net
+void rpl_compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet);
 
 #define DEFINE_COMPAT_PNET_REG_FUNC(TYPE)					\
 									\
diff --git a/datapath/linux/compat/include/net/udp.h b/datapath/linux/compat/include/net/udp.h
index 02eb688..fcb8f6a 100644
--- a/datapath/linux/compat/include/net/udp.h
+++ b/datapath/linux/compat/include/net/udp.h
@@ -55,8 +55,9 @@ static inline __sum16 udp_v4_check(int len, __be32 saddr,
 #endif
 
 #ifndef HAVE_UDP_SET_CSUM
-void udp_set_csum(bool nocheck, struct sk_buff *skb,
-		  __be32 saddr, __be32 daddr, int len);
+#define udp_set_csum rpl_udp_set_csum
+void rpl_udp_set_csum(bool nocheck, struct sk_buff *skb,
+		      __be32 saddr, __be32 daddr, int len);
 #endif
 
 #endif
diff --git a/datapath/linux/compat/include/net/udp_tunnel.h b/datapath/linux/compat/include/net/udp_tunnel.h
index 6c25ca5..cf4d464 100644
--- a/datapath/linux/compat/include/net/udp_tunnel.h
+++ b/datapath/linux/compat/include/net/udp_tunnel.h
@@ -50,8 +50,8 @@ struct udp_port_cfg {
 };
 
 #define udp_sock_create rpl_udp_sock_create
-int udp_sock_create(struct net *net, struct udp_port_cfg *cfg,
-		    struct socket **sockp);
+int rpl_udp_sock_create(struct net *net, struct udp_port_cfg *cfg,
+		        struct socket **sockp);
 
 typedef int (*udp_tunnel_encap_rcv_t)(struct sock *sk, struct sk_buff *skb);
 typedef void (*udp_tunnel_encap_destroy_t)(struct sock *sk);
@@ -65,17 +65,20 @@ struct udp_tunnel_sock_cfg {
 };
 
 /* Setup the given (UDP) sock to receive UDP encapsulated packets */
-void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
-			   struct udp_tunnel_sock_cfg *sock_cfg);
+#define setup_udp_tunnel_sock rpl_setup_udp_tunnel_sock
+void rpl_setup_udp_tunnel_sock(struct net *net, struct socket *sock,
+			       struct udp_tunnel_sock_cfg *sock_cfg);
 
 /* Transmit the skb using UDP encapsulation. */
-int udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb,
-			__be32 src, __be32 dst, __u8 tos, __u8 ttl,
-			__be16 df, __be16 src_port, __be16 dst_port,
-			bool xnet, bool nocheck);
+#define udp_tunnel_xmit_skb rpl_udp_tunnel_xmit_skb
+int rpl_udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb,
+			    __be32 src, __be32 dst, __u8 tos, __u8 ttl,
+			    __be16 df, __be16 src_port, __be16 dst_port,
+			    bool xnet, bool nocheck);
 
 
-void udp_tunnel_sock_release(struct socket *sock);
+#define udp_tunnel_sock_release rpl_udp_tunnel_sock_release
+void rpl_udp_tunnel_sock_release(struct socket *sock);
 
 void ovs_udp_gso(struct sk_buff *skb);
 void ovs_udp_csum_gso(struct sk_buff *skb);
diff --git a/datapath/linux/compat/include/net/vxlan.h b/datapath/linux/compat/include/net/vxlan.h
index 7511c2e..0d60c18 100644
--- a/datapath/linux/compat/include/net/vxlan.h
+++ b/datapath/linux/compat/include/net/vxlan.h
@@ -130,19 +130,19 @@ struct vxlan_sock {
 };
 
 #define vxlan_sock_add rpl_vxlan_sock_add
-struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port,
-				  vxlan_rcv_t *rcv, void *data,
-				  bool no_share, u32 flags);
+struct vxlan_sock *rpl_vxlan_sock_add(struct net *net, __be16 port,
+				      vxlan_rcv_t *rcv, void *data,
+				      bool no_share, u32 flags);
 
 #define vxlan_sock_release rpl_vxlan_sock_release
-void vxlan_sock_release(struct vxlan_sock *vs);
+void rpl_vxlan_sock_release(struct vxlan_sock *vs);
 
 #define vxlan_xmit_skb rpl_vxlan_xmit_skb
-int vxlan_xmit_skb(struct vxlan_sock *vs,
-		   struct rtable *rt, struct sk_buff *skb,
-		   __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
-		   __be16 src_port, __be16 dst_port,
-		   struct vxlan_metadata *md, bool xnet, u32 vxflags);
+int rpl_vxlan_xmit_skb(struct vxlan_sock *vs,
+		       struct rtable *rt, struct sk_buff *skb,
+		       __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
+		       __be16 src_port, __be16 dst_port,
+		       struct vxlan_metadata *md, bool xnet, u32 vxflags);
 
 #endif /* !HAVE_VXLAN_METADATA */
 #endif
diff --git a/datapath/linux/compat/ip_tunnels_core.c b/datapath/linux/compat/ip_tunnels_core.c
index f2c4ffd..ffa1ba5 100644
--- a/datapath/linux/compat/ip_tunnels_core.c
+++ b/datapath/linux/compat/ip_tunnels_core.c
@@ -135,7 +135,7 @@ error:
 }
 EXPORT_SYMBOL_GPL(ovs_iptunnel_handle_offloads);
 
-int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto)
+int rpl_iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto)
 {
 	if (unlikely(!pskb_may_pull(skb, hdr_len)))
 		return -ENOMEM;
@@ -168,15 +168,15 @@ int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto)
 	skb->pkt_type = PACKET_HOST;
 	return 0;
 }
-EXPORT_SYMBOL_GPL(iptunnel_pull_header);
+EXPORT_SYMBOL_GPL(rpl_iptunnel_pull_header);
 
 #endif
 
-bool skb_is_encapsulated(struct sk_buff *skb)
+bool rpl_skb_is_encapsulated(struct sk_buff *skb)
 {
 	/* checking for inner protocol should be sufficient on newer kernel, but
 	 * old kernel just set encapsulation bit.
 	 */
 	return ovs_skb_get_inner_protocol(skb) || skb_encapsulation(skb);
 }
-EXPORT_SYMBOL_GPL(skb_is_encapsulated);
+EXPORT_SYMBOL_GPL(rpl_skb_is_encapsulated);
diff --git a/datapath/linux/compat/net_namespace.c b/datapath/linux/compat/net_namespace.c
index 1fba3b1..2df1c49 100644
--- a/datapath/linux/compat/net_namespace.c
+++ b/datapath/linux/compat/net_namespace.c
@@ -5,7 +5,7 @@
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
 
-int compat_init_net(struct net *net, struct rpl_pernet_operations *pnet)
+int rpl_compat_init_net(struct net *net, struct rpl_pernet_operations *pnet)
 {
 	int err;
 	void *ovs_net = kzalloc(pnet->size, GFP_KERNEL);
@@ -28,8 +28,9 @@ err:
 	kfree(ovs_net);
 	return err;
 }
+EXPORT_SYMBOL_GPL(rpl_compat_init_net);
 
-void compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet)
+void rpl_compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet)
 {
 	void *ovs_net = net_generic(net, *pnet->id);
 
@@ -37,4 +38,6 @@ void compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet)
 		pnet->exit(net);
 	kfree(ovs_net);
 }
+EXPORT_SYMBOL_GPL(rpl_compat_exit_net);
+
 #endif
diff --git a/datapath/linux/compat/netdevice.c b/datapath/linux/compat/netdevice.c
index 1fb60f5..7bb8f77 100644
--- a/datapath/linux/compat/netdevice.c
+++ b/datapath/linux/compat/netdevice.c
@@ -72,6 +72,7 @@ netdev_features_t rpl_netif_skb_features(struct sk_buff *skb)
 		return harmonize_features(skb, protocol, features);
 	}
 }
+EXPORT_SYMBOL_GPL(rpl_netif_skb_features);
 #endif	/* kernel version < 2.6.38 */
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,16,0)
@@ -107,4 +108,5 @@ struct sk_buff *rpl_skb_gso_segment(struct sk_buff *skb,
 	return skb_gso;
 }
 EXPORT_SYMBOL_GPL(rpl_skb_gso_segment);
+
 #endif	/* kernel version < 3.16.0 */
diff --git a/datapath/linux/compat/reciprocal_div.c b/datapath/linux/compat/reciprocal_div.c
index 90ce7b1..818502a 100644
--- a/datapath/linux/compat/reciprocal_div.c
+++ b/datapath/linux/compat/reciprocal_div.c
@@ -1,5 +1,6 @@
 #include <linux/kernel.h>
 #include <asm/div64.h>
+#include <linux/module.h>
 #include <linux/reciprocal_div.h>
 
 /*
@@ -7,7 +8,7 @@
  * include/linux/reciprocal_div.h
  */
 
-struct reciprocal_value reciprocal_value(u32 d)
+struct reciprocal_value rpl_reciprocal_value(u32 d)
 {
 	struct reciprocal_value R;
 	u64 m;
@@ -23,3 +24,4 @@ struct reciprocal_value reciprocal_value(u32 d)
 
 	return R;
 }
+EXPORT_SYMBOL_GPL(rpl_reciprocal_value);
diff --git a/datapath/linux/compat/skbuff-openvswitch.c b/datapath/linux/compat/skbuff-openvswitch.c
index 23d8d29..3ecf1fe 100644
--- a/datapath/linux/compat/skbuff-openvswitch.c
+++ b/datapath/linux/compat/skbuff-openvswitch.c
@@ -37,7 +37,7 @@ static inline bool head_frag(const struct sk_buff *skb)
  *	into skb_zerocopy().
  */
 unsigned int
-skb_zerocopy_headlen(const struct sk_buff *from)
+rpl_skb_zerocopy_headlen(const struct sk_buff *from)
 {
 	unsigned int hlen = 0;
 
@@ -51,6 +51,7 @@ skb_zerocopy_headlen(const struct sk_buff *from)
 
 	return hlen;
 }
+EXPORT_SYMBOL_GPL(rpl_skb_zerocopy_headlen);
 
 #ifndef HAVE_SKB_ZEROCOPY
 /**
@@ -72,7 +73,7 @@ skb_zerocopy_headlen(const struct sk_buff *from)
  *	-EFAULT: skb_copy_bits() found some problem with skb geometry
  */
 int
-skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
+rpl_skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 {
 	int i, j = 0;
 	int plen = 0; /* length of skb->head fragment */
@@ -125,11 +126,12 @@ skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_skb_zerocopy);
 #endif
 #endif
 
 #ifndef HAVE_SKB_ENSURE_WRITABLE
-int skb_ensure_writable(struct sk_buff *skb, int write_len)
+int rpl_skb_ensure_writable(struct sk_buff *skb, int write_len)
 {
 	if (!pskb_may_pull(skb, write_len))
 		return -ENOMEM;
@@ -139,6 +141,7 @@ int skb_ensure_writable(struct sk_buff *skb, int write_len)
 
 	return pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
 }
+EXPORT_SYMBOL_GPL(rpl_skb_ensure_writable);
 #endif
 
 #ifndef HAVE_SKB_VLAN_POP
@@ -175,7 +178,7 @@ pull:
 	return err;
 }
 
-int skb_vlan_pop(struct sk_buff *skb)
+int rpl_skb_vlan_pop(struct sk_buff *skb)
 {
 	u16 vlan_tci;
 	__be16 vlan_proto;
@@ -207,10 +210,11 @@ int skb_vlan_pop(struct sk_buff *skb)
 	__vlan_hwaccel_put_tag(skb, vlan_proto, vlan_tci);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_skb_vlan_pop);
 #endif
 
 #ifndef HAVE_SKB_VLAN_PUSH
-int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci)
+int rpl_skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci)
 {
 	if (skb_vlan_tag_present(skb)) {
 		unsigned int offset = skb->data - skb_mac_header(skb);
@@ -235,6 +239,7 @@ int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci)
 	__vlan_hwaccel_put_tag(skb, vlan_proto, vlan_tci);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(rpl_skb_vlan_push);
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0)
@@ -260,4 +265,5 @@ int rpl_pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
 	return 0;
 }
 EXPORT_SYMBOL(rpl_pskb_expand_head);
+
 #endif
diff --git a/datapath/linux/compat/udp.c b/datapath/linux/compat/udp.c
index 834a86b..487d317 100644
--- a/datapath/linux/compat/udp.c
+++ b/datapath/linux/compat/udp.c
@@ -7,8 +7,8 @@
 /* Function to set UDP checksum for an IPv4 UDP packet. This is intended
  * for the simple case like when setting the checksum for a UDP tunnel.
  */
-void udp_set_csum(bool nocheck, struct sk_buff *skb,
-		  __be32 saddr, __be32 daddr, int len)
+void rpl_udp_set_csum(bool nocheck, struct sk_buff *skb,
+		      __be32 saddr, __be32 daddr, int len)
 {
 	struct udphdr *uh = udp_hdr(skb);
 
@@ -39,5 +39,6 @@ void udp_set_csum(bool nocheck, struct sk_buff *skb,
 		skb->ip_summed = CHECKSUM_UNNECESSARY;
 	}
 }
+EXPORT_SYMBOL_GPL(rpl_udp_set_csum);
 
 #endif /* Linux version < 3.16 */
diff --git a/datapath/linux/compat/udp_tunnel.c b/datapath/linux/compat/udp_tunnel.c
index f640113..0c7b2e6 100644
--- a/datapath/linux/compat/udp_tunnel.c
+++ b/datapath/linux/compat/udp_tunnel.c
@@ -13,8 +13,8 @@
 #include <net/udp_tunnel.h>
 #include <net/net_namespace.h>
 
-int udp_sock_create(struct net *net, struct udp_port_cfg *cfg,
-		    struct socket **sockp)
+int rpl_udp_sock_create(struct net *net, struct udp_port_cfg *cfg,
+		        struct socket **sockp)
 {
 	int err;
 	struct socket *sock = NULL;
@@ -95,10 +95,10 @@ error:
 	*sockp = NULL;
 	return err;
 }
-EXPORT_SYMBOL_GPL(udp_sock_create);
+EXPORT_SYMBOL_GPL(rpl_udp_sock_create);
 
-void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
-			   struct udp_tunnel_sock_cfg *cfg)
+void rpl_setup_udp_tunnel_sock(struct net *net, struct socket *sock,
+			       struct udp_tunnel_sock_cfg *cfg)
 {
 	struct sock *sk = sock->sk;
 
@@ -115,7 +115,7 @@ void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
 
 	udp_tunnel_encap_enable(sock);
 }
-EXPORT_SYMBOL_GPL(setup_udp_tunnel_sock);
+EXPORT_SYMBOL_GPL(rpl_setup_udp_tunnel_sock);
 
 void ovs_udp_gso(struct sk_buff *skb)
 {
@@ -142,10 +142,10 @@ void ovs_udp_csum_gso(struct sk_buff *skb)
 }
 EXPORT_SYMBOL_GPL(ovs_udp_csum_gso);
 
-int udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb,
-			__be32 src, __be32 dst, __u8 tos, __u8 ttl,
-			__be16 df, __be16 src_port, __be16 dst_port,
-			bool xnet, bool nocheck)
+int rpl_udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb,
+			    __be32 src, __be32 dst, __u8 tos, __u8 ttl,
+			    __be16 df, __be16 src_port, __be16 dst_port,
+			    bool xnet, bool nocheck)
 {
 	struct udphdr *uh;
 
@@ -162,14 +162,14 @@ int udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb,
 	return iptunnel_xmit(skb->sk, rt, skb, src, dst, IPPROTO_UDP,
 			     tos, ttl, df, xnet);
 }
-EXPORT_SYMBOL_GPL(udp_tunnel_xmit_skb);
+EXPORT_SYMBOL_GPL(rpl_udp_tunnel_xmit_skb);
 
-void udp_tunnel_sock_release(struct socket *sock)
+void rpl_udp_tunnel_sock_release(struct socket *sock)
 {
 	rcu_assign_sk_user_data(sock->sk, NULL);
 	kernel_sock_shutdown(sock, SHUT_RDWR);
 	sk_release_kernel(sock->sk);
 }
-EXPORT_SYMBOL_GPL(udp_tunnel_sock_release);
+EXPORT_SYMBOL_GPL(rpl_udp_tunnel_sock_release);
 
 #endif /* Linux version < 3.20 */
diff --git a/datapath/linux/compat/utils.c b/datapath/linux/compat/utils.c
index 9404e20..0ee6e80 100644
--- a/datapath/linux/compat/utils.c
+++ b/datapath/linux/compat/utils.c
@@ -19,9 +19,9 @@
 #include <asm/uaccess.h>
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
-void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
-			       const __be32 *from, const __be32 *to,
-			       int pseudohdr)
+void rpl_inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
+			           const __be32 *from, const __be32 *to,
+			           int pseudohdr)
 {
 	__be32 diff[] = {
 		~from[0], ~from[1], ~from[2], ~from[3],
@@ -37,10 +37,12 @@ void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,
 		*sum = ~csum_fold(csum_partial(diff, sizeof(diff),
 					csum_unfold(*sum)));
 }
+EXPORT_SYMBOL_GPL(rpl_inet_proto_csum_replace16);
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)
-bool __net_get_random_once(void *buf, int nbytes, bool *done,
+
+bool rpl___net_get_random_once(void *buf, int nbytes, bool *done,
 			   atomic_t *done_key)
 {
 	static DEFINE_SPINLOCK(lock);
@@ -60,4 +62,6 @@ bool __net_get_random_once(void *buf, int nbytes, bool *done,
 
 	return true;
 }
+EXPORT_SYMBOL_GPL(rpl___net_get_random_once);
+
 #endif
diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
index 51135fa..129f171 100644
--- a/datapath/linux/compat/vxlan.c
+++ b/datapath/linux/compat/vxlan.c
@@ -180,11 +180,11 @@ static void vxlan_build_gbp_hdr(struct vxlanhdr *vxh, u32 vxflags,
 	gbp->policy_id = htons(md->gbp & VXLAN_GBP_ID_MASK);
 }
 
-int vxlan_xmit_skb(struct vxlan_sock *vs,
-		   struct rtable *rt, struct sk_buff *skb,
-		   __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
-		   __be16 src_port, __be16 dst_port,
-		   struct vxlan_metadata *md, bool xnet, u32 vxflags)
+int rpl_vxlan_xmit_skb(struct vxlan_sock *vs,
+		       struct rtable *rt, struct sk_buff *skb,
+		       __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
+		       __be16 src_port, __be16 dst_port,
+		       struct vxlan_metadata *md, bool xnet, u32 vxflags)
 {
 	struct vxlanhdr *vxh;
 	int min_headroom;
@@ -225,7 +225,7 @@ int vxlan_xmit_skb(struct vxlan_sock *vs,
 				   ttl, df, src_port, dst_port, xnet,
 				   !udp_sum);
 }
-EXPORT_SYMBOL_GPL(vxlan_xmit_skb);
+EXPORT_SYMBOL_GPL(rpl_vxlan_xmit_skb);
 
 static void rcu_free_vs(struct rcu_head *rcu)
 {
@@ -308,20 +308,20 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
 	return vs;
 }
 
-struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port,
-				  vxlan_rcv_t *rcv, void *data,
-				  bool no_share, u32 flags)
+struct vxlan_sock *rpl_vxlan_sock_add(struct net *net, __be16 port,
+				      vxlan_rcv_t *rcv, void *data,
+				      bool no_share, u32 flags)
 {
 	return vxlan_socket_create(net, port, rcv, data, flags);
 }
-EXPORT_SYMBOL_GPL(vxlan_sock_add);
+EXPORT_SYMBOL_GPL(rpl_vxlan_sock_add);
 
-void vxlan_sock_release(struct vxlan_sock *vs)
+void rpl_vxlan_sock_release(struct vxlan_sock *vs)
 {
 	ASSERT_OVSL();
 
 	queue_work(system_wq, &vs->del_work);
 }
-EXPORT_SYMBOL_GPL(vxlan_sock_release);
+EXPORT_SYMBOL_GPL(rpl_vxlan_sock_release);
 
 #endif /* !USE_UPSTREAM_VXLAN */
-- 
1.7.9.5




More information about the dev mailing list