compat: Explicitly include net/ip.h in net/udp.h.
[cascardo/ovs.git] / datapath / vport-geneve.c
index 624a6a0..4ab224d 100644 (file)
@@ -27,6 +27,8 @@
 #include "datapath.h"
 #include "vport.h"
 
+static struct vport_ops ovs_geneve_vport_ops;
+
 /**
  * struct geneve_port - Keeps track of open UDP ports
  * @gs: The socket created for this port number.
@@ -44,11 +46,6 @@ static inline struct geneve_port *geneve_vport(const struct vport *vport)
        return vport_priv(vport);
 }
 
-static inline struct genevehdr *geneve_hdr(const struct sk_buff *skb)
-{
-       return (struct genevehdr *)(udp_hdr(skb) + 1);
-}
-
 /* Convert 64 bit tunnel ID to 24 bit VNI. */
 static void tunnel_id_to_vni(__be64 tun_id, __u8 *vni)
 {
@@ -248,7 +245,7 @@ static int geneve_get_egress_tun_info(struct vport *vport, struct sk_buff *skb,
                                          IPPROTO_UDP, skb->mark, sport, dport);
 }
 
-const struct vport_ops ovs_geneve_vport_ops = {
+static struct vport_ops ovs_geneve_vport_ops = {
        .type                   = OVS_VPORT_TYPE_GENEVE,
        .create                 = geneve_tnl_create,
        .destroy                = geneve_tnl_destroy,
@@ -256,4 +253,22 @@ const struct vport_ops ovs_geneve_vport_ops = {
        .get_options            = geneve_get_options,
        .send                   = geneve_tnl_send,
        .get_egress_tun_info    = geneve_get_egress_tun_info,
+       .owner                  = THIS_MODULE,
 };
+
+static int __init ovs_geneve_tnl_init(void)
+{
+       return ovs_vport_ops_register(&ovs_geneve_vport_ops);
+}
+
+static void __exit ovs_geneve_tnl_exit(void)
+{
+       ovs_vport_ops_unregister(&ovs_geneve_vport_ops);
+}
+
+module_init(ovs_geneve_tnl_init);
+module_exit(ovs_geneve_tnl_exit);
+
+MODULE_DESCRIPTION("OVS: Geneve swiching port");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("vport-type-5");