datapath: Make 100 percents packets sampled when sampling rate is 1.
[cascardo/ovs.git] / datapath / vport-internal_dev.c
index 040b371..f38f9be 100644 (file)
@@ -38,6 +38,8 @@ struct internal_dev {
        struct vport *vport;
 };
 
+static struct vport_ops ovs_internal_vport_ops;
+
 static struct internal_dev *internal_dev_priv(struct net_device *netdev)
 {
        return netdev_priv(netdev);
@@ -285,7 +287,7 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb)
        return len;
 }
 
-const struct vport_ops ovs_internal_vport_ops = {
+static struct vport_ops ovs_internal_vport_ops = {
        .type           = OVS_VPORT_TYPE_INTERNAL,
        .create         = internal_dev_create,
        .destroy        = internal_dev_destroy,
@@ -308,10 +310,21 @@ struct vport *ovs_internal_dev_get_vport(struct net_device *netdev)
 
 int ovs_internal_dev_rtnl_link_register(void)
 {
-       return rtnl_link_register(&internal_dev_link_ops);
+       int err;
+
+       err = rtnl_link_register(&internal_dev_link_ops);
+       if (err < 0)
+               return err;
+
+       err = ovs_vport_ops_register(&ovs_internal_vport_ops);
+       if (err < 0)
+               rtnl_link_unregister(&internal_dev_link_ops);
+
+       return err;
 }
 
 void ovs_internal_dev_rtnl_link_unregister(void)
 {
+       ovs_vport_ops_unregister(&ovs_internal_vport_ops);
        rtnl_link_unregister(&internal_dev_link_ops);
 }