[ovs-dev] [PATCH 10/14] datapath: Constify ops structures.
Jesse Gross
jesse at nicira.com
Thu Dec 2 20:36:59 UTC 2010
vport_ops, tunnel_ops, and ethtool_ops should not change at runtime.
Therefore, mark them as const to keep them out of the hotpath and to
prevent them from getting trampled.
Signed-off-by: Jesse Gross <jesse at nicira.com>
---
datapath/vport-capwap.c | 4 ++--
datapath/vport-gre.c | 6 +++---
datapath/vport-internal_dev.c | 4 ++--
datapath/vport-netdev.c | 2 +-
datapath/vport-patch.c | 2 +-
datapath/vport.c | 4 ++--
datapath/vport.h | 10 +++++-----
7 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/datapath/vport-capwap.c b/datapath/vport-capwap.c
index bf1465f..f732657 100644
--- a/datapath/vport-capwap.c
+++ b/datapath/vport-capwap.c
@@ -212,7 +212,7 @@ out:
return 0;
}
-struct tnl_ops capwap_tnl_ops = {
+const struct tnl_ops capwap_tnl_ops = {
.tunnel_type = TNL_T_PROTO_CAPWAP,
.ipproto = IPPROTO_UDP,
.hdr_len = capwap_hdr_len,
@@ -644,7 +644,7 @@ static void capwap_frag_expire(unsigned long ifq)
inet_frag_put(&fq->ifq, &frag_state);
}
-struct vport_ops capwap_vport_ops = {
+const struct vport_ops capwap_vport_ops = {
.type = "capwap",
.flags = VPORT_F_GEN_STATS,
.init = capwap_init,
diff --git a/datapath/vport-gre.c b/datapath/vport-gre.c
index be8fb53..fcf1ede 100644
--- a/datapath/vport-gre.c
+++ b/datapath/vport-gre.c
@@ -332,7 +332,7 @@ error:
return 0;
}
-struct tnl_ops gre_tnl_ops = {
+const struct tnl_ops gre_tnl_ops = {
.tunnel_type = TNL_T_PROTO_GRE,
.ipproto = IPPROTO_GRE,
.hdr_len = gre_hdr_len,
@@ -345,7 +345,7 @@ static struct vport *gre_create(const char *name, const void __user *config)
return tnl_create(name, config, &gre_vport_ops, &gre_tnl_ops);
}
-static struct net_protocol gre_protocol_handlers = {
+static const struct net_protocol gre_protocol_handlers = {
.handler = gre_rcv,
.err_handler = gre_err,
};
@@ -366,7 +366,7 @@ static void gre_exit(void)
inet_del_protocol(&gre_protocol_handlers, IPPROTO_GRE);
}
-struct vport_ops gre_vport_ops = {
+const struct vport_ops gre_vport_ops = {
.type = "gre",
.flags = VPORT_F_GEN_STATS | VPORT_F_TUN_ID,
.init = gre_init,
diff --git a/datapath/vport-internal_dev.c b/datapath/vport-internal_dev.c
index 6d610fd..ec0052c 100644
--- a/datapath/vport-internal_dev.c
+++ b/datapath/vport-internal_dev.c
@@ -108,7 +108,7 @@ static void internal_dev_getinfo(struct net_device *netdev,
sprintf(info->bus_info, "%d.%d", dp_port->dp->dp_idx, dp_port->port_no);
}
-static struct ethtool_ops internal_dev_ethtool_ops = {
+static const struct ethtool_ops internal_dev_ethtool_ops = {
.get_drvinfo = internal_dev_getinfo,
.get_link = ethtool_op_get_link,
.get_sg = ethtool_op_get_sg,
@@ -278,7 +278,7 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb)
return len;
}
-struct vport_ops internal_vport_ops = {
+const struct vport_ops internal_vport_ops = {
.type = "internal",
.flags = VPORT_F_REQUIRED | VPORT_F_GEN_STATS | VPORT_F_FLOW,
.create = internal_dev_create,
diff --git a/datapath/vport-netdev.c b/datapath/vport-netdev.c
index c643696..11421bf 100644
--- a/datapath/vport-netdev.c
+++ b/datapath/vport-netdev.c
@@ -299,7 +299,7 @@ struct vport *netdev_get_vport(struct net_device *dev)
#endif
}
-struct vport_ops netdev_vport_ops = {
+const struct vport_ops netdev_vport_ops = {
.type = "netdev",
.flags = (VPORT_F_REQUIRED |
(USE_VPORT_STATS ? VPORT_F_GEN_STATS : 0)),
diff --git a/datapath/vport-patch.c b/datapath/vport-patch.c
index 62fd71f..81fa61b 100644
--- a/datapath/vport-patch.c
+++ b/datapath/vport-patch.c
@@ -265,7 +265,7 @@ static int patch_send(struct vport *vport, struct sk_buff *skb)
return skb_len;
}
-struct vport_ops patch_vport_ops = {
+const struct vport_ops patch_vport_ops = {
.type = "patch",
.flags = VPORT_F_GEN_STATS,
.init = patch_init,
diff --git a/datapath/vport.c b/datapath/vport.c
index c68e181..fdbf522 100644
--- a/datapath/vport.c
+++ b/datapath/vport.c
@@ -25,7 +25,7 @@
/* List of statically compiled vport implementations. Don't forget to also
* add yours to the list at the bottom of vport.h. */
-static struct vport_ops *base_vport_ops_list[] = {
+static const struct vport_ops *base_vport_ops_list[] = {
&netdev_vport_ops,
&internal_vport_ops,
&patch_vport_ops,
@@ -113,7 +113,7 @@ int vport_init(void)
}
for (i = 0; i < ARRAY_SIZE(base_vport_ops_list); i++) {
- struct vport_ops *new_ops = base_vport_ops_list[i];
+ const struct vport_ops *new_ops = base_vport_ops_list[i];
if (new_ops->init)
err = new_ops->init();
diff --git a/datapath/vport.h b/datapath/vport.h
index 641353c..bacefa8 100644
--- a/datapath/vport.h
+++ b/datapath/vport.h
@@ -239,10 +239,10 @@ void vport_record_error(struct vport *, enum vport_err_type err_type);
/* List of statically compiled vport implementations. Don't forget to also
* add yours to the list at the top of vport.c. */
-extern struct vport_ops netdev_vport_ops;
-extern struct vport_ops internal_vport_ops;
-extern struct vport_ops patch_vport_ops;
-extern struct vport_ops gre_vport_ops;
-extern struct vport_ops capwap_vport_ops;
+extern const struct vport_ops netdev_vport_ops;
+extern const struct vport_ops internal_vport_ops;
+extern const struct vport_ops patch_vport_ops;
+extern const struct vport_ops gre_vport_ops;
+extern const struct vport_ops capwap_vport_ops;
#endif /* vport.h */
--
1.7.1
More information about the dev
mailing list